{ "version": 3, "sources": ["../../../_sentry-release-injection-stub", "../../../node_modules/object-assign/index.js", "../../../node_modules/react/cjs/react.development.js", "../../../node_modules/react/index.js", "../../../node_modules/scheduler/cjs/scheduler.development.js", "../../../node_modules/scheduler/index.js", "../../../node_modules/scheduler/cjs/scheduler-tracing.development.js", "../../../node_modules/scheduler/tracing.js", "../../../node_modules/react-dom/cjs/react-dom.development.js", "../../../node_modules/react-dom/index.js", "../../../node_modules/react-is/cjs/react-is.development.js", "../../../node_modules/react-is/index.js", "../../../node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/prop-types/checkPropTypes.js", "../../../node_modules/prop-types/factoryWithTypeCheckers.js", "../../../node_modules/prop-types/index.js", "../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js", "../../../node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js", "../../../node_modules/react-redux/node_modules/react-is/index.js", "../../../node_modules/reselect/lib/defaultMemoize.js", "../../../node_modules/reselect/lib/index.js", "../../../node_modules/lodash/lodash.js", "../../../node_modules/re-reselect/src/cache/util/isStringOrNumber.js", "../../../node_modules/re-reselect/src/cache/FlatObjectCache.js", "../../../node_modules/re-reselect/src/createCachedSelector.js", "../../../node_modules/re-reselect/src/createStructuredCachedSelector.js", "../../../node_modules/re-reselect/src/cache/util/validateCacheSize.js", "../../../node_modules/re-reselect/src/cache/FifoObjectCache.js", "../../../node_modules/re-reselect/src/cache/LruObjectCache.js", "../../../node_modules/re-reselect/src/cache/FlatMapCache.js", "../../../node_modules/re-reselect/src/cache/FifoMapCache.js", "../../../node_modules/re-reselect/src/cache/LruMapCache.js", "../../../node_modules/accounting/accounting.js", "../../../node_modules/braintree-web/dist/browser/data-collector.js", "../../../node_modules/braintree-web/dist/browser/client.js", "../../../node_modules/braintree-web/dist/browser/hosted-fields.js", "../../../node_modules/braintree-web/dist/browser/index.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/lib/has.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/checkPropTypes.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/factoryWithTypeCheckers.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/index.js", "../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js", "../../../node_modules/@babel/runtime/helpers/extends.js", "../../../node_modules/@babel/runtime/helpers/defineProperty.js", "../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js", "../../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../../../node_modules/@babel/runtime/helpers/iterableToArray.js", "../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js", "../../../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../../../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../../../node_modules/@babel/runtime/helpers/classCallCheck.js", "../../../node_modules/@babel/runtime/helpers/typeof.js", "../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js", "../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js", "../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js", "../../../node_modules/@babel/runtime/helpers/createClass.js", "../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js", "../../../node_modules/@babel/runtime/helpers/inherits.js", "../../../node_modules/classnames/index.js", "../../../node_modules/react-scrollspy/lib/throttle.js", "../../../node_modules/react-scrollspy/lib/scrollspy.js", "../../../node_modules/tinycolor2/tinycolor.js", "../../../node_modules/fbemitter/lib/EventSubscription.js", "../../../node_modules/fbemitter/lib/EmitterSubscription.js", "../../../node_modules/fbjs/lib/invariant.js", "../../../node_modules/fbemitter/lib/EventSubscriptionVendor.js", "../../../node_modules/fbjs/lib/emptyFunction.js", "../../../node_modules/fbemitter/lib/BaseEventEmitter.js", "../../../node_modules/fbemitter/index.js", "../../../node_modules/fbjs/lib/crc32.js", "../../../node_modules/@marvelapp/react-ab-test/lib/store.js", "../../../node_modules/@marvelapp/react-ab-test/lib/calculateActiveVariant.js", "../../../node_modules/@marvelapp/react-ab-test/lib/emitter.js", "../../../node_modules/@marvelapp/react-ab-test/lib/hook.js", "../../../node_modules/@marvelapp/react-ab-test/lib/CoreExperiment.js", "../../../node_modules/@marvelapp/react-ab-test/lib/Experiment.js", "../../../node_modules/@marvelapp/react-ab-test/lib/Variant.js", "../../../node_modules/fbjs/lib/ExecutionEnvironment.js", "../../../node_modules/@marvelapp/react-ab-test/lib/debugger.js", "../../../node_modules/@marvelapp/react-ab-test/lib/helpers/mixpanel.js", "../../../node_modules/@marvelapp/react-ab-test/lib/helpers/segment.js", "../../../node_modules/@marvelapp/react-ab-test/index.js", "../../javascript/application.tsx", "../../javascript/controllers/wos.js", "../../javascript/controllers/application.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/cart_renderer_controller.tsx", "../../../node_modules/react-redux/es/index.js", "../../../node_modules/react-redux/es/exports.js", "../../../node_modules/react-redux/es/components/Provider.js", "../../../node_modules/react-redux/es/components/Context.js", "../../../node_modules/react-redux/es/utils/Subscription.js", "../../../node_modules/react-redux/es/utils/batch.js", "../../../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js", "../../../node_modules/react-redux/es/components/connectAdvanced.js", "../../../node_modules/react-redux/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/react-redux/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/react-redux/es/connect/connect.js", "../../../node_modules/react-redux/es/utils/shallowEqual.js", "../../../node_modules/react-redux/es/connect/mapDispatchToProps.js", "../../../node_modules/react-redux/es/utils/bindActionCreators.js", "../../../node_modules/react-redux/es/connect/wrapMapToProps.js", "../../../node_modules/react-redux/es/utils/verifyPlainObject.js", "../../../node_modules/react-redux/es/utils/isPlainObject.js", "../../../node_modules/react-redux/es/utils/warning.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/verifySubselectors.js", "../../../node_modules/react-redux/es/hooks/useDispatch.js", "../../../node_modules/react-redux/es/hooks/useStore.js", "../../../node_modules/react-redux/es/hooks/useReduxContext.js", "../../../node_modules/react-redux/es/hooks/useSelector.js", "../../../node_modules/react-redux/es/utils/reactBatchedUpdates.js", "../../javascript/domains/application/index.ts", "../../javascript/domains/application/application.actions.ts", "../../../node_modules/immer/src/utils/errors.ts", "../../../node_modules/immer/src/utils/common.ts", "../../../node_modules/immer/src/utils/plugins.ts", "../../../node_modules/immer/src/core/scope.ts", "../../../node_modules/immer/src/core/finalize.ts", "../../../node_modules/immer/src/core/proxy.ts", "../../../node_modules/immer/src/core/immerClass.ts", "../../../node_modules/immer/src/core/current.ts", "../../../node_modules/immer/src/plugins/es5.ts", "../../../node_modules/immer/src/plugins/patches.ts", "../../../node_modules/immer/src/plugins/mapset.ts", "../../../node_modules/immer/src/plugins/all.ts", "../../../node_modules/immer/src/immer.ts", "../../../node_modules/immer/src/utils/env.ts", "../../../node_modules/redux/es/redux.js", "../../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js", "../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/redux-thunk/es/index.js", "../../javascript/domains/canvases/index.ts", "../../javascript/domains/canvases/canvases.actions.ts", "../../javascript/domains/canvases/canvases.selectors.ts", "../../javascript/domains/canvases/canvases.slice.ts", "../../javascript/domains/canvases/canvases.adapter.ts", "../../javascript/domains/cart_product_editor/index.ts", "../../javascript/domains/cart_product_editor/cart_product_editor.actions.ts", "../../javascript/domains/cart_product_editor/cart_product_editor.slice.ts", "../../javascript/domains/cart_product_editor/cart_product_editor.selectors.ts", "../../javascript/domains/option_groups/index.ts", "../../javascript/domains/option_groups/option_groups.slice.ts", "../../javascript/domains/option_groups/option_groups.actions.ts", "../../javascript/domains/option_groups/option_groups.adapter.ts", "../../javascript/domains/option_groups/option_groups.utils.ts", "../../javascript/utils/type_guards.ts", "../../javascript/utils/common.ts", "../../../node_modules/axios/index.js", "../../../node_modules/axios/lib/axios.js", "../../../node_modules/axios/lib/utils.js", "../../../node_modules/axios/lib/helpers/bind.js", "../../../node_modules/axios/lib/core/Axios.js", "../../../node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "../../../node_modules/axios/lib/helpers/toFormData.js", "../../../node_modules/axios/lib/core/AxiosError.js", "../../../node_modules/axios/lib/helpers/null.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/defaults/index.js", "../../../node_modules/axios/lib/defaults/transitional.js", "../../../node_modules/axios/lib/helpers/toURLEncodedForm.js", "../../../node_modules/axios/lib/platform/index.js", "../../../node_modules/axios/lib/platform/browser/index.js", "../../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js", "../../../node_modules/axios/lib/platform/browser/classes/FormData.js", "../../../node_modules/axios/lib/platform/browser/classes/Blob.js", "../../../node_modules/axios/lib/helpers/formDataToJSON.js", "../../../node_modules/axios/lib/core/AxiosHeaders.js", "../../../node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/axios/lib/cancel/CanceledError.js", "../../../node_modules/axios/lib/adapters/adapters.js", "../../../node_modules/axios/lib/adapters/xhr.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/isURLSameOrigin.js", "../../../node_modules/axios/lib/helpers/parseProtocol.js", "../../../node_modules/axios/lib/helpers/speedometer.js", "../../../node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/axios/lib/helpers/validator.js", "../../../node_modules/axios/lib/env/data.js", "../../../node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/axios/lib/helpers/spread.js", "../../../node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/axios/lib/helpers/HttpStatusCode.js", "../../../node_modules/rxjs/src/index.ts", "../../../node_modules/rxjs/src/internal/Observable.ts", "../../../node_modules/rxjs/node_modules/tslib/tslib.es6.js", "../../../node_modules/rxjs/src/internal/util/isFunction.ts", "../../../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "../../../node_modules/rxjs/src/internal/util/createErrorClass.ts", "../../../node_modules/rxjs/src/internal/util/arrRemove.ts", "../../../node_modules/rxjs/src/internal/config.ts", "../../../node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "../../../node_modules/rxjs/src/internal/util/noop.ts", "../../../node_modules/rxjs/src/internal/NotificationFactories.ts", "../../../node_modules/rxjs/src/internal/util/errorContext.ts", "../../../node_modules/rxjs/src/internal/symbol/observable.ts", "../../../node_modules/rxjs/src/internal/util/pipe.ts", "../../../node_modules/rxjs/src/internal/util/identity.ts", "../../../node_modules/rxjs/src/internal/util/lift.ts", "../../../node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "../../../node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "../../../node_modules/rxjs/src/internal/scheduler/Action.ts", "../../../node_modules/rxjs/src/internal/Scheduler.ts", "../../../node_modules/rxjs/src/internal/scheduler/async.ts", "../../../node_modules/rxjs/src/internal/scheduler/queue.ts", "../../../node_modules/rxjs/src/internal/observable/empty.ts", "../../../node_modules/rxjs/src/internal/observable/of.ts", "../../../node_modules/rxjs/src/internal/util/args.ts", "../../../node_modules/rxjs/src/internal/util/isScheduler.ts", "../../../node_modules/rxjs/src/internal/observable/from.ts", "../../../node_modules/rxjs/src/internal/scheduled/scheduled.ts", "../../../node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "../../../node_modules/rxjs/src/internal/util/isArrayLike.ts", "../../../node_modules/rxjs/src/internal/util/isPromise.ts", "../../../node_modules/rxjs/src/internal/util/isInteropObservable.ts", "../../../node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "../../../node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "../../../node_modules/rxjs/src/internal/util/isIterable.ts", "../../../node_modules/rxjs/src/internal/symbol/iterator.ts", "../../../node_modules/rxjs/src/internal/operators/observeOn.ts", "../../../node_modules/rxjs/src/internal/util/executeSchedule.ts", "../../../node_modules/rxjs/src/internal/operators/subscribeOn.ts", "../../../node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "../../../node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "../../../node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "../../../node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "../../../node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "../../../node_modules/rxjs/src/internal/util/isDate.ts", "../../../node_modules/rxjs/src/internal/operators/map.ts", "../../../node_modules/rxjs/src/internal/observable/combineLatest.ts", "../../../node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "../../../node_modules/rxjs/src/internal/util/createObject.ts", "../../../node_modules/rxjs/src/internal/observable/concat.ts", "../../../node_modules/rxjs/src/internal/operators/concatAll.ts", "../../../node_modules/rxjs/src/internal/operators/mergeAll.ts", "../../../node_modules/rxjs/src/internal/operators/mergeMap.ts", "../../../node_modules/rxjs/src/internal/operators/mergeInternals.ts", "../../../node_modules/rxjs/src/internal/observable/defer.ts", "../../../node_modules/rxjs/src/internal/observable/forkJoin.ts", "../../../node_modules/rxjs/src/internal/observable/timer.ts", "../../../node_modules/rxjs/src/internal/observable/merge.ts", "../../../node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "../../../node_modules/rxjs/src/internal/operators/filter.ts", "../../../node_modules/rxjs/src/internal/operators/catchError.ts", "../../../node_modules/rxjs/src/internal/operators/concatMap.ts", "../../../node_modules/rxjs/src/internal/operators/debounceTime.ts", "../../../node_modules/rxjs/src/internal/operators/delay.ts", "../../../node_modules/rxjs/src/internal/operators/delayWhen.ts", "../../../node_modules/rxjs/src/internal/operators/take.ts", "../../../node_modules/rxjs/src/internal/operators/ignoreElements.ts", "../../../node_modules/rxjs/src/internal/operators/mapTo.ts", "../../../node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "../../../node_modules/rxjs/src/internal/operators/retry.ts", "../../../node_modules/rxjs/src/internal/operators/switchMap.ts", "../../../node_modules/rxjs/src/internal/operators/takeUntil.ts", "../../../node_modules/rxjs/src/internal/operators/tap.ts", "../../javascript/utils/globals.ts", "../../javascript/utils/reporter.ts", "../../../node_modules/@sentry/react/esm/index.js", "../../../node_modules/@sentry/utils/esm/index.js", "../../../node_modules/@sentry/src/is.ts", "../../../node_modules/@sentry/src/worldwide.ts", "../../../node_modules/@sentry/src/debug-build.ts", "../../../node_modules/@sentry/src/error.ts", "../../../node_modules/@sentry/src/object.ts", "../../../node_modules/@sentry/src/stacktrace.ts", "../../../node_modules/@sentry/src/misc.ts", "../../../node_modules/@sentry/src/supports.ts", "../../../node_modules/@sentry/src/vendor/supportsHistory.ts", "../../../node_modules/@sentry/src/env.ts", "../../../node_modules/@sentry/src/memo.ts", "../../../node_modules/@sentry/src/syncpromise.ts", "../../../node_modules/@sentry/src/url.ts", "../../../node_modules/@sentry/src/severity.ts", "../../../node_modules/@sentry/src/ratelimit.ts", "../../../node_modules/@sentry/src/debug-build.ts", "../../../node_modules/@sentry/src/constants.ts", "../../../node_modules/@sentry/src/eventProcessors.ts", "../../../node_modules/@sentry/src/utils/spanUtils.ts", "../../../node_modules/@sentry/src/utils/prepareEvent.ts", "../../../node_modules/@sentry/src/exports.ts", "../../../node_modules/@sentry/src/utils/getRootSpan.ts", "../../../node_modules/@sentry/src/tracing/dynamicSamplingContext.ts", "../../../node_modules/@sentry/src/version.ts", "../../../node_modules/@sentry/src/integration.ts", "../../../node_modules/@sentry/src/metrics/utils.ts", "../../../node_modules/@sentry/src/index.ts", "../../../node_modules/src/debug-build.ts", "../../../node_modules/src/transports/utils.ts", "../../../node_modules/src/integrations/breadcrumbs.ts", "../../../node_modules/@sentry/integrations/esm/index.js", "../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/index.js", "../../../node_modules/@sentry/integrations/node_modules/@sentry/src/path.ts", "../../javascript/domains/option_groups/option_groups.selectors.ts", "../../javascript/domains/option_groups/option_groups.types.ts", "../../javascript/domains/svgs/index.ts", "../../javascript/domains/svgs/svgs.actions.ts", "../../javascript/domains/svgs/svgs.selectors.ts", "../../javascript/domains/svgs/svgs.slice.ts", "../../javascript/domains/svgs/svgs.adapter.ts", "../../javascript/domains/svgs/svgs.utils.ts", "../../javascript/domains/svgs/svgs.types.ts", "../../javascript/utils/arrangement_util.ts", "../../javascript/domains/products/index.ts", "../../javascript/domains/products/products.slice.ts", "../../javascript/domains/catalogs/index.ts", "../../javascript/domains/catalogs/catalogs.actions.ts", "../../javascript/domains/catalogs/catalogs.slice.ts", "../../javascript/domains/catalogs/catalogs.adapter.ts", "../../javascript/domains/catalogs/catalogs.utils.ts", "../../javascript/domains/catalogs/catalogs.selectors.ts", "../../javascript/domains/subcatalogs/index.ts", "../../javascript/domains/subcatalogs/subcatalogs.slice.ts", "../../javascript/domains/subcatalogs/subcatalogs.actions.ts", "../../javascript/domains/subcatalogs/subcatalogs.adapter.ts", "../../javascript/domains/subcatalogs/subcatalogs.utils.ts", "../../javascript/domains/subcatalogs/subcatalogs.selectors.ts", "../../javascript/domains/products/products.adapter.ts", "../../javascript/domains/products/products.utils.ts", "../../javascript/utils/math_util.ts", "../../javascript/domains/products/products.selectors.ts", "../../javascript/domains/canvases/canvases.utils.ts", "../../javascript/utils/bounds_util.ts", "../../javascript/domains/canvases/canvases.types.ts", "../../javascript/domains/navigation/index.ts", "../../javascript/domains/navigation/navigation.selectors.ts", "../../javascript/domains/navigation/navigation.slice.ts", "../../javascript/domains/active_editor/index.ts", "../../javascript/domains/active_editor/active_editor.selectors.ts", "../../javascript/components/features/Shuffler/data/filters.ts", "../../javascript/components/features/Shuffler/data/filters_cards.ts", "../../javascript/utils/option_util.ts", "../../javascript/domains/navigation/navigation.services.ts", "../../javascript/utils/routing.ts", "../../javascript/domains/navigation/navigation.types.ts", "../../javascript/components/apps/Wos/index.ts", "../../javascript/components/apps/Wos/Wos.tsx", "../../javascript/utils/hooks.ts", "../../javascript/utils/observer_util.ts", "../../javascript/domains/crops/index.ts", "../../javascript/domains/crops/crops.actions.ts", "../../javascript/domains/crops/crops.selectors.ts", "../../javascript/domains/photos/index.ts", "../../javascript/domains/photos/photos.slice.ts", "../../javascript/domains/photos/photos.actions.ts", "../../javascript/domains/photos/photos.adapter.ts", "../../javascript/domains/photos/photos.selectors.ts", "../../javascript/domains/photos/photos.types.ts", "../../javascript/domains/crops/crops.slice.ts", "../../javascript/utils/crop_data.ts", "../../javascript/utils/pan_util.ts", "../../javascript/domains/crops/crops.adapter.ts", "../../javascript/domains/crops/crops.utils.ts", "../../javascript/domains/crops/crops.thunks.ts", "../../javascript/utils/image_util.ts", "../../javascript/utils/image_load.ts", "../../javascript/domains/crops/crops.types.ts", "../../javascript/domains/ui/index.ts", "../../javascript/domains/ui/ui.slice.ts", "../../javascript/domains/checkout/index.ts", "../../javascript/domains/checkout/checkout.actions.ts", "../../javascript/domains/checkout/checkout.slice.ts", "../../javascript/domains/cart_payment_method/index.ts", "../../javascript/domains/cart_payment_method/cart_payment_method.actions.ts", "../../javascript/domains/cart_payment_method/cart_payment_method.selectors.ts", "../../javascript/domains/cart_payment_method/cart_payment_method.slice.ts", "../../javascript/domains/gift_cert/index.ts", "../../javascript/domains/gift_cert/gift_cert.actions.ts", "../../javascript/domains/gift_cert/gift_cert.slice.ts", "../../javascript/domains/gift_cert/gift_cert.selectors.ts", "../../javascript/domains/gift_cert/gift_cert.types.ts", "../../javascript/domains/cart_billing/index.ts", "../../javascript/domains/cart_billing/cart_billing.actions.ts", "../../javascript/domains/cart_billing/cart_billing.selectors.ts", "../../javascript/domains/cart_billing/cart_billing.slice.ts", "../../javascript/domains/cart_billing/cart_billing.types.ts", "../../javascript/domains/cart_payment_method/cart_payment_method.utils.ts", "../../javascript/domains/cart_payment_method/cart_payment_method.api.ts", "../../javascript/apis/cart.ts", "../../javascript/domains/cart_payment_method/cart_payment_method.types.ts", "../../javascript/domains/checkout/checkout.selectors.ts", "../../javascript/domains/braintree_client/index.ts", "../../javascript/domains/braintree_client/braintree_client.ts", "../../javascript/domains/cart/index.ts", "../../javascript/domains/cart/cart.actions.ts", "../../javascript/domains/cart/cart.selectors.ts", "../../javascript/domains/cart/cart.slice.ts", "../../javascript/domains/cart_products/index.ts", "../../javascript/domains/cart_products/cart_products.actions.ts", "../../javascript/domains/cart_products/cart_products.selectors.ts", "../../javascript/domains/cart_products/cart_products.slice.ts", "../../javascript/domains/cart_products/cart_products.adapter.ts", "../../javascript/domains/cart_products/cart_products.utils.ts", "../../javascript/domains/cart_products/cart_products.types.ts", "../../javascript/domains/cart_product_creator/index.ts", "../../javascript/domains/cart_product_creator/cart_product_creator.actions.ts", "../../javascript/domains/cart_product_creator/cart_product_creator.selectors.ts", "../../javascript/domains/cart_product_creator/cart_product_creator.slice.ts", "../../javascript/domains/cart_order_options/index.ts", "../../javascript/domains/cart_order_options/cart_order_options.model.ts", "../../javascript/domains/cart_order_options/cart_order_options.actions.ts", "../../javascript/domains/cart_order_options/cart_order_options.selectors.ts", "../../javascript/domains/cart_order_options/cart_order_options.types.ts", "../../javascript/domains/cart/cart.model.ts", "../../javascript/apis/wos.ts", "../../javascript/domains/cart/cart.types.ts", "../../javascript/domains/cart_shipping/index.ts", "../../javascript/domains/cart_shipping/cart_shipping.actions.ts", "../../javascript/domains/cart_shipping/cart_shipping.selectors.ts", "../../javascript/domains/cart_shipping/cart_shipping.slice.ts", "../../javascript/domains/addresses/index.ts", "../../javascript/domains/addresses/addresses.actions.ts", "../../javascript/domains/addresses/addresses.slice.ts", "../../javascript/domains/addresses/addresses.adapter.ts", "../../javascript/domains/addresses/addresses.selectors.ts", "../../javascript/domains/addresses/addresses.utils.ts", "../../javascript/domains/addresses/addresses.api.ts", "../../javascript/domains/addresses/addresses.types.ts", "../../javascript/domains/shipping_methods/index.ts", "../../javascript/domains/shipping_methods/shipping_methods.actions.ts", "../../javascript/domains/shipping_methods/shipping_methods.selectors.ts", "../../javascript/domains/shipping_methods/shipping_methods.slice.ts", "../../javascript/domains/shipping_methods/shipping_methods.adapter.ts", "../../javascript/domains/shipping_methods/shipping_methods.utils.ts", "../../javascript/utils/regexes.ts", "../../javascript/domains/shipping_methods/shipping_methods.types.ts", "../../javascript/domains/cart_shipping/cart_shipping.utils.ts", "../../javascript/domains/cart_shipping/cart_shipping.types.ts", "../../javascript/domains/checkout/checkout.types.ts", "../../javascript/domains/promo_code/index.ts", "../../javascript/domains/promo_code/promo_code.actions.ts", "../../javascript/domains/promo_code/promo_code.slice.ts", "../../javascript/domains/promo_code/promo_code.selectors.ts", "../../javascript/domains/promo_code/promo_code.types.ts", "../../javascript/domains/ui/ui.selectors.ts", "../../javascript/components/pages/CatalogSelector/index.ts", "../../javascript/components/pages/CatalogSelector/CatalogSelector.tsx", "../../../node_modules/@fortawesome/react-fontawesome/index.es.js", "../../../node_modules/@fortawesome/fontawesome-svg-core/index.mjs", "../../javascript/components/shared/Link/index.ts", "../../javascript/components/shared/Link/Link.tsx", "../../javascript/components/features/WOSSiteHeader/index.ts", "../../javascript/components/features/WOSSiteHeader/WOSSiteHeader.tsx", "../../javascript/components/shared/SiteHeader/index.ts", "../../javascript/components/shared/SiteHeader/SiteHeader.tsx", "../../javascript/components/shared/Button/index.ts", "../../javascript/components/shared/Button/Button.tsx", "../../../node_modules/@popperjs/core/lib/index.js", "../../../node_modules/@popperjs/core/lib/enums.js", "../../../node_modules/@popperjs/core/lib/modifiers/index.js", "../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../node_modules/@popperjs/core/lib/utils/within.js", "../../../node_modules/@popperjs/core/lib/utils/math.js", "../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../node_modules/@popperjs/core/lib/createPopper.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/debounce.js", "../../../node_modules/@popperjs/core/lib/utils/validateModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/format.js", "../../../node_modules/@popperjs/core/lib/utils/uniqueBy.js", "../../../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../node_modules/@popperjs/core/lib/popper.js", "../../../node_modules/tippy.js/src/constants.ts", "../../../node_modules/tippy.js/src/utils.ts", "../../../node_modules/tippy.js/src/dom-utils.ts", "../../../node_modules/tippy.js/src/bindGlobalEventListeners.ts", "../../../node_modules/tippy.js/src/browser.ts", "../../../node_modules/tippy.js/src/validation.ts", "../../../node_modules/tippy.js/src/props.ts", "../../../node_modules/tippy.js/src/template.ts", "../../../node_modules/tippy.js/src/createTippy.ts", "../../../node_modules/tippy.js/src/index.ts", "../../../node_modules/tippy.js/src/addons/createSingleton.ts", "../../../node_modules/tippy.js/src/addons/delegate.ts", "../../../node_modules/tippy.js/src/plugins/animateFill.ts", "../../../node_modules/tippy.js/src/plugins/followCursor.ts", "../../../node_modules/tippy.js/src/plugins/inlinePositioning.ts", "../../../node_modules/tippy.js/src/plugins/sticky.ts", "../../../node_modules/tippy.js/build/base.js", "../../javascript/components/shared/Icon/index.ts", "../../javascript/components/shared/Icon/Icon.tsx", "../../javascript/components/shared/Icon/icons/index.ts", "../../javascript/components/shared/Icon/icons/close.tsx", "../../javascript/components/shared/Icon/icons/questionCircle.tsx", "../../javascript/components/shared/Icon/icons/acrylicPrints.tsx", "../../javascript/components/shared/Icon/icons/canvas.tsx", "../../javascript/components/shared/Icon/icons/cards.tsx", "../../javascript/components/shared/Icon/icons/clusters.tsx", "../../javascript/components/shared/Icon/icons/collagewall.tsx", "../../javascript/components/shared/Icon/icons/custom.tsx", "../../javascript/components/shared/Icon/icons/dreamPrints.tsx", "../../javascript/components/shared/Icon/icons/fineArt.tsx", "../../javascript/components/shared/Icon/icons/framedPrints.tsx", "../../javascript/components/shared/Icon/icons/metalPrints.tsx", "../../javascript/components/shared/Icon/icons/photoGifts.tsx", "../../javascript/components/shared/Icon/icons/photoPrints.tsx", "../../javascript/components/shared/Icon/icons/standout.tsx", "../../javascript/components/shared/Icon/icons/thinWraps.tsx", "../../javascript/components/shared/Icon/icons/woodPrints.tsx", "../../javascript/components/shared/Icon/icons/xpozer.tsx", "../../javascript/components/shared/Icon/icons/arrangements.tsx", "../../javascript/components/shared/Icon/icons/arrangements_save.tsx", "../../javascript/components/shared/Icon/icons/arrangements_add.tsx", "../../javascript/components/shared/Icon/icons/arrangements_remove.tsx", "../../javascript/components/shared/Icon/icons/rooms.tsx", "../../javascript/components/shared/Icon/icons/signIn.tsx", "../../javascript/components/shared/Icon/icons/wall_preview_icon.tsx", "../../javascript/components/shared/Icon/icons/wall_preview_icon_saved.tsx", "../../javascript/components/shared/Icon/icons/wall_preview_icon_share.tsx", "../../javascript/components/shared/Icon/icons/wall_preview_icon_close.tsx", "../../javascript/components/shared/SiteHeader/Support.tsx", "../../javascript/components/shared/Menu/index.ts", "../../javascript/components/shared/Menu/Menu.tsx", "../../javascript/utils/handlers.ts", "../../javascript/components/shared/SiteHeader/AccountMenu.tsx", "../../javascript/components/shared/SignInSSO/index.ts", "../../javascript/components/shared/SignInSSO/SignInSSO.tsx", "../../javascript/components/shared/SiteHeader/CartStatus.tsx", "../../javascript/domains/session/index.ts", "../../javascript/domains/session/session.actions.ts", "../../javascript/domains/session/session.selectors.ts", "../../javascript/domains/session/session.slice.ts", "../../javascript/domains/session/session.types.ts", "../../javascript/domains/multiphotos/index.ts", "../../javascript/domains/multiphotos/multiphotos.selectors.ts", "../../javascript/domains/multiphotos/multiphotos.slice.ts", "../../javascript/domains/multiphotos/multiphotos.adapter.ts", "../../javascript/selectors/ppi.ts", "../../javascript/domains/stage_dimensions/index.ts", "../../javascript/domains/stage_dimensions/stage_dimensions.slice.ts", "../../javascript/domains/wall_preview_rooms/index.ts", "../../javascript/domains/wall_preview_rooms/wall_preview_rooms.actions.ts", "../../javascript/domains/wall_preview_rooms/wall_preview_rooms.slice.ts", "../../javascript/domains/wall_preview_rooms/wall_preview_rooms.adapter.ts", "../../javascript/domains/wall_preview_rooms/wall_preview_rooms.utils.ts", "../../javascript/domains/wall_preview_rooms/wall_preview_rooms.selectors.ts", "../../javascript/domains/wall_preview_rooms/wall_preview_rooms.types.ts", "../../javascript/domains/stage_dimensions/stage_dimensions.selectors.ts", "../../javascript/domains/multiphotos/multiphotos.thunks.ts", "../../javascript/components/pages/PriceTool/index.ts", "../../javascript/components/pages/PriceTool/PriceTool.tsx", "../../javascript/utils/sanitize.ts", "../../javascript/components/shared/Spinner/index.ts", "../../javascript/components/shared/Spinner/Spinner.tsx", "../../javascript/selectors/loading_states.ts", "../../javascript/selectors/prices.ts", "../../javascript/components/pages/PriceTool/PriceToolCustomSizePickerContainer.tsx", "../../javascript/components/shared/CustomSizePicker/index.ts", "../../javascript/components/shared/CustomSizePicker/CustomSizePicker.tsx", "../../javascript/components/shared/Input/index.ts", "../../javascript/components/shared/Input/Input.tsx", "../../javascript/components/shared/Input/InputWrapper.tsx", "../../javascript/components/pages/PriceTool/KeepBrowsingLink.tsx", "../../javascript/components/pages/PriceTool/PriceToolOptionSelect.tsx", "../../javascript/components/pages/CartPage/index.ts", "../../javascript/components/pages/CartPage/CartPage.tsx", "../../javascript/utils/modal_util.ts", "../../javascript/components/shared/Alert/index.ts", "../../javascript/components/shared/Alert/Alert.tsx", "../../javascript/components/shared/Modal/index.ts", "../../javascript/components/shared/Modal/Modal.tsx", "../../javascript/components/shared/Pagination/index.ts", "../../javascript/components/shared/Pagination/Pagination.tsx", "../../javascript/components/shared/CartProductList/index.ts", "../../javascript/components/shared/CartProductList/CartProductList.tsx", "../../javascript/components/shared/CartProductList/CartProduct.tsx", "../../javascript/components/shared/CartProductList/CartProductImage.tsx", "../../javascript/components/shared/RgbDisplay/index.ts", "../../javascript/components/shared/RgbDisplay/RgbDisplay.tsx", "../../javascript/components/shared/CartProductList/CartProductQuantityInput.tsx", "../../javascript/components/shared/CartProductList/CartProductLineItem.tsx", "../../javascript/components/features/Cart/CartHeader/index.ts", "../../javascript/components/features/Cart/CartHeader/CartHeader.tsx", "../../javascript/components/features/Cart/CartSidebar/index.ts", "../../javascript/components/features/Cart/CartSidebar/CartSidebar.tsx", "../../javascript/components/shared/BillingSummary/index.ts", "../../javascript/components/shared/BillingSummary/BillingSummary.tsx", "../../javascript/components/shared/FlashMessage/index.ts", "../../javascript/components/shared/FlashMessage/FlashMessage.tsx", "../../javascript/components/features/Projects/ProjectControls.tsx", "../../javascript/components/features/Projects/EditProjectName.tsx", "../../javascript/components/features/Projects/SaveProjectModal.tsx", "../../javascript/components/features/Projects/LoadProjectModal.tsx", "../../javascript/components/features/Projects/ProjectActionAlert.tsx", "../../javascript/components/features/Projects/ProjectActionTile.tsx", "../../javascript/components/shared/NavigationTile/index.ts", "../../javascript/components/shared/NavigationTile/NavigationTile.tsx", "../../javascript/utils/dom_utils.ts", "../../javascript/utils/slug.ts", "../../javascript/utils/format_date.ts", "../../javascript/domains/projects/index.ts", "../../javascript/domains/projects/projects.slice.ts", "../../javascript/domains/projects/projects.adapter.ts", "../../javascript/domains/projects/projects.actions.ts", "../../javascript/domains/projects/projects.selectors.ts", "../../javascript/domains/projects/projects.types.ts", "../../javascript/components/shared/ImageGallery/index.ts", "../../javascript/components/shared/ImageGallery/ImageGallery.tsx", "../../javascript/components/features/Cart/CartSidebar/ColorCorrectOption.tsx", "../../javascript/components/features/Cart/CheckoutLink.tsx", "../../javascript/components/features/Cart/CartSidebar/CartAddOns.tsx", "../../javascript/selectors/mixed.ts", "../../javascript/components/features/Cart/CartSidebar/CartAddOnOptionGroup.tsx", "../../javascript/components/features/Cart/CartSidebar/CartAddOnOption.tsx", "../../javascript/components/pages/EditorPage/index.ts", "../../javascript/components/pages/EditorPage/EditorPage.tsx", "../../javascript/components/features/ProductSidebar/index.ts", "../../javascript/components/features/ProductSidebar/ProductSidebar.tsx", "../../javascript/components/features/ProductSidebar/Flyout.tsx", "../../javascript/components/features/ProductSidebar/Subcatalogs.tsx", "../../javascript/components/features/ProductSidebar/SubcatalogButtonContainer.tsx", "../../javascript/components/shared/SubcatalogButton/index.ts", "../../javascript/components/shared/SubcatalogButton/SubcatalogButton.tsx", "../../javascript/components/shared/TooltipModalContent/index.ts", "../../javascript/components/shared/TooltipModalContent/TooltipModalContent.tsx", "../../javascript/components/features/ProductSidebar/Products.tsx", "../../javascript/components/shared/Filter/index.ts", "../../javascript/components/shared/Filter/Filter.tsx", "../../javascript/components/shared/Filter/FilterButtons.tsx", "../../javascript/components/shared/Filter/FilterSelectInput.tsx", "../../javascript/components/features/ProductSidebar/CustomSizePickerContainer.tsx", "../../javascript/components/features/ProductSidebar/ProductButtonContainer.tsx", "../../javascript/components/shared/ProductButton/index.ts", "../../javascript/components/shared/ProductButton/ProductButton.tsx", "../../javascript/components/features/ProductSidebar/OptionGroup.tsx", "../../javascript/components/features/ProductSidebar/OptionButtonContainer.tsx", "../../javascript/components/shared/OptionButton/index.ts", "../../javascript/components/shared/OptionButton/OptionButton.tsx", "../../javascript/components/features/ProductSidebar/ChangeCatalogButton.tsx", "../../javascript/components/features/MobileNavigation/index.ts", "../../javascript/components/features/MobileNavigation/MobileNavigation.tsx", "../../javascript/components/features/AddToCart/AddToCartWrapper.tsx", "../../javascript/components/features/AddToCart/MultiCanvasAddToCart.tsx", "../../javascript/selectors/cart_photos.ts", "../../javascript/components/features/AddToCart/MultiPhotoAddToCart.tsx", "../../javascript/components/features/AddToCart/StandardAddToCart.tsx", "../../javascript/components/features/TextToolSidebar/index.ts", "../../javascript/components/features/TextToolSidebar/TextToolsSidebar.tsx", "../../javascript/domains/text_nodes/index.ts", "../../javascript/domains/text_nodes/text_nodes.selectors.ts", "../../javascript/domains/text_nodes/text_nodes.slice.ts", "../../javascript/domains/text_nodes/text_nodes.adapter.ts", "../../javascript/domains/text_nodes/text_nodes.utils.ts", "../../javascript/domains/text_nodes/text_nodes.types.ts", "../../javascript/components/features/TextToolSidebar/PassiveTextTools.tsx", "../../javascript/components/features/TextToolSidebar/PassiveTextArea.tsx", "../../javascript/components/features/TextToolSidebar/TextToolsFontSize.tsx", "../../javascript/components/features/TextToolSidebar/TextToolsFontFamily.tsx", "../../javascript/components/features/TextToolSidebar/TextToolsColor.tsx", "../../../node_modules/react-colorful/src/hooks/useEventCallback.ts", "../../../node_modules/react-colorful/src/utils/clamp.ts", "../../../node_modules/react-colorful/src/components/common/Interactive.tsx", "../../../node_modules/react-colorful/src/utils/format.ts", "../../../node_modules/react-colorful/src/components/common/Pointer.tsx", "../../../node_modules/react-colorful/src/utils/round.ts", "../../../node_modules/react-colorful/src/utils/convert.ts", "../../../node_modules/react-colorful/src/components/common/Hue.tsx", "../../../node_modules/react-colorful/src/components/common/Saturation.tsx", "../../../node_modules/react-colorful/src/utils/compare.ts", "../../../node_modules/react-colorful/src/hooks/useColorManipulation.ts", "../../../node_modules/react-colorful/src/utils/nonce.ts", "../../../node_modules/react-colorful/src/hooks/useIsomorphicLayoutEffect.ts", "../../../node_modules/react-colorful/src/hooks/useStyleSheet.ts", "../../../node_modules/react-colorful/src/components/common/ColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HexColorPicker.tsx", "../../../node_modules/react-colorful/src/components/common/Alpha.tsx", "../../../node_modules/react-colorful/src/components/common/AlphaColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HexAlphaColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HslaColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HslaStringColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HslColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HslStringColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HsvaColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HsvaStringColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HsvColorPicker.tsx", "../../../node_modules/react-colorful/src/components/HsvStringColorPicker.tsx", "../../../node_modules/react-colorful/src/components/RgbaColorPicker.tsx", "../../../node_modules/react-colorful/src/components/RgbaStringColorPicker.tsx", "../../../node_modules/react-colorful/src/components/RgbColorPicker.tsx", "../../../node_modules/react-colorful/src/components/RgbStringColorPicker.tsx", "../../../node_modules/react-colorful/src/utils/validate.ts", "../../../node_modules/react-colorful/src/components/common/ColorInput.tsx", "../../../node_modules/react-colorful/src/components/HexColorInput.tsx", "../../javascript/components/features/TextToolSidebar/TextToolsTextAlign.tsx", "../../javascript/components/features/TextToolSidebar/TextToolsVerticalAlign.tsx", "../../javascript/components/features/Stage/index.ts", "../../javascript/components/features/Stage/Stage.tsx", "../../javascript/components/shared/Slider/index.ts", "../../javascript/components/shared/Slider/Slider.tsx", "../../javascript/thunks/arrangement_thunks.ts", "../../javascript/domains/option_groups/option_groups.api.ts", "../../javascript/apis/catalog.ts", "../../javascript/domains/saved_arrangements/saved_arrangements.api.ts", "../../javascript/domains/subcatalogs/subcatalogs.api.ts", "../../javascript/domains/saved_arrangements/index.ts", "../../javascript/domains/saved_arrangements/saved_arrangements.actions.ts", "../../javascript/domains/saved_arrangements/saved_arrangements.selectors.ts", "../../javascript/domains/saved_arrangements/saved_arrangements.slice.ts", "../../javascript/domains/saved_arrangements/saved_arrangements.adapter.ts", "../../javascript/domains/saved_arrangements/saved_arrangements.types.ts", "../../javascript/components/features/Stage/Canvas.tsx", "../../javascript/utils/reducers.ts", "../../javascript/components/features/Stage/Node.tsx", "../../javascript/components/features/Stage/ImageNodeContainer.tsx", "../../javascript/utils/orientation.ts", "../../javascript/utils/node_util.ts", "../../javascript/components/shared/Nodes/ImageNode.tsx", "../../javascript/components/features/Stage/hooks.tsx", "../../javascript/components/features/Stage/MaskNodeContainer.tsx", "../../javascript/components/shared/Nodes/MaskNode.tsx", "../../javascript/components/features/Stage/BetterTextNodeContainer.tsx", "../../javascript/components/shared/Nodes/TextNode.tsx", "../../javascript/components/features/Stage/CanvasTools.tsx", "../../javascript/components/features/Toolbar/index.ts", "../../javascript/components/features/Toolbar/Toolbar.tsx", "../../javascript/components/features/Toolbar/ImageTools.tsx", "../../javascript/components/features/Toolbar/MaskTools.tsx", "../../javascript/components/features/Shuffler/index.ts", "../../javascript/components/features/Shuffler/Shuffler.tsx", "../../javascript/components/features/Shuffler/ShufflerProduct.ts", "../../javascript/components/features/Shuffler/ShufflerProductTile.tsx", "../../javascript/components/features/Shuffler/ShufflerFilterGroup.tsx", "../../javascript/components/features/Shuffler/Controls.tsx", "../../javascript/components/features/Shuffler/ShufflerFilterButton.tsx", "../../javascript/components/features/Shuffler/ShufflerProductDetail.tsx", "../../javascript/components/features/Shuffler/StandardProductDetail.tsx", "../../javascript/components/features/Shuffler/MobileProductDetail.tsx", "../../javascript/components/features/Shuffler/Walkthrough.tsx", "../../javascript/components/features/EditorSidebar/index.ts", "../../javascript/components/features/EditorSidebar/EditorSidebar.tsx", "../../javascript/components/shared/SpecialContentSidebar/index.ts", "../../javascript/components/shared/SpecialContentSidebar/SpecialContentSidebar.tsx", "../../javascript/components/shared/SpecialContentSidebar/SpecialContentMenu.tsx", "../../javascript/components/shared/SpecialContentSidebar/SpecialContentMenuItem.tsx", "../../javascript/components/features/WallPreview/ChooseRoomModal.tsx", "../../javascript/components/shared/FSPicker/index.ts", "../../javascript/components/shared/FSPicker/FSPicker.tsx", "webpack://filestack/webpack/bootstrap", "webpack://filestack/node_modules/tslib/tslib.es6.js", "webpack://filestack/src/lib/utils/index.ts", "webpack://filestack/src/lib/utils/extensions.ts", "webpack://filestack/build/module/lib/utils/index.node.js", "webpack://filestack/src/lib/request/error.ts", "webpack://filestack/node_modules/debug/src/browser.js", "webpack://filestack/src/is.ts", "webpack://filestack/build/module/lib/request/utils.node.js", "webpack://filestack/src/lib/request/utils.ts", "webpack://filestack/src/lib/request/types.ts", "webpack://filestack/node_modules/fast-xml-parser/src/util.js", "webpack://filestack/node_modules/eventemitter3/index.js", "webpack://filestack/src/misc.ts", "webpack://filestack/src/string.ts", "webpack://filestack/src/lib/request/helpers/cookies.ts", "webpack://filestack/src/lib/request/helpers/headers.ts", "webpack://filestack/src/lib/request/helpers/data.ts", "webpack://filestack/src/lib/request/helpers/url.ts", "webpack://filestack/node_modules/jsonschema/lib/helpers.js", "webpack://filestack/src/node.ts", "webpack://filestack/(webpack)/buildin/global.js", "webpack://filestack/node_modules/fast-xml-parser/src/xmlstr2xmlnode.js", "webpack://filestack/src/lib/request/helpers/shouldRetry.ts", "webpack://filestack/node_modules/file-type/index.js", "webpack://filestack/node_modules/jsonschema/lib/index.js", "webpack://filestack/node_modules/node-libs-browser/node_modules/url/url.js", "webpack://filestack/node_modules/jsonschema/lib/scan.js", "webpack://filestack/node_modules/fast-xml-parser/src/parser.js", "webpack://filestack/src/browser.ts", "webpack://filestack/(webpack)/buildin/module.js", "webpack://filestack/(webpack)/buildin/amd-options.js", "webpack://filestack/node_modules/process/browser.js", "webpack://filestack/node_modules/isutf8/index.js", "webpack://filestack/node_modules/spark-md5/spark-md5.js", "webpack://filestack/node_modules/p-queue/index.js", "webpack://filestack/node_modules/lodash.clonedeep/index.js", "webpack://filestack/src/stacktrace.ts", "webpack://filestack/src/memo.ts", "webpack://filestack/node_modules/jsonschema/lib/validator.js", "webpack://filestack/node_modules/punycode/punycode.js", "webpack://filestack/node_modules/node-libs-browser/node_modules/url/util.js", "webpack://filestack/node_modules/querystring-es3/index.js", "webpack://filestack/node_modules/querystring-es3/decode.js", "webpack://filestack/node_modules/querystring-es3/encode.js", "webpack://filestack/node_modules/jsonschema/lib/attribute.js", "webpack://filestack/node_modules/debug/src/common.js", "webpack://filestack/node_modules/ms/index.js", "webpack://filestack/src/lib/request/adapters/xhr.ts", "webpack://filestack/node_modules/fast-xml-parser/src/node2json.js", "webpack://filestack/node_modules/fast-xml-parser/src/xmlNode.js", "webpack://filestack/node_modules/fast-xml-parser/src/validator.js", "webpack://filestack/node_modules/fast-xml-parser/src/nimndata.js", "webpack://filestack/node_modules/fast-xml-parser/src/node2json_str.js", "webpack://filestack/node_modules/fast-xml-parser/src/json2xml.js", "webpack://filestack/node_modules/p-queue/node_modules/eventemitter3/index.js", "webpack://filestack/(webpack)/buildin/harmony-module.js", "webpack://filestack/src/session.ts", "webpack://filestack/FilestackLoader/webpack/bootstrap", "webpack://filestack/FilestackLoader/dist/module/index.js", "webpack://filestack/build/module/lib/api/security.node.js", "webpack://filestack/src/logger.ts", "webpack://filestack/src/syncpromise.ts", "webpack://filestack/src/scope.ts", "webpack://filestack/src/hub.ts", "webpack://filestack/src/index.ts", "webpack://filestack/src/config.ts", "webpack://filestack/src/filestack_error.ts", "webpack://filestack/src/schema/transforms.schema.ts", "webpack://filestack/src/schema/definitions.schema.ts", "webpack://filestack/src/schema/validator.ts", "webpack://filestack/src/lib/filelink.ts", "webpack://filestack/src/schema/store.schema.ts", "webpack://filestack/src/schema/preview.schema.ts", "webpack://filestack/src/schema/upload.schema.ts", "webpack://filestack/src/schema/picker.schema.ts", "webpack://filestack/src/schema/metadata.schema.ts", "webpack://filestack/src/schema/retrieve.schema.ts", "webpack://filestack/src/lib/request/dispatch.ts", "webpack://filestack/build/module/lib/request/request_adapter.node.js", "webpack://filestack/src/lib/request/request.ts", "webpack://filestack/src/lib/request/token.ts", "webpack://filestack/src/lib/api/file.ts", "webpack://filestack/src/lib/api/transform.ts", "webpack://filestack/src/lib/api/upload/file.ts", "webpack://filestack/src/lib/utils/store.ts", "webpack://filestack/build/module/lib/api/upload/file_tools.node.js", "webpack://filestack/src/lib/api/upload/uploaders/abstract.ts", "webpack://filestack/src/lib/api/upload/uploaders/s3.ts", "webpack://filestack/src/lib/api/upload/upload.ts", "webpack://filestack/src/lib/api/preview.ts", "webpack://filestack/build/module/lib/utils/store.node.js", "webpack://filestack/src/lib/api/cloud.ts", "webpack://filestack/src/lib/api/prefetch.ts", "webpack://filestack/src/lib/picker.ts", "webpack://filestack/src/lib/client.ts", "webpack://filestack/src/lib/api/store.ts", "webpack://filestack/src/index.ts", "webpack://filestack/src/time.ts", "webpack://filestack/src/object.ts", "../../javascript/components/features/WallPreview/EditRoomUploadsModal.tsx", "../../javascript/components/features/WallPreview/EditRoomUpload.tsx", "../../javascript/components/features/WallPreview/WallPreviewTools.tsx", "../../javascript/components/features/WallPreview/ShareWallPreviewModal.tsx", "../../javascript/domains/wall_previews/index.ts", "../../javascript/domains/wall_previews/wall_previews.actions.ts", "../../javascript/domains/wall_previews/wall_previews.slice.ts", "../../javascript/domains/wall_previews/wall_previews.adapter.ts", "../../javascript/domains/wall_previews/wall_previews.selectors.ts", "../../javascript/domains/wall_previews/wall_previews.types.ts", "../../javascript/components/features/WallPreview/ManageWallPreviewsModal.tsx", "../../javascript/components/features/Arrangements/ManageArrangementsModal.tsx", "../../javascript/components/features/Arrangements/EditArrangementModal.tsx", "../../javascript/components/features/Arrangements/CustomArrangementsTools.tsx", "../../javascript/components/features/Arrangements/UnavailableArrangementModal.tsx", "../../javascript/components/features/EditorSidebar/SettingsMenu.tsx", "../../javascript/components/shared/Switch/index.ts", "../../javascript/components/shared/Switch/Switch.tsx", "../../javascript/components/features/ImageCollections/index.ts", "../../javascript/components/features/ImageCollections/ImageCollectionsController.tsx", "../../javascript/components/features/ImageCollections/CollectionsMenu.tsx", "../../javascript/components/features/ImageCollections/SaveUncollectedModal.tsx", "../../javascript/components/features/ImageCollections/SingleCollectionManager/SingleCollectionManager.tsx", "../../javascript/components/features/ImageCollections/CollectionsModal.tsx", "../../javascript/components/features/ImageCollections/SingleCollectionManager/CollectionPhotoTile.tsx", "../../javascript/components/features/ImageCollections/SingleCollectionManager/DeletePhotoModal.tsx", "../../javascript/components/features/ImageCollections/SingleCollectionManager/MovePhotoModal.tsx", "../../javascript/components/features/ImageCollections/AllCollectionsManager/SelectCollectionModal.tsx", "../../javascript/components/features/ImageCollections/AllCollectionsManager/CollectionTile.tsx", "../../javascript/components/features/ImageCollections/AllCollectionsManager/DeleteCollectionModal.tsx", "../../javascript/components/features/ImageCollections/AllCollectionsManager/RenameCollectionModal.tsx", "../../javascript/components/features/ImageCollections/AllCollectionsManager/CreateNewCollectionModal.tsx", "../../javascript/components/features/Photos/index.ts", "../../javascript/components/features/Photos/Photos.tsx", "../../javascript/components/features/Photos/UploadPhotos.tsx", "../../javascript/components/features/Photos/CollectionPicker.tsx", "../../javascript/components/features/Photos/PhotoOptionsMenu.tsx", "../../javascript/components/features/Photos/Filmstrip.tsx", "../../javascript/components/features/Photos/UserPhotoThumb.tsx", "../../javascript/components/features/Photos/UserImage.tsx", "../../javascript/components/pages/Projects/index.ts", "../../javascript/components/pages/Projects/Projects.tsx", "../../javascript/components/features/Projects/ProjectsList.tsx", "../../javascript/components/shared/SiteMessage/index.ts", "../../javascript/components/shared/SiteMessage/SiteMessage.tsx", "../../javascript/store/wos_store.ts", "../../../node_modules/redux-observable/dist/esm/index.js", "../../../node_modules/redux-observable/dist/esm/createEpicMiddleware.js", "../../../node_modules/rxjs/src/operators/index.ts", "../../../node_modules/redux-observable/dist/esm/StateObservable.js", "../../../node_modules/redux-observable/node_modules/tslib/tslib.es6.js", "../../../node_modules/redux-observable/dist/esm/utils/console.js", "../../../node_modules/redux-observable/dist/esm/combineEpics.js", "../../javascript/domains/active_editor/active_editor.epics.ts", "../../javascript/models/order_api.ts", "../../javascript/domains/analytics/analytics.epics.ts", "../../javascript/domains/analytics/analytics.utils.ts", "../../javascript/domains/application/application.epics.ts", "../../javascript/domains/cart/cart.epics.ts", "../../javascript/domains/cart_billing/cart_billing.epics.ts", "../../javascript/domains/cart_billing/cart_billing.api.ts", "../../javascript/domains/cart_order_options/cart_order_options.epics.ts", "../../javascript/domains/cart_products/cart_products.epics.ts", "../../javascript/domains/cart_products/cart_products.api.ts", "../../javascript/domains/cart_product_creator/cart_product_creator.epics.ts", "../../javascript/domains/cart_product_creator/cart_product_creator.api.ts", "../../javascript/domains/cart_product_editor/cart_product_editor.epics.ts", "../../javascript/domains/cart_product_editor/cart_product_editor.api.ts", "../../javascript/domains/canvases/canvases.epics.ts", "../../javascript/domains/catalogs/catalogs.epics.ts", "../../javascript/domains/catalogs/catalogs.api.ts", "../../javascript/domains/crops/crops.epics.ts", "../../javascript/domains/option_groups/option_groups.epics.ts", "../../javascript/domains/photos/photos.epics.ts", "../../javascript/domains/photos/photos.api.ts", "../../javascript/domains/projects/projects.epics.ts", "../../javascript/domains/projects/projects.api.ts", "../../javascript/domains/saved_arrangements/saved_arrangements.epics.ts", "../../javascript/domains/saved_arrangements/saved_arrangements.utils.ts", "../../javascript/domains/session/session.epics.ts", "../../javascript/domains/session/session.api.ts", "../../javascript/domains/subcatalogs/subcatalogs.epics.ts", "../../javascript/domains/svgs/svgs.epics.ts", "../../javascript/domains/svgs/svgs.api.ts", "../../javascript/domains/text_nodes/text_nodes.epics.ts", "../../javascript/domains/ui/ui.epics.ts", "../../javascript/domains/wall_previews/wall_previews.epics.ts", "../../javascript/domains/wall_previews/wall_previews.api.ts", "../../javascript/domains/wall_preview_rooms/wall_preview_rooms.epics.ts", "../../javascript/domains/wall_preview_rooms/wall_preview_rooms.api.ts", "../../javascript/controllers/price_tool_renderer_controller.tsx", "../../javascript/controllers/projects_renderer_controller.tsx", "../../javascript/controllers/wos_renderer_controller.tsx", "../../javascript/utils/font_awesome_init.ts", "../../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs", "../../../node_modules/@fortawesome/free-regular-svg-icons/index.mjs"], "sourcesContent": ["{\n let _global =\n typeof window !== 'undefined' ?\n window :\n typeof global !== 'undefined' ?\n global :\n typeof globalThis !== 'undefined' ?\n globalThis :\n typeof self !== 'undefined' ?\n self :\n {};\n\n _global.SENTRY_RELEASE={id:\"46b62accc9712658490c4b122805ad19d3cce0fa\"};}", "/*\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", "/** @license React v17.0.2\n * react.development.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';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar _assign = require('object-assign');\n\n// TODO: this is special because it gets imported during build.\nvar ReactVersion = '17.0.2';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE = 0xeac7;\nvar REACT_PORTAL_TYPE = 0xeaca;\nexports.Fragment = 0xeacb;\nexports.StrictMode = 0xeacc;\nexports.Profiler = 0xead2;\nvar REACT_PROVIDER_TYPE = 0xeacd;\nvar REACT_CONTEXT_TYPE = 0xeace;\nvar REACT_FORWARD_REF_TYPE = 0xead0;\nexports.Suspense = 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = 0xead8;\nvar REACT_MEMO_TYPE = 0xead3;\nvar REACT_LAZY_TYPE = 0xead4;\nvar REACT_BLOCK_TYPE = 0xead9;\nvar REACT_SERVER_BLOCK_TYPE = 0xeada;\nvar REACT_FUNDAMENTAL_TYPE = 0xead5;\nvar REACT_SCOPE_TYPE = 0xead7;\nvar REACT_OPAQUE_ID_TYPE = 0xeae0;\nvar REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;\nvar REACT_OFFSCREEN_TYPE = 0xeae2;\nvar REACT_LEGACY_HIDDEN_TYPE = 0xeae3;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n var symbolFor = Symbol.for;\n REACT_ELEMENT_TYPE = symbolFor('react.element');\n REACT_PORTAL_TYPE = symbolFor('react.portal');\n exports.Fragment = symbolFor('react.fragment');\n exports.StrictMode = symbolFor('react.strict_mode');\n exports.Profiler = symbolFor('react.profiler');\n REACT_PROVIDER_TYPE = symbolFor('react.provider');\n REACT_CONTEXT_TYPE = symbolFor('react.context');\n REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');\n exports.Suspense = symbolFor('react.suspense');\n REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');\n REACT_MEMO_TYPE = symbolFor('react.memo');\n REACT_LAZY_TYPE = symbolFor('react.lazy');\n REACT_BLOCK_TYPE = symbolFor('react.block');\n REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');\n REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');\n REACT_SCOPE_TYPE = symbolFor('react.scope');\n REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');\n REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');\n REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');\n REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');\n}\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n transition: 0\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n {\n currentExtraStackFrame = stack;\n }\n}\n\n{\n ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n {\n currentExtraStackFrame = stack;\n }\n }; // Stack implementation injected by the current renderer.\n\n\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var stack = ''; // Add an extra top frame while an element is being validated\n\n if (currentExtraStackFrame) {\n stack += currentExtraStackFrame;\n } // Delegate to the injected renderer-specific implementation\n\n\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n if (impl) {\n stack += impl() || '';\n }\n\n return stack;\n };\n}\n\n/**\n * Used by act() to track whether you're inside an act() scope.\n */\nvar IsSomeRendererActing = {\n current: false\n};\n\nvar ReactSharedInternals = {\n ReactCurrentDispatcher: ReactCurrentDispatcher,\n ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n ReactCurrentOwner: ReactCurrentOwner,\n IsSomeRendererActing: IsSomeRendererActing,\n // Used by renderers to avoid bundling object-assign twice in UMD bundles:\n assign: _assign\n};\n\n{\n ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n}\nfunction error(format) {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n }\n\n var argsWithFormat = args.map(function (item) {\n return '' + item;\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) {\n {\n throw Error( \"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\" );\n }\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\n_assign(pureComponentPrototype, Component.prototype);\n\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var functionName = innerType.displayName || innerType.name || '';\n return outerType.displayName || (functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n}\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n}\n\nfunction getComponentName(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case exports.Fragment:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case exports.Profiler:\n return 'Profiler';\n\n case exports.StrictMode:\n return 'StrictMode';\n\n case exports.Suspense:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n return getComponentName(type.type);\n\n case REACT_BLOCK_TYPE:\n return getComponentName(type._render);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentName(init(payload));\n } catch (x) {\n return null;\n }\n }\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentName(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (!!(element === null || element === undefined)) {\n {\n throw Error( \"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\" );\n }\n }\n\n var propName; // Original props are copied\n\n var props = _assign({}, element.props); // Reserved names are extracted\n\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (Array.isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n var childrenString = '' + children;\n\n {\n {\n throw Error( \"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). If you meant to render a collection of children, use an array instead.\" );\n }\n }\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n {\n throw Error( \"React.Children.only expected to receive a single React element child.\" );\n }\n }\n\n return children;\n}\n\nfunction createContext(defaultValue, calculateChangedBits) {\n if (calculateChangedBits === undefined) {\n calculateChangedBits = null;\n } else {\n {\n if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') {\n error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits);\n }\n }\n }\n\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n _calculateChangedBits: calculateChangedBits,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context,\n _calculateChangedBits: context._calculateChangedBits\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n thenable.then(function (moduleObject) {\n if (payload._status === Pending) {\n var defaultExport = moduleObject.default;\n\n {\n if (defaultExport === undefined) {\n error('lazy: Expected the result of a dynamic import() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n } // Transition to the next state.\n\n\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = defaultExport;\n }\n }, function (error) {\n if (payload._status === Pending) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n }\n\n if (payload._status === Resolved) {\n return payload._result;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: -1,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n\n if (render.displayName == null) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\n// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === exports.Fragment || type === exports.Profiler || type === REACT_DEBUG_TRACING_MODE_TYPE || type === exports.StrictMode || type === exports.Suspense || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n\n if (type.displayName == null) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n if (!(dispatcher !== null)) {\n {\n throw Error( \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\" );\n }\n }\n\n return dispatcher;\n}\n\nfunction useContext(Context, unstable_observedBits) {\n var dispatcher = resolveDispatcher();\n\n {\n if (unstable_observedBits !== undefined) {\n error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\\n\\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://reactjs.org/link/rules-of-hooks' : '');\n } // TODO: add a more generic warning for invalid values.\n\n\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context, unstable_observedBits);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: _assign({}, props, {\n value: prevLog\n }),\n info: _assign({}, props, {\n value: prevInfo\n }),\n warn: _assign({}, props, {\n value: prevWarn\n }),\n error: _assign({}, props, {\n value: prevError\n }),\n group: _assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: _assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: _assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if (!fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at ');\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case exports.Suspense:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_BLOCK_TYPE:\n return describeFunctionComponentFrame(type._render);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentName(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentName(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentName(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentName(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (Array.isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentName(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === exports.Fragment) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\n{\n\n try {\n var frozenObject = Object.freeze({});\n /* eslint-disable no-new */\n\n new Map([[frozenObject, null]]);\n new Set([frozenObject]);\n /* eslint-enable no-new */\n } catch (e) {\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.PureComponent = PureComponent;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useEffect = useEffect;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.version = ReactVersion;\n })();\n}\n", "'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", "/** @license React v0.20.2\n * scheduler.development.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';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar enableSchedulerDebugging = false;\nvar enableProfiling = false;\n\nvar requestHostCallback;\nvar requestHostTimeout;\nvar cancelHostTimeout;\nvar requestPaint;\nvar hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\n\nif (hasPerformanceNow) {\n var localPerformance = performance;\n\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date;\n var initialTime = localDate.now();\n\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\n\nif ( // If Scheduler runs in a non-DOM environment, it falls back to a naive\n// implementation using setTimeout.\ntypeof window === 'undefined' || // Check if MessageChannel is supported, too.\ntypeof MessageChannel !== 'function') {\n // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore,\n // fallback to a naive implementation.\n var _callback = null;\n var _timeoutID = null;\n\n var _flushCallback = function () {\n if (_callback !== null) {\n try {\n var currentTime = exports.unstable_now();\n var hasRemainingTime = true;\n\n _callback(hasRemainingTime, currentTime);\n\n _callback = null;\n } catch (e) {\n setTimeout(_flushCallback, 0);\n throw e;\n }\n }\n };\n\n requestHostCallback = function (cb) {\n if (_callback !== null) {\n // Protect against re-entrancy.\n setTimeout(requestHostCallback, 0, cb);\n } else {\n _callback = cb;\n setTimeout(_flushCallback, 0);\n }\n };\n\n requestHostTimeout = function (cb, ms) {\n _timeoutID = setTimeout(cb, ms);\n };\n\n cancelHostTimeout = function () {\n clearTimeout(_timeoutID);\n };\n\n exports.unstable_shouldYield = function () {\n return false;\n };\n\n requestPaint = exports.unstable_forceFrameRate = function () {};\n} else {\n // Capture local references to native APIs, in case a polyfill overrides them.\n var _setTimeout = window.setTimeout;\n var _clearTimeout = window.clearTimeout;\n\n if (typeof console !== 'undefined') {\n // TODO: Scheduler no longer requires these methods to be polyfilled. But\n // maybe we want to continue warning if they don't exist, to preserve the\n // option to rely on it in the future?\n var requestAnimationFrame = window.requestAnimationFrame;\n var cancelAnimationFrame = window.cancelAnimationFrame;\n\n if (typeof requestAnimationFrame !== 'function') {\n // Using console['error'] to evade Babel and ESLint\n console['error'](\"This browser doesn't support requestAnimationFrame. \" + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills');\n }\n\n if (typeof cancelAnimationFrame !== 'function') {\n // Using console['error'] to evade Babel and ESLint\n console['error'](\"This browser doesn't support cancelAnimationFrame. \" + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills');\n }\n }\n\n var isMessageLoopRunning = false;\n var scheduledHostCallback = null;\n var taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main\n // thread, like user events. By default, it yields multiple times per frame.\n // It does not attempt to align with frame boundaries, since most tasks don't\n // need to be frame aligned; for those that do, use requestAnimationFrame.\n\n var yieldInterval = 5;\n var deadline = 0; // TODO: Make this configurable\n\n {\n // `isInputPending` is not available. Since we have no way of knowing if\n // there's pending input, always yield at the end of the frame.\n exports.unstable_shouldYield = function () {\n return exports.unstable_now() >= deadline;\n }; // Since we yield every frame regardless, `requestPaint` has no effect.\n\n\n requestPaint = function () {};\n }\n\n exports.unstable_forceFrameRate = function (fps) {\n if (fps < 0 || fps > 125) {\n // Using console['error'] to evade Babel and ESLint\n console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');\n return;\n }\n\n if (fps > 0) {\n yieldInterval = Math.floor(1000 / fps);\n } else {\n // reset the framerate\n yieldInterval = 5;\n }\n };\n\n var performWorkUntilDeadline = function () {\n if (scheduledHostCallback !== null) {\n var currentTime = exports.unstable_now(); // Yield after `yieldInterval` ms, regardless of where we are in the vsync\n // cycle. This means there's always time remaining at the beginning of\n // the message event.\n\n deadline = currentTime + yieldInterval;\n var hasTimeRemaining = true;\n\n try {\n var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n\n if (!hasMoreWork) {\n isMessageLoopRunning = false;\n scheduledHostCallback = null;\n } else {\n // If there's more work, schedule the next message event at the end\n // of the preceding one.\n port.postMessage(null);\n }\n } catch (error) {\n // If a scheduler task throws, exit the current browser task so the\n // error can be observed.\n port.postMessage(null);\n throw error;\n }\n } else {\n isMessageLoopRunning = false;\n } // Yielding to the browser will give it a chance to paint, so we can\n };\n\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n\n requestHostCallback = function (callback) {\n scheduledHostCallback = callback;\n\n if (!isMessageLoopRunning) {\n isMessageLoopRunning = true;\n port.postMessage(null);\n }\n };\n\n requestHostTimeout = function (callback, ms) {\n taskTimeoutID = _setTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n };\n\n cancelHostTimeout = function () {\n _clearTimeout(taskTimeoutID);\n\n taskTimeoutID = -1;\n };\n}\n\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n siftUp(heap, node, index);\n}\nfunction peek(heap) {\n var first = heap[0];\n return first === undefined ? null : first;\n}\nfunction pop(heap) {\n var first = heap[0];\n\n if (first !== undefined) {\n var last = heap.pop();\n\n if (last !== first) {\n heap[0] = last;\n siftDown(heap, last, 0);\n }\n\n return first;\n } else {\n return null;\n }\n}\n\nfunction siftUp(heap, node, i) {\n var index = i;\n\n while (true) {\n var parentIndex = index - 1 >>> 1;\n var parent = heap[parentIndex];\n\n if (parent !== undefined && compare(parent, node) > 0) {\n // The parent is larger. Swap positions.\n heap[parentIndex] = node;\n heap[index] = parent;\n index = parentIndex;\n } else {\n // The parent is smaller. Exit.\n return;\n }\n }\n}\n\nfunction siftDown(heap, node, i) {\n var index = i;\n var length = heap.length;\n\n while (index < length) {\n var leftIndex = (index + 1) * 2 - 1;\n var left = heap[leftIndex];\n var rightIndex = leftIndex + 1;\n var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.\n\n if (left !== undefined && compare(left, node) < 0) {\n if (right !== undefined && compare(right, left) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n heap[index] = left;\n heap[leftIndex] = node;\n index = leftIndex;\n }\n } else if (right !== undefined && compare(right, node) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n // Neither child is smaller. Exit.\n return;\n }\n }\n}\n\nfunction compare(a, b) {\n // Compare sort index first, then task id.\n var diff = a.sortIndex - b.sortIndex;\n return diff !== 0 ? diff : a.id - b.id;\n}\n\n// TODO: Use symbols?\nvar ImmediatePriority = 1;\nvar UserBlockingPriority = 2;\nvar NormalPriority = 3;\nvar LowPriority = 4;\nvar IdlePriority = 5;\n\nfunction markTaskErrored(task, ms) {\n}\n\n/* eslint-disable no-var */\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\n\nvar maxSigned31BitInt = 1073741823; // Times out immediately\n\nvar IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out\n\nvar USER_BLOCKING_PRIORITY_TIMEOUT = 250;\nvar NORMAL_PRIORITY_TIMEOUT = 5000;\nvar LOW_PRIORITY_TIMEOUT = 10000; // Never times out\n\nvar IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap\n\nvar taskQueue = [];\nvar timerQueue = []; // Incrementing id counter. Used to maintain insertion order.\n\nvar taskIdCounter = 1; // Pausing the scheduler is useful for debugging.\nvar currentTask = null;\nvar currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy.\n\nvar isPerformingWork = false;\nvar isHostCallbackScheduled = false;\nvar isHostTimeoutScheduled = false;\n\nfunction advanceTimers(currentTime) {\n // Check for tasks that are no longer delayed and add them to the queue.\n var timer = peek(timerQueue);\n\n while (timer !== null) {\n if (timer.callback === null) {\n // Timer was cancelled.\n pop(timerQueue);\n } else if (timer.startTime <= currentTime) {\n // Timer fired. Transfer to the task queue.\n pop(timerQueue);\n timer.sortIndex = timer.expirationTime;\n push(taskQueue, timer);\n } else {\n // Remaining timers are pending.\n return;\n }\n\n timer = peek(timerQueue);\n }\n}\n\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = false;\n advanceTimers(currentTime);\n\n if (!isHostCallbackScheduled) {\n if (peek(taskQueue) !== null) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n }\n }\n}\n\nfunction flushWork(hasTimeRemaining, initialTime) {\n\n\n isHostCallbackScheduled = false;\n\n if (isHostTimeoutScheduled) {\n // We scheduled a timeout but it's no longer needed. Cancel it.\n isHostTimeoutScheduled = false;\n cancelHostTimeout();\n }\n\n isPerformingWork = true;\n var previousPriorityLevel = currentPriorityLevel;\n\n try {\n if (enableProfiling) {\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } catch (error) {\n if (currentTask !== null) {\n var currentTime = exports.unstable_now();\n markTaskErrored(currentTask, currentTime);\n currentTask.isQueued = false;\n }\n\n throw error;\n }\n } else {\n // No catch in prod code path.\n return workLoop(hasTimeRemaining, initialTime);\n }\n } finally {\n currentTask = null;\n currentPriorityLevel = previousPriorityLevel;\n isPerformingWork = false;\n }\n}\n\nfunction workLoop(hasTimeRemaining, initialTime) {\n var currentTime = initialTime;\n advanceTimers(currentTime);\n currentTask = peek(taskQueue);\n\n while (currentTask !== null && !(enableSchedulerDebugging )) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || exports.unstable_shouldYield())) {\n // This currentTask hasn't expired, and we've reached the deadline.\n break;\n }\n\n var callback = currentTask.callback;\n\n if (typeof callback === 'function') {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n\n var continuationCallback = callback(didUserCallbackTimeout);\n currentTime = exports.unstable_now();\n\n if (typeof continuationCallback === 'function') {\n currentTask.callback = continuationCallback;\n } else {\n\n if (currentTask === peek(taskQueue)) {\n pop(taskQueue);\n }\n }\n\n advanceTimers(currentTime);\n } else {\n pop(taskQueue);\n }\n\n currentTask = peek(taskQueue);\n } // Return whether there's additional work\n\n\n if (currentTask !== null) {\n return true;\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n\n return false;\n }\n}\n\nfunction unstable_runWithPriority(priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n case LowPriority:\n case IdlePriority:\n break;\n\n default:\n priorityLevel = NormalPriority;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_next(eventHandler) {\n var priorityLevel;\n\n switch (currentPriorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n // Shift down to normal priority\n priorityLevel = NormalPriority;\n break;\n\n default:\n // Anything lower than normal priority should remain at the current level.\n priorityLevel = currentPriorityLevel;\n break;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_wrapCallback(callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n // This is a fork of runWithPriority, inlined for performance.\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n}\n\nfunction unstable_scheduleCallback(priorityLevel, callback, options) {\n var currentTime = exports.unstable_now();\n var startTime;\n\n if (typeof options === 'object' && options !== null) {\n var delay = options.delay;\n\n if (typeof delay === 'number' && delay > 0) {\n startTime = currentTime + delay;\n } else {\n startTime = currentTime;\n }\n } else {\n startTime = currentTime;\n }\n\n var timeout;\n\n switch (priorityLevel) {\n case ImmediatePriority:\n timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n break;\n\n case UserBlockingPriority:\n timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n break;\n\n case IdlePriority:\n timeout = IDLE_PRIORITY_TIMEOUT;\n break;\n\n case LowPriority:\n timeout = LOW_PRIORITY_TIMEOUT;\n break;\n\n case NormalPriority:\n default:\n timeout = NORMAL_PRIORITY_TIMEOUT;\n break;\n }\n\n var expirationTime = startTime + timeout;\n var newTask = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: startTime,\n expirationTime: expirationTime,\n sortIndex: -1\n };\n\n if (startTime > currentTime) {\n // This is a delayed task.\n newTask.sortIndex = startTime;\n push(timerQueue, newTask);\n\n if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n // All tasks are delayed, and this is the task with the earliest delay.\n if (isHostTimeoutScheduled) {\n // Cancel an existing timeout.\n cancelHostTimeout();\n } else {\n isHostTimeoutScheduled = true;\n } // Schedule a timeout.\n\n\n requestHostTimeout(handleTimeout, startTime - currentTime);\n }\n } else {\n newTask.sortIndex = expirationTime;\n push(taskQueue, newTask);\n // wait until the next time we yield.\n\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n }\n\n return newTask;\n}\n\nfunction unstable_pauseExecution() {\n}\n\nfunction unstable_continueExecution() {\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n}\n\nfunction unstable_getFirstCallbackNode() {\n return peek(taskQueue);\n}\n\nfunction unstable_cancelCallback(task) {\n // remove from the queue because you can't remove arbitrary nodes from an\n // array based heap, only the first one.)\n\n\n task.callback = null;\n}\n\nfunction unstable_getCurrentPriorityLevel() {\n return currentPriorityLevel;\n}\n\nvar unstable_requestPaint = requestPaint;\nvar unstable_Profiling = null;\n\nexports.unstable_IdlePriority = IdlePriority;\nexports.unstable_ImmediatePriority = ImmediatePriority;\nexports.unstable_LowPriority = LowPriority;\nexports.unstable_NormalPriority = NormalPriority;\nexports.unstable_Profiling = unstable_Profiling;\nexports.unstable_UserBlockingPriority = UserBlockingPriority;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_continueExecution = unstable_continueExecution;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\nexports.unstable_next = unstable_next;\nexports.unstable_pauseExecution = unstable_pauseExecution;\nexports.unstable_requestPaint = unstable_requestPaint;\nexports.unstable_runWithPriority = unstable_runWithPriority;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_wrapCallback = unstable_wrapCallback;\n })();\n}\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.20.2\n * scheduler-tracing.development.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';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs.\n\nvar interactionIDCounter = 0;\nvar threadIDCounter = 0; // Set of currently traced interactions.\n// Interactions \"stack\"\u2013\n// Meaning that newly traced interactions are appended to the previously active set.\n// When an interaction goes out of scope, the previous set (if any) is restored.\n\nexports.__interactionsRef = null; // Listener(s) to notify when interactions begin and end.\n\nexports.__subscriberRef = null;\n\n{\n exports.__interactionsRef = {\n current: new Set()\n };\n exports.__subscriberRef = {\n current: null\n };\n}\nfunction unstable_clear(callback) {\n\n var prevInteractions = exports.__interactionsRef.current;\n exports.__interactionsRef.current = new Set();\n\n try {\n return callback();\n } finally {\n exports.__interactionsRef.current = prevInteractions;\n }\n}\nfunction unstable_getCurrent() {\n {\n return exports.__interactionsRef.current;\n }\n}\nfunction unstable_getThreadID() {\n return ++threadIDCounter;\n}\nfunction unstable_trace(name, timestamp, callback) {\n var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID;\n\n var interaction = {\n __count: 1,\n id: interactionIDCounter++,\n name: name,\n timestamp: timestamp\n };\n var prevInteractions = exports.__interactionsRef.current; // Traced interactions should stack/accumulate.\n // To do that, clone the current interactions.\n // The previous set will be restored upon completion.\n\n var interactions = new Set(prevInteractions);\n interactions.add(interaction);\n exports.__interactionsRef.current = interactions;\n var subscriber = exports.__subscriberRef.current;\n var returnValue;\n\n try {\n if (subscriber !== null) {\n subscriber.onInteractionTraced(interaction);\n }\n } finally {\n try {\n if (subscriber !== null) {\n subscriber.onWorkStarted(interactions, threadID);\n }\n } finally {\n try {\n returnValue = callback();\n } finally {\n exports.__interactionsRef.current = prevInteractions;\n\n try {\n if (subscriber !== null) {\n subscriber.onWorkStopped(interactions, threadID);\n }\n } finally {\n interaction.__count--; // If no async work was scheduled for this interaction,\n // Notify subscribers that it's completed.\n\n if (subscriber !== null && interaction.__count === 0) {\n subscriber.onInteractionScheduledWorkCompleted(interaction);\n }\n }\n }\n }\n }\n\n return returnValue;\n}\nfunction unstable_wrap(callback) {\n var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID;\n\n var wrappedInteractions = exports.__interactionsRef.current;\n var subscriber = exports.__subscriberRef.current;\n\n if (subscriber !== null) {\n subscriber.onWorkScheduled(wrappedInteractions, threadID);\n } // Update the pending async work count for the current interactions.\n // Update after calling subscribers in case of error.\n\n\n wrappedInteractions.forEach(function (interaction) {\n interaction.__count++;\n });\n var hasRun = false;\n\n function wrapped() {\n var prevInteractions = exports.__interactionsRef.current;\n exports.__interactionsRef.current = wrappedInteractions;\n subscriber = exports.__subscriberRef.current;\n\n try {\n var returnValue;\n\n try {\n if (subscriber !== null) {\n subscriber.onWorkStarted(wrappedInteractions, threadID);\n }\n } finally {\n try {\n returnValue = callback.apply(undefined, arguments);\n } finally {\n exports.__interactionsRef.current = prevInteractions;\n\n if (subscriber !== null) {\n subscriber.onWorkStopped(wrappedInteractions, threadID);\n }\n }\n }\n\n return returnValue;\n } finally {\n if (!hasRun) {\n // We only expect a wrapped function to be executed once,\n // But in the event that it's executed more than once\u2013\n // Only decrement the outstanding interaction counts once.\n hasRun = true; // Update pending async counts for all wrapped interactions.\n // If this was the last scheduled async work for any of them,\n // Mark them as completed.\n\n wrappedInteractions.forEach(function (interaction) {\n interaction.__count--;\n\n if (subscriber !== null && interaction.__count === 0) {\n subscriber.onInteractionScheduledWorkCompleted(interaction);\n }\n });\n }\n }\n }\n\n wrapped.cancel = function cancel() {\n subscriber = exports.__subscriberRef.current;\n\n try {\n if (subscriber !== null) {\n subscriber.onWorkCanceled(wrappedInteractions, threadID);\n }\n } finally {\n // Update pending async counts for all wrapped interactions.\n // If this was the last scheduled async work for any of them,\n // Mark them as completed.\n wrappedInteractions.forEach(function (interaction) {\n interaction.__count--;\n\n if (subscriber && interaction.__count === 0) {\n subscriber.onInteractionScheduledWorkCompleted(interaction);\n }\n });\n }\n };\n\n return wrapped;\n}\n\nvar subscribers = null;\n\n{\n subscribers = new Set();\n}\n\nfunction unstable_subscribe(subscriber) {\n {\n subscribers.add(subscriber);\n\n if (subscribers.size === 1) {\n exports.__subscriberRef.current = {\n onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted,\n onInteractionTraced: onInteractionTraced,\n onWorkCanceled: onWorkCanceled,\n onWorkScheduled: onWorkScheduled,\n onWorkStarted: onWorkStarted,\n onWorkStopped: onWorkStopped\n };\n }\n }\n}\nfunction unstable_unsubscribe(subscriber) {\n {\n subscribers.delete(subscriber);\n\n if (subscribers.size === 0) {\n exports.__subscriberRef.current = null;\n }\n }\n}\n\nfunction onInteractionTraced(interaction) {\n var didCatchError = false;\n var caughtError = null;\n subscribers.forEach(function (subscriber) {\n try {\n subscriber.onInteractionTraced(interaction);\n } catch (error) {\n if (!didCatchError) {\n didCatchError = true;\n caughtError = error;\n }\n }\n });\n\n if (didCatchError) {\n throw caughtError;\n }\n}\n\nfunction onInteractionScheduledWorkCompleted(interaction) {\n var didCatchError = false;\n var caughtError = null;\n subscribers.forEach(function (subscriber) {\n try {\n subscriber.onInteractionScheduledWorkCompleted(interaction);\n } catch (error) {\n if (!didCatchError) {\n didCatchError = true;\n caughtError = error;\n }\n }\n });\n\n if (didCatchError) {\n throw caughtError;\n }\n}\n\nfunction onWorkScheduled(interactions, threadID) {\n var didCatchError = false;\n var caughtError = null;\n subscribers.forEach(function (subscriber) {\n try {\n subscriber.onWorkScheduled(interactions, threadID);\n } catch (error) {\n if (!didCatchError) {\n didCatchError = true;\n caughtError = error;\n }\n }\n });\n\n if (didCatchError) {\n throw caughtError;\n }\n}\n\nfunction onWorkStarted(interactions, threadID) {\n var didCatchError = false;\n var caughtError = null;\n subscribers.forEach(function (subscriber) {\n try {\n subscriber.onWorkStarted(interactions, threadID);\n } catch (error) {\n if (!didCatchError) {\n didCatchError = true;\n caughtError = error;\n }\n }\n });\n\n if (didCatchError) {\n throw caughtError;\n }\n}\n\nfunction onWorkStopped(interactions, threadID) {\n var didCatchError = false;\n var caughtError = null;\n subscribers.forEach(function (subscriber) {\n try {\n subscriber.onWorkStopped(interactions, threadID);\n } catch (error) {\n if (!didCatchError) {\n didCatchError = true;\n caughtError = error;\n }\n }\n });\n\n if (didCatchError) {\n throw caughtError;\n }\n}\n\nfunction onWorkCanceled(interactions, threadID) {\n var didCatchError = false;\n var caughtError = null;\n subscribers.forEach(function (subscriber) {\n try {\n subscriber.onWorkCanceled(interactions, threadID);\n } catch (error) {\n if (!didCatchError) {\n didCatchError = true;\n caughtError = error;\n }\n }\n });\n\n if (didCatchError) {\n throw caughtError;\n }\n}\n\nexports.unstable_clear = unstable_clear;\nexports.unstable_getCurrent = unstable_getCurrent;\nexports.unstable_getThreadID = unstable_getThreadID;\nexports.unstable_subscribe = unstable_subscribe;\nexports.unstable_trace = unstable_trace;\nexports.unstable_unsubscribe = unstable_unsubscribe;\nexports.unstable_wrap = unstable_wrap;\n })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler-tracing.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler-tracing.development.js');\n}\n", "/** @license React v17.0.2\n * react-dom.development.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';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\nvar _assign = require('object-assign');\nvar Scheduler = require('scheduler');\nvar tracing = require('scheduler/tracing');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n}\nfunction error(format) {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n }\n\n var argsWithFormat = args.map(function (item) {\n return '' + item;\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nif (!React) {\n {\n throw Error( \"ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.\" );\n }\n}\n\nvar FunctionComponent = 0;\nvar ClassComponent = 1;\nvar IndeterminateComponent = 2; // Before we know whether it is function or class\n\nvar HostRoot = 3; // Root of a host tree. Could be nested inside another node.\n\nvar HostPortal = 4; // A subtree. Could be an entry point to a different renderer.\n\nvar HostComponent = 5;\nvar HostText = 6;\nvar Fragment = 7;\nvar Mode = 8;\nvar ContextConsumer = 9;\nvar ContextProvider = 10;\nvar ForwardRef = 11;\nvar Profiler = 12;\nvar SuspenseComponent = 13;\nvar MemoComponent = 14;\nvar SimpleMemoComponent = 15;\nvar LazyComponent = 16;\nvar IncompleteClassComponent = 17;\nvar DehydratedFragment = 18;\nvar SuspenseListComponent = 19;\nvar FundamentalComponent = 20;\nvar ScopeComponent = 21;\nvar Block = 22;\nvar OffscreenComponent = 23;\nvar LegacyHiddenComponent = 24;\n\n// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.\n\nvar enableProfilerTimer = true; // Record durations for commit and passive effects phases.\n\nvar enableFundamentalAPI = false; // Experimental Scope support.\nvar enableNewReconciler = false; // Errors that are thrown while unmounting (or after in the case of passive effects)\nvar warnAboutStringRefs = false;\n\nvar allNativeEvents = new Set();\n/**\n * Mapping from registration name to event name\n */\n\n\nvar registrationNameDependencies = {};\n/**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in true.\n * @type {Object}\n */\n\nvar possibleRegistrationNames = {} ; // Trust the developer to only use possibleRegistrationNames in true\n\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + 'Capture', dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n {\n if (registrationNameDependencies[registrationName]) {\n error('EventRegistry: More than one plugin attempted to publish the same ' + 'registration name, `%s`.', registrationName);\n }\n }\n\n registrationNameDependencies[registrationName] = dependencies;\n\n {\n var lowerCasedName = registrationName.toLowerCase();\n possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n\n for (var i = 0; i < dependencies.length; i++) {\n allNativeEvents.add(dependencies[i]);\n }\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nvar RESERVED = 0; // A simple string attribute.\n// Attributes that aren't in the filter are presumed to have this type.\n\nvar STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\n\nvar BOOLEANISH_STRING = 2; // A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n\nvar BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\n\nvar OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\n\nvar NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\n\nvar POSITIVE_NUMERIC = 6;\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = \":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\";\n/* eslint-enable max-len */\n\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\nvar ROOT_ATTRIBUTE_NAME = 'data-reactroot';\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n return true;\n }\n\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n return false;\n }\n\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n\n illegalAttributeNameCache[attributeName] = true;\n\n {\n error('Invalid attribute name: `%s`', attributeName);\n }\n\n return false;\n}\nfunction shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) {\n if (propertyInfo !== null) {\n return propertyInfo.type === RESERVED;\n }\n\n if (isCustomComponentTag) {\n return false;\n }\n\n if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n return true;\n }\n\n return false;\n}\nfunction shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {\n if (propertyInfo !== null && propertyInfo.type === RESERVED) {\n return false;\n }\n\n switch (typeof value) {\n case 'function': // $FlowIssue symbol is perfectly valid here\n\n case 'symbol':\n // eslint-disable-line\n return true;\n\n case 'boolean':\n {\n if (isCustomComponentTag) {\n return false;\n }\n\n if (propertyInfo !== null) {\n return !propertyInfo.acceptsBooleans;\n } else {\n var prefix = name.toLowerCase().slice(0, 5);\n return prefix !== 'data-' && prefix !== 'aria-';\n }\n }\n\n default:\n return false;\n }\n}\nfunction shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) {\n if (value === null || typeof value === 'undefined') {\n return true;\n }\n\n if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) {\n return true;\n }\n\n if (isCustomComponentTag) {\n return false;\n }\n\n if (propertyInfo !== null) {\n\n switch (propertyInfo.type) {\n case BOOLEAN:\n return !value;\n\n case OVERLOADED_BOOLEAN:\n return value === false;\n\n case NUMERIC:\n return isNaN(value);\n\n case POSITIVE_NUMERIC:\n return isNaN(value) || value < 1;\n }\n }\n\n return false;\n}\nfunction getPropertyInfo(name) {\n return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {\n this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n this.attributeName = attributeName;\n this.attributeNamespace = attributeNamespace;\n this.mustUseProperty = mustUseProperty;\n this.propertyName = name;\n this.type = type;\n this.sanitizeURL = sanitizeURL;\n this.removeEmptyString = removeEmptyString;\n} // When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\n\n\nvar properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.\n\nvar reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular\n// elements (not just inputs). Now that ReactDOMInput assigns to the\n// defaultValue property -- do we need this?\n'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];\nreservedProps.forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n\n[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {\n var name = _ref[0],\n attributeName = _ref[1];\n properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n attributeName, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n name.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n\n['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are HTML boolean attributes.\n\n['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM\n// on the client side because the browsers are inconsistent. Instead we call focus().\n'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata\n'itemScope'].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty\n name.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n\n['checked', // Note: `option.selected` is not updated if `select.multiple` is\n// disabled with `removeAttribute`. We have special logic for handling this.\n'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n\n['capture', 'download' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are HTML attributes that must be positive numbers.\n\n['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are HTML attributes that must be numbers.\n\n['rowSpan', 'start'].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty\n name.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n});\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\n\nvar capitalize = function (token) {\n return token[1].toUpperCase();\n}; // This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML attribute filter.\n// Some of these attributes can be hard to find. This list was created by\n// scraping the MDN documentation.\n\n\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' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n var name = attributeName.replace(CAMELIZE, capitalize);\n properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n attributeName, null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // String SVG attributes with the xlink namespace.\n\n['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n var name = attributeName.replace(CAMELIZE, capitalize);\n properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL\n false);\n}); // String SVG attributes with the xml namespace.\n\n['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n var name = attributeName.replace(CAMELIZE, capitalize);\n properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL\n false);\n}); // These attribute exists both in HTML and SVG.\n// The attribute name is case-sensitive in SVG so we can't just use\n// the React name like we do for attributes that exist only in HTML.\n\n['tabIndex', 'crossOrigin'].forEach(function (attributeName) {\n properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n attributeName.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These attributes accept URLs. These must not allow javascript: URLS.\n// These will also need to accept Trusted Types object in the future.\n\nvar xlinkHref = 'xlinkHref';\nproperties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty\n'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL\nfalse);\n['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {\n properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n attributeName.toLowerCase(), // attributeName\n null, // attributeNamespace\n true, // sanitizeURL\n true);\n});\n\n// and any newline or tab are filtered out as if they're not part of the URL.\n// https://url.spec.whatwg.org/#url-parsing\n// Tab or newline are defined as \\r\\n\\t:\n// https://infra.spec.whatwg.org/#ascii-tab-or-newline\n// A C0 control is a code point in the range \\u0000 NULL to \\u001F\n// INFORMATION SEPARATOR ONE, inclusive:\n// https://infra.spec.whatwg.org/#c0-control-or-space\n\n/* eslint-disable max-len */\n\nvar isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*\\:/i;\nvar didWarn = false;\n\nfunction sanitizeURL(url) {\n {\n if (!didWarn && isJavaScriptProtocol.test(url)) {\n didWarn = true;\n\n error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url));\n }\n }\n}\n\n/**\n * Get the value for a property on a node. Only used in DEV for SSR validation.\n * The \"expected\" argument is used as a hint of what the expected value is.\n * Some properties have multiple equivalent values.\n */\nfunction getValueForProperty(node, name, expected, propertyInfo) {\n {\n if (propertyInfo.mustUseProperty) {\n var propertyName = propertyInfo.propertyName;\n return node[propertyName];\n } else {\n if ( propertyInfo.sanitizeURL) {\n // If we haven't fully disabled javascript: URLs, and if\n // the hydration is successful of a javascript: URL, we\n // still want to warn on the client.\n sanitizeURL('' + expected);\n }\n\n var attributeName = propertyInfo.attributeName;\n var stringValue = null;\n\n if (propertyInfo.type === OVERLOADED_BOOLEAN) {\n if (node.hasAttribute(attributeName)) {\n var value = node.getAttribute(attributeName);\n\n if (value === '') {\n return true;\n }\n\n if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n return value;\n }\n\n if (value === '' + expected) {\n return expected;\n }\n\n return value;\n }\n } else if (node.hasAttribute(attributeName)) {\n if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n // We had an attribute but shouldn't have had one, so read it\n // for the error message.\n return node.getAttribute(attributeName);\n }\n\n if (propertyInfo.type === BOOLEAN) {\n // If this was a boolean, it doesn't matter what the value is\n // the fact that we have it is the same as the expected.\n return expected;\n } // Even if this property uses a namespace we use getAttribute\n // because we assume its namespaced name is the same as our config.\n // To use getAttributeNS we need the local name which we don't have\n // in our config atm.\n\n\n stringValue = node.getAttribute(attributeName);\n }\n\n if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n return stringValue === null ? expected : stringValue;\n } else if (stringValue === '' + expected) {\n return expected;\n } else {\n return stringValue;\n }\n }\n }\n}\n/**\n * Get the value for a attribute on a node. Only used in DEV for SSR validation.\n * The third argument is used as a hint of what the expected value is. Some\n * attributes have multiple equivalent values.\n */\n\nfunction getValueForAttribute(node, name, expected) {\n {\n if (!isAttributeNameSafe(name)) {\n return;\n } // If the object is an opaque reference ID, it's expected that\n // the next prop is different than the server value, so just return\n // expected\n\n\n if (isOpaqueHydratingObject(expected)) {\n return expected;\n }\n\n if (!node.hasAttribute(name)) {\n return expected === undefined ? undefined : null;\n }\n\n var value = node.getAttribute(name);\n\n if (value === '' + expected) {\n return expected;\n }\n\n return value;\n }\n}\n/**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n\nfunction setValueForProperty(node, name, value, isCustomComponentTag) {\n var propertyInfo = getPropertyInfo(name);\n\n if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) {\n return;\n }\n\n if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) {\n value = null;\n } // If the prop isn't in the special list, treat it as a simple attribute.\n\n\n if (isCustomComponentTag || propertyInfo === null) {\n if (isAttributeNameSafe(name)) {\n var _attributeName = name;\n\n if (value === null) {\n node.removeAttribute(_attributeName);\n } else {\n node.setAttribute(_attributeName, '' + value);\n }\n }\n\n return;\n }\n\n var mustUseProperty = propertyInfo.mustUseProperty;\n\n if (mustUseProperty) {\n var propertyName = propertyInfo.propertyName;\n\n if (value === null) {\n var type = propertyInfo.type;\n node[propertyName] = type === BOOLEAN ? false : '';\n } else {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyName] = value;\n }\n\n return;\n } // The rest are treated as attributes with special cases.\n\n\n var attributeName = propertyInfo.attributeName,\n attributeNamespace = propertyInfo.attributeNamespace;\n\n if (value === null) {\n node.removeAttribute(attributeName);\n } else {\n var _type = propertyInfo.type;\n var attributeValue;\n\n if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) {\n // If attribute type is boolean, we know for sure it won't be an execution sink\n // and we won't require Trusted Type here.\n attributeValue = '';\n } else {\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n {\n attributeValue = '' + value;\n }\n\n if (propertyInfo.sanitizeURL) {\n sanitizeURL(attributeValue.toString());\n }\n }\n\n if (attributeNamespace) {\n node.setAttributeNS(attributeNamespace, attributeName, attributeValue);\n } else {\n node.setAttribute(attributeName, attributeValue);\n }\n }\n}\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE = 0xeac7;\nvar REACT_PORTAL_TYPE = 0xeaca;\nvar REACT_FRAGMENT_TYPE = 0xeacb;\nvar REACT_STRICT_MODE_TYPE = 0xeacc;\nvar REACT_PROFILER_TYPE = 0xead2;\nvar REACT_PROVIDER_TYPE = 0xeacd;\nvar REACT_CONTEXT_TYPE = 0xeace;\nvar REACT_FORWARD_REF_TYPE = 0xead0;\nvar REACT_SUSPENSE_TYPE = 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = 0xead8;\nvar REACT_MEMO_TYPE = 0xead3;\nvar REACT_LAZY_TYPE = 0xead4;\nvar REACT_BLOCK_TYPE = 0xead9;\nvar REACT_SERVER_BLOCK_TYPE = 0xeada;\nvar REACT_FUNDAMENTAL_TYPE = 0xead5;\nvar REACT_SCOPE_TYPE = 0xead7;\nvar REACT_OPAQUE_ID_TYPE = 0xeae0;\nvar REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;\nvar REACT_OFFSCREEN_TYPE = 0xeae2;\nvar REACT_LEGACY_HIDDEN_TYPE = 0xeae3;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n var symbolFor = Symbol.for;\n REACT_ELEMENT_TYPE = symbolFor('react.element');\n REACT_PORTAL_TYPE = symbolFor('react.portal');\n REACT_FRAGMENT_TYPE = symbolFor('react.fragment');\n REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode');\n REACT_PROFILER_TYPE = symbolFor('react.profiler');\n REACT_PROVIDER_TYPE = symbolFor('react.provider');\n REACT_CONTEXT_TYPE = symbolFor('react.context');\n REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');\n REACT_SUSPENSE_TYPE = symbolFor('react.suspense');\n REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');\n REACT_MEMO_TYPE = symbolFor('react.memo');\n REACT_LAZY_TYPE = symbolFor('react.lazy');\n REACT_BLOCK_TYPE = symbolFor('react.block');\n REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');\n REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');\n REACT_SCOPE_TYPE = symbolFor('react.scope');\n REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');\n REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');\n REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');\n REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');\n}\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: _assign({}, props, {\n value: prevLog\n }),\n info: _assign({}, props, {\n value: prevInfo\n }),\n warn: _assign({}, props, {\n value: prevWarn\n }),\n error: _assign({}, props, {\n value: prevError\n }),\n group: _assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: _assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: _assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if (!fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at ');\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\n\nfunction describeClassComponentFrame(ctor, source, ownerFn) {\n {\n return describeNativeComponentFrame(ctor, true);\n }\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_BLOCK_TYPE:\n return describeFunctionComponentFrame(type._render);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nfunction describeFiber(fiber) {\n var owner = fiber._debugOwner ? fiber._debugOwner.type : null ;\n var source = fiber._debugSource ;\n\n switch (fiber.tag) {\n case HostComponent:\n return describeBuiltInComponentFrame(fiber.type);\n\n case LazyComponent:\n return describeBuiltInComponentFrame('Lazy');\n\n case SuspenseComponent:\n return describeBuiltInComponentFrame('Suspense');\n\n case SuspenseListComponent:\n return describeBuiltInComponentFrame('SuspenseList');\n\n case FunctionComponent:\n case IndeterminateComponent:\n case SimpleMemoComponent:\n return describeFunctionComponentFrame(fiber.type);\n\n case ForwardRef:\n return describeFunctionComponentFrame(fiber.type.render);\n\n case Block:\n return describeFunctionComponentFrame(fiber.type._render);\n\n case ClassComponent:\n return describeClassComponentFrame(fiber.type);\n\n default:\n return '';\n }\n}\n\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = '';\n var node = workInProgress;\n\n do {\n info += describeFiber(node);\n node = node.return;\n } while (node);\n\n return info;\n } catch (x) {\n return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var functionName = innerType.displayName || innerType.name || '';\n return outerType.displayName || (functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n}\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n}\n\nfunction getComponentName(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n return getComponentName(type.type);\n\n case REACT_BLOCK_TYPE:\n return getComponentName(type._render);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentName(init(payload));\n } catch (x) {\n return null;\n }\n }\n }\n }\n\n return null;\n}\n\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\nvar current = null;\nvar isRendering = false;\nfunction getCurrentFiberOwnerNameInDevOrNull() {\n {\n if (current === null) {\n return null;\n }\n\n var owner = current._debugOwner;\n\n if (owner !== null && typeof owner !== 'undefined') {\n return getComponentName(owner.type);\n }\n }\n\n return null;\n}\n\nfunction getCurrentFiberStackInDev() {\n {\n if (current === null) {\n return '';\n } // Safe because if current fiber exists, we are reconciling,\n // and it is guaranteed to be the work-in-progress version.\n\n\n return getStackByFiberInDevAndProd(current);\n }\n}\n\nfunction resetCurrentFiber() {\n {\n ReactDebugCurrentFrame.getCurrentStack = null;\n current = null;\n isRendering = false;\n }\n}\nfunction setCurrentFiber(fiber) {\n {\n ReactDebugCurrentFrame.getCurrentStack = getCurrentFiberStackInDev;\n current = fiber;\n isRendering = false;\n }\n}\nfunction setIsRendering(rendering) {\n {\n isRendering = rendering;\n }\n}\nfunction getIsRendering() {\n {\n return isRendering;\n }\n}\n\n// Flow does not allow string concatenation of most non-string types. To work\n// around this limitation, we use an opaque type that can only be obtained by\n// passing the value through getToStringValue first.\nfunction toString(value) {\n return '' + value;\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n case 'object':\n case 'string':\n case 'undefined':\n return value;\n\n default:\n // function, symbol are assigned as empty strings\n return '';\n }\n}\n\nvar hasReadOnlyValue = {\n button: true,\n checkbox: true,\n image: true,\n hidden: true,\n radio: true,\n reset: true,\n submit: true\n};\nfunction checkControlledValueProps(tagName, props) {\n {\n if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {\n error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n }\n\n if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {\n error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n }\n }\n}\n\nfunction isCheckable(elem) {\n var type = elem.type;\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(node) {\n return node._valueTracker;\n}\n\nfunction detachTracker(node) {\n node._valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n var value = '';\n\n if (!node) {\n return value;\n }\n\n if (isCheckable(node)) {\n value = node.checked ? 'true' : 'false';\n } else {\n value = node.value;\n }\n\n return value;\n}\n\nfunction trackValueOnNode(node) {\n var valueField = isCheckable(node) ? 'checked' : 'value';\n var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n var currentValue = '' + node[valueField]; // if someone has already defined a value or Safari, then bail\n // and don't track value will cause over reporting of changes,\n // but it's better then a hard failure\n // (needed for certain tests that spyOn input values and Safari)\n\n if (node.hasOwnProperty(valueField) || typeof descriptor === 'undefined' || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n return;\n }\n\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: true,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = '' + value;\n set.call(this, value);\n }\n }); // We could've passed this the first time\n // but it triggers a bug in IE11 and Edge 14/15.\n // Calling defineProperty() again should be equivalent.\n // https://github.com/facebook/react/issues/11768\n\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n var tracker = {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = '' + value;\n },\n stopTracking: function () {\n detachTracker(node);\n delete node[valueField];\n }\n };\n return tracker;\n}\n\nfunction track(node) {\n if (getTracker(node)) {\n return;\n } // TODO: Once it's just Fiber we can move this to node._wrapperState\n\n\n node._valueTracker = trackValueOnNode(node);\n}\nfunction updateValueIfChanged(node) {\n if (!node) {\n return false;\n }\n\n var tracker = getTracker(node); // if there is no tracker at this point it's unlikely\n // that trying again will succeed\n\n if (!tracker) {\n return true;\n }\n\n var lastValue = tracker.getValue();\n var nextValue = getValueFromNode(node);\n\n if (nextValue !== lastValue) {\n tracker.setValue(nextValue);\n return true;\n }\n\n return false;\n}\n\nfunction getActiveElement(doc) {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n if (typeof doc === 'undefined') {\n return null;\n }\n\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\n\n\nfunction getHostProps(element, props) {\n var node = element;\n var checked = props.checked;\n\n var hostProps = _assign({}, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: undefined,\n checked: checked != null ? checked : node._wrapperState.initialChecked\n });\n\n return hostProps;\n}\nfunction initWrapperState(element, props) {\n {\n checkControlledValueProps('input', props);\n\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n error('%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);\n\n didWarnCheckedDefaultChecked = true;\n }\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n error('%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);\n\n didWarnValueDefaultValue = true;\n }\n }\n\n var node = element;\n var defaultValue = props.defaultValue == null ? '' : props.defaultValue;\n node._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: getToStringValue(props.value != null ? props.value : defaultValue),\n controlled: isControlled(props)\n };\n}\nfunction updateChecked(element, props) {\n var node = element;\n var checked = props.checked;\n\n if (checked != null) {\n setValueForProperty(node, 'checked', checked, false);\n }\n}\nfunction updateWrapper(element, props) {\n var node = element;\n\n {\n var controlled = isControlled(props);\n\n if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n error('A component is changing an uncontrolled input to be controlled. ' + 'This is likely caused by the value changing from undefined to ' + 'a defined value, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');\n\n didWarnUncontrolledToControlled = true;\n }\n\n if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n error('A component is changing a controlled input to be uncontrolled. ' + 'This is likely caused by the value changing from a defined to ' + 'undefined, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');\n\n didWarnControlledToUncontrolled = true;\n }\n }\n\n updateChecked(element, props);\n var value = getToStringValue(props.value);\n var type = props.type;\n\n if (value != null) {\n if (type === 'number') {\n if (value === 0 && node.value === '' || // We explicitly want to coerce to number here if possible.\n // eslint-disable-next-line\n node.value != value) {\n node.value = toString(value);\n }\n } else if (node.value !== toString(value)) {\n node.value = toString(value);\n }\n } else if (type === 'submit' || type === 'reset') {\n // Submit/reset inputs need the attribute removed completely to avoid\n // blank-text buttons.\n node.removeAttribute('value');\n return;\n }\n\n {\n // When syncing the value attribute, the value comes from a cascade of\n // properties:\n // 1. The value React property\n // 2. The defaultValue React property\n // 3. Otherwise there should be no change\n if (props.hasOwnProperty('value')) {\n setDefaultValue(node, props.type, value);\n } else if (props.hasOwnProperty('defaultValue')) {\n setDefaultValue(node, props.type, getToStringValue(props.defaultValue));\n }\n }\n\n {\n // When syncing the checked attribute, it only changes when it needs\n // to be removed, such as transitioning from a checkbox into a text input\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n}\nfunction postMountWrapper(element, props, isHydrating) {\n var node = element; // Do not assign value if it is already set. This prevents user text input\n // from being lost during SSR hydration.\n\n if (props.hasOwnProperty('value') || props.hasOwnProperty('defaultValue')) {\n var type = props.type;\n var isButton = type === 'submit' || type === 'reset'; // Avoid setting value attribute on submit/reset inputs as it overrides the\n // default value provided by the browser. See: #12872\n\n if (isButton && (props.value === undefined || props.value === null)) {\n return;\n }\n\n var initialValue = toString(node._wrapperState.initialValue); // Do not assign value if it is already set. This prevents user text input\n // from being lost during SSR hydration.\n\n if (!isHydrating) {\n {\n // When syncing the value attribute, the value property should use\n // the wrapperState._initialValue property. This uses:\n //\n // 1. The value React property when present\n // 2. The defaultValue React property when present\n // 3. An empty string\n if (initialValue !== node.value) {\n node.value = initialValue;\n }\n }\n }\n\n {\n // Otherwise, the value attribute is synchronized to the property,\n // so we assign defaultValue to the same thing as the value property\n // assignment step above.\n node.defaultValue = initialValue;\n }\n } // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n\n\n var name = node.name;\n\n if (name !== '') {\n node.name = '';\n }\n\n {\n // When syncing the checked attribute, both the checked property and\n // attribute are assigned at the same time using defaultChecked. This uses:\n //\n // 1. The checked React property when present\n // 2. The defaultChecked React property when present\n // 3. Otherwise, false\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !!node._wrapperState.initialChecked;\n }\n\n if (name !== '') {\n node.name = name;\n }\n}\nfunction restoreControlledState(element, props) {\n var node = element;\n updateWrapper(node, props);\n updateNamedCousins(node, props);\n}\n\nfunction updateNamedCousins(rootNode, props) {\n var name = props.name;\n\n if (props.type === 'radio' && name != null) {\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n } // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form. It might not even be in the\n // document. Let's just use the local `querySelectorAll` to ensure we don't\n // miss anything.\n\n\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n } // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n\n\n var otherProps = getFiberCurrentPropsFromNode(otherNode);\n\n if (!otherProps) {\n {\n throw Error( \"ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.\" );\n }\n } // We need update the tracked value on the named cousin since the value\n // was changed but the input saw no event or value set\n\n\n updateValueIfChanged(otherNode); // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n\n updateWrapper(otherNode, otherProps);\n }\n }\n} // In Chrome, assigning defaultValue to certain input types triggers input validation.\n// For number inputs, the display value loses trailing decimal points. For email inputs,\n// Chrome raises \"The specified value <x> is not a valid email address\".\n//\n// Here we check to see if the defaultValue has actually changed, avoiding these problems\n// when the user is inputting text\n//\n// https://github.com/facebook/react/issues/7253\n\n\nfunction setDefaultValue(node, type, value) {\n if ( // Focused number inputs synchronize on blur. See ChangeEventPlugin.js\n type !== 'number' || getActiveElement(node.ownerDocument) !== node) {\n if (value == null) {\n node.defaultValue = toString(node._wrapperState.initialValue);\n } else if (node.defaultValue !== toString(value)) {\n node.defaultValue = toString(value);\n }\n }\n}\n\nvar didWarnSelectedSetOnOption = false;\nvar didWarnInvalidChild = false;\n\nfunction flattenChildren(children) {\n var content = ''; // Flatten children. We'll warn if they are invalid\n // during validateProps() which runs for hydration too.\n // Note that this would throw on non-element objects.\n // Elements are stringified (which is normally irrelevant\n // but matters for <fbt>).\n\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n\n content += child; // Note: we don't warn about invalid children here.\n // Instead, this is done separately below so that\n // it happens during the hydration code path too.\n });\n return content;\n}\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\n\n\nfunction validateProps(element, props) {\n {\n // This mirrors the code path above, but runs for hydration too.\n // Warn about invalid children here so that client and hydration are consistent.\n // TODO: this seems like it could cause a DEV-only throw for hydration\n // if children contains a non-element object. We should try to avoid that.\n if (typeof props.children === 'object' && props.children !== null) {\n React.Children.forEach(props.children, function (child) {\n if (child == null) {\n return;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n return;\n }\n\n if (typeof child.type !== 'string') {\n return;\n }\n\n if (!didWarnInvalidChild) {\n didWarnInvalidChild = true;\n\n error('Only strings and numbers are supported as <option> children.');\n }\n });\n } // TODO: Remove support for `selected` in <option>.\n\n\n if (props.selected != null && !didWarnSelectedSetOnOption) {\n error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n\n didWarnSelectedSetOnOption = true;\n }\n }\n}\nfunction postMountWrapper$1(element, props) {\n // value=\"\" should make a value attribute (#6219)\n if (props.value != null) {\n element.setAttribute('value', toString(getToStringValue(props.value)));\n }\n}\nfunction getHostProps$1(element, props) {\n var hostProps = _assign({\n children: undefined\n }, props);\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n}\n\nvar didWarnValueDefaultValue$1;\n\n{\n didWarnValueDefaultValue$1 = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n\n if (ownerName) {\n return '\\n\\nCheck the render method of `' + ownerName + '`.';\n }\n\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n/**\n * Validation function for `value` and `defaultValue`.\n */\n\nfunction checkSelectPropTypes(props) {\n {\n checkControlledValueProps('select', props);\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n\n if (props[propName] == null) {\n continue;\n }\n\n var isArray = Array.isArray(props[propName]);\n\n if (props.multiple && !isArray) {\n error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());\n } else if (!props.multiple && isArray) {\n error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());\n }\n }\n }\n}\n\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n var options = node.options;\n\n if (multiple) {\n var selectedValues = propValue;\n var selectedValue = {};\n\n for (var i = 0; i < selectedValues.length; i++) {\n // Prefix to avoid chaos with special keys.\n selectedValue['$' + selectedValues[i]] = true;\n }\n\n for (var _i = 0; _i < options.length; _i++) {\n var selected = selectedValue.hasOwnProperty('$' + options[_i].value);\n\n if (options[_i].selected !== selected) {\n options[_i].selected = selected;\n }\n\n if (selected && setDefaultSelected) {\n options[_i].defaultSelected = true;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n var _selectedValue = toString(getToStringValue(propValue));\n\n var defaultSelected = null;\n\n for (var _i2 = 0; _i2 < options.length; _i2++) {\n if (options[_i2].value === _selectedValue) {\n options[_i2].selected = true;\n\n if (setDefaultSelected) {\n options[_i2].defaultSelected = true;\n }\n\n return;\n }\n\n if (defaultSelected === null && !options[_i2].disabled) {\n defaultSelected = options[_i2];\n }\n }\n\n if (defaultSelected !== null) {\n defaultSelected.selected = true;\n }\n }\n}\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\n\n\nfunction getHostProps$2(element, props) {\n return _assign({}, props, {\n value: undefined\n });\n}\nfunction initWrapperState$1(element, props) {\n var node = element;\n\n {\n checkSelectPropTypes(props);\n }\n\n node._wrapperState = {\n wasMultiple: !!props.multiple\n };\n\n {\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) {\n error('Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components');\n\n didWarnValueDefaultValue$1 = true;\n }\n }\n}\nfunction postMountWrapper$2(element, props) {\n var node = element;\n node.multiple = !!props.multiple;\n var value = props.value;\n\n if (value != null) {\n updateOptions(node, !!props.multiple, value, false);\n } else if (props.defaultValue != null) {\n updateOptions(node, !!props.multiple, props.defaultValue, true);\n }\n}\nfunction postUpdateWrapper(element, props) {\n var node = element;\n var wasMultiple = node._wrapperState.wasMultiple;\n node._wrapperState.wasMultiple = !!props.multiple;\n var value = props.value;\n\n if (value != null) {\n updateOptions(node, !!props.multiple, value, false);\n } else if (wasMultiple !== !!props.multiple) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(node, !!props.multiple, props.defaultValue, true);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(node, !!props.multiple, props.multiple ? [] : '', false);\n }\n }\n}\nfunction restoreControlledState$1(element, props) {\n var node = element;\n var value = props.value;\n\n if (value != null) {\n updateOptions(node, !!props.multiple, value, false);\n }\n}\n\nvar didWarnValDefaultVal = false;\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nfunction getHostProps$3(element, props) {\n var node = element;\n\n if (!(props.dangerouslySetInnerHTML == null)) {\n {\n throw Error( \"`dangerouslySetInnerHTML` does not make sense on <textarea>.\" );\n }\n } // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Sophie seemed to like this\n // solution. The value can be a boolean or object so that's why it's forced\n // to be a string.\n\n\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: toString(node._wrapperState.initialValue)\n });\n\n return hostProps;\n}\nfunction initWrapperState$2(element, props) {\n var node = element;\n\n {\n checkControlledValueProps('textarea', props);\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n error('%s contains a textarea with both value and defaultValue props. ' + 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component');\n\n didWarnValDefaultVal = true;\n }\n }\n\n var initialValue = props.value; // Only bother fetching default value if we're going to use it\n\n if (initialValue == null) {\n var children = props.children,\n defaultValue = props.defaultValue;\n\n if (children != null) {\n {\n error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n }\n\n {\n if (!(defaultValue == null)) {\n {\n throw Error( \"If you supply `defaultValue` on a <textarea>, do not pass children.\" );\n }\n }\n\n if (Array.isArray(children)) {\n if (!(children.length <= 1)) {\n {\n throw Error( \"<textarea> can only have at most one child.\" );\n }\n }\n\n children = children[0];\n }\n\n defaultValue = children;\n }\n }\n\n if (defaultValue == null) {\n defaultValue = '';\n }\n\n initialValue = defaultValue;\n }\n\n node._wrapperState = {\n initialValue: getToStringValue(initialValue)\n };\n}\nfunction updateWrapper$1(element, props) {\n var node = element;\n var value = getToStringValue(props.value);\n var defaultValue = getToStringValue(props.defaultValue);\n\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = toString(value); // To avoid side effects (such as losing text selection), only set value if changed\n\n if (newValue !== node.value) {\n node.value = newValue;\n }\n\n if (props.defaultValue == null && node.defaultValue !== newValue) {\n node.defaultValue = newValue;\n }\n }\n\n if (defaultValue != null) {\n node.defaultValue = toString(defaultValue);\n }\n}\nfunction postMountWrapper$3(element, props) {\n var node = element; // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n\n var textContent = node.textContent; // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n\n if (textContent === node._wrapperState.initialValue) {\n if (textContent !== '' && textContent !== null) {\n node.value = textContent;\n }\n }\n}\nfunction restoreControlledState$2(element, props) {\n // DOM component is still mounted; update\n updateWrapper$1(element, props);\n}\n\nvar HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nvar MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nvar Namespaces = {\n html: HTML_NAMESPACE,\n mathml: MATH_NAMESPACE,\n svg: SVG_NAMESPACE\n}; // Assumes there is no parent namespace.\n\nfunction getIntrinsicNamespace(type) {\n switch (type) {\n case 'svg':\n return SVG_NAMESPACE;\n\n case 'math':\n return MATH_NAMESPACE;\n\n default:\n return HTML_NAMESPACE;\n }\n}\nfunction getChildNamespace(parentNamespace, type) {\n if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {\n // No (or default) parent namespace: potential entry point.\n return getIntrinsicNamespace(type);\n }\n\n if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') {\n // We're leaving SVG.\n return HTML_NAMESPACE;\n } // By default, pass namespace below.\n\n\n return parentNamespace;\n}\n\n/* globals MSApp */\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nvar reusableSVGContainer;\n/**\n * Set the innerHTML property of a node\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\n\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n if (node.namespaceURI === Namespaces.svg) {\n\n if (!('innerHTML' in node)) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html.valueOf().toString() + '</svg>';\n var svgNode = reusableSVGContainer.firstChild;\n\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n\n return;\n }\n }\n\n node.innerHTML = html;\n});\n\n/**\n * HTML nodeType values that represent the type of the node\n */\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\n\n/**\n * Set the textContent property of a node. For text updates, it's faster\n * to set the `nodeValue` of the Text node directly instead of using\n * `.textContent` which will remove the existing node and create a new one.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\n\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {\n firstChild.nodeValue = text;\n return;\n }\n }\n\n node.textContent = text;\n};\n\n// List derived from Gecko source code:\n// https://github.com/mozilla/gecko-dev/blob/4e638efc71/layout/style/test/property_database.js\nvar shorthandToLonghand = {\n animation: ['animationDelay', 'animationDirection', 'animationDuration', 'animationFillMode', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction'],\n background: ['backgroundAttachment', 'backgroundClip', 'backgroundColor', 'backgroundImage', 'backgroundOrigin', 'backgroundPositionX', 'backgroundPositionY', 'backgroundRepeat', 'backgroundSize'],\n backgroundPosition: ['backgroundPositionX', 'backgroundPositionY'],\n border: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth', 'borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth', 'borderLeftColor', 'borderLeftStyle', 'borderLeftWidth', 'borderRightColor', 'borderRightStyle', 'borderRightWidth', 'borderTopColor', 'borderTopStyle', 'borderTopWidth'],\n borderBlockEnd: ['borderBlockEndColor', 'borderBlockEndStyle', 'borderBlockEndWidth'],\n borderBlockStart: ['borderBlockStartColor', 'borderBlockStartStyle', 'borderBlockStartWidth'],\n borderBottom: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth'],\n borderColor: ['borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor'],\n borderImage: ['borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth'],\n borderInlineEnd: ['borderInlineEndColor', 'borderInlineEndStyle', 'borderInlineEndWidth'],\n borderInlineStart: ['borderInlineStartColor', 'borderInlineStartStyle', 'borderInlineStartWidth'],\n borderLeft: ['borderLeftColor', 'borderLeftStyle', 'borderLeftWidth'],\n borderRadius: ['borderBottomLeftRadius', 'borderBottomRightRadius', 'borderTopLeftRadius', 'borderTopRightRadius'],\n borderRight: ['borderRightColor', 'borderRightStyle', 'borderRightWidth'],\n borderStyle: ['borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle'],\n borderTop: ['borderTopColor', 'borderTopStyle', 'borderTopWidth'],\n borderWidth: ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth'],\n columnRule: ['columnRuleColor', 'columnRuleStyle', 'columnRuleWidth'],\n columns: ['columnCount', 'columnWidth'],\n flex: ['flexBasis', 'flexGrow', 'flexShrink'],\n flexFlow: ['flexDirection', 'flexWrap'],\n font: ['fontFamily', 'fontFeatureSettings', 'fontKerning', 'fontLanguageOverride', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition', 'fontWeight', 'lineHeight'],\n fontVariant: ['fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition'],\n gap: ['columnGap', 'rowGap'],\n grid: ['gridAutoColumns', 'gridAutoFlow', 'gridAutoRows', 'gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],\n gridArea: ['gridColumnEnd', 'gridColumnStart', 'gridRowEnd', 'gridRowStart'],\n gridColumn: ['gridColumnEnd', 'gridColumnStart'],\n gridColumnGap: ['columnGap'],\n gridGap: ['columnGap', 'rowGap'],\n gridRow: ['gridRowEnd', 'gridRowStart'],\n gridRowGap: ['rowGap'],\n gridTemplate: ['gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],\n listStyle: ['listStyleImage', 'listStylePosition', 'listStyleType'],\n margin: ['marginBottom', 'marginLeft', 'marginRight', 'marginTop'],\n marker: ['markerEnd', 'markerMid', 'markerStart'],\n mask: ['maskClip', 'maskComposite', 'maskImage', 'maskMode', 'maskOrigin', 'maskPositionX', 'maskPositionY', 'maskRepeat', 'maskSize'],\n maskPosition: ['maskPositionX', 'maskPositionY'],\n outline: ['outlineColor', 'outlineStyle', 'outlineWidth'],\n overflow: ['overflowX', 'overflowY'],\n padding: ['paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop'],\n placeContent: ['alignContent', 'justifyContent'],\n placeItems: ['alignItems', 'justifyItems'],\n placeSelf: ['alignSelf', 'justifySelf'],\n textDecoration: ['textDecorationColor', 'textDecorationLine', 'textDecorationStyle'],\n textEmphasis: ['textEmphasisColor', 'textEmphasisStyle'],\n transition: ['transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction'],\n wordWrap: ['overflowWrap']\n};\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridArea: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\n\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\n\n\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\n\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n\n if (isEmpty) {\n return '';\n }\n\n if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {\n return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n }\n\n return ('' + value).trim();\n}\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\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\nfunction hyphenateStyleName(name) {\n return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');\n}\n\nvar warnValidStyle = function () {};\n\n{\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n var msPattern$1 = /^-ms-/;\n var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon\n\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n var warnedForInfinityValue = false;\n\n var camelize = function (string) {\n return string.replace(hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n };\n\n var warnHyphenatedStyleName = function (name) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n\n error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests\n // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n // is converted to lowercase `ms`.\n camelize(name.replace(msPattern$1, 'ms-')));\n };\n\n var warnBadVendoredStyleName = function (name) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n\n error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1));\n };\n\n var warnStyleValueWithSemicolon = function (name, value) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n\n error(\"Style property values shouldn't contain a semicolon. \" + 'Try \"%s: %s\" instead.', name, value.replace(badStyleValueWithSemicolonPattern, ''));\n };\n\n var warnStyleValueIsNaN = function (name, value) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n\n error('`NaN` is an invalid value for the `%s` css style property.', name);\n };\n\n var warnStyleValueIsInfinity = function (name, value) {\n if (warnedForInfinityValue) {\n return;\n }\n\n warnedForInfinityValue = true;\n\n error('`Infinity` is an invalid value for the `%s` css style property.', name);\n };\n\n warnValidStyle = function (name, value) {\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value);\n }\n\n if (typeof value === 'number') {\n if (isNaN(value)) {\n warnStyleValueIsNaN(name, value);\n } else if (!isFinite(value)) {\n warnStyleValueIsInfinity(name, value);\n }\n }\n };\n}\n\nvar warnValidStyle$1 = warnValidStyle;\n\n/**\n * Operations for dealing with CSS properties.\n */\n\n/**\n * This creates a string that is expected to be equivalent to the style\n * attribute generated by server-side rendering. It by-passes warnings and\n * security checks so it's not safe to use this value for anything other than\n * comparison. It is only used in DEV for SSR validation.\n */\n\nfunction createDangerousStringForStyles(styles) {\n {\n var serialized = '';\n var delimiter = '';\n\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n\n var styleValue = styles[styleName];\n\n if (styleValue != null) {\n var isCustomProperty = styleName.indexOf('--') === 0;\n serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);\n delimiter = ';';\n }\n }\n\n return serialized || null;\n }\n}\n/**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n\nfunction setValueForStyles(node, styles) {\n var style = node.style;\n\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n\n var isCustomProperty = styleName.indexOf('--') === 0;\n\n {\n if (!isCustomProperty) {\n warnValidStyle$1(styleName, styles[styleName]);\n }\n }\n\n var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);\n\n if (styleName === 'float') {\n styleName = 'cssFloat';\n }\n\n if (isCustomProperty) {\n style.setProperty(styleName, styleValue);\n } else {\n style[styleName] = styleValue;\n }\n }\n}\n\nfunction isValueEmpty(value) {\n return value == null || typeof value === 'boolean' || value === '';\n}\n/**\n * Given {color: 'red', overflow: 'hidden'} returns {\n * color: 'color',\n * overflowX: 'overflow',\n * overflowY: 'overflow',\n * }. This can be read as \"the overflowY property was set by the overflow\n * shorthand\". That is, the values are the property that each was derived from.\n */\n\n\nfunction expandShorthandMap(styles) {\n var expanded = {};\n\n for (var key in styles) {\n var longhands = shorthandToLonghand[key] || [key];\n\n for (var i = 0; i < longhands.length; i++) {\n expanded[longhands[i]] = key;\n }\n }\n\n return expanded;\n}\n/**\n * When mixing shorthand and longhand property names, we warn during updates if\n * we expect an incorrect result to occur. In particular, we warn for:\n *\n * Updating a shorthand property (longhand gets overwritten):\n * {font: 'foo', fontVariant: 'bar'} -> {font: 'baz', fontVariant: 'bar'}\n * becomes .style.font = 'baz'\n * Removing a shorthand property (longhand gets lost too):\n * {font: 'foo', fontVariant: 'bar'} -> {fontVariant: 'bar'}\n * becomes .style.font = ''\n * Removing a longhand property (should revert to shorthand; doesn't):\n * {font: 'foo', fontVariant: 'bar'} -> {font: 'foo'}\n * becomes .style.fontVariant = ''\n */\n\n\nfunction validateShorthandPropertyCollisionInDev(styleUpdates, nextStyles) {\n {\n if (!nextStyles) {\n return;\n }\n\n var expandedUpdates = expandShorthandMap(styleUpdates);\n var expandedStyles = expandShorthandMap(nextStyles);\n var warnedAbout = {};\n\n for (var key in expandedUpdates) {\n var originalKey = expandedUpdates[key];\n var correctOriginalKey = expandedStyles[key];\n\n if (correctOriginalKey && originalKey !== correctOriginalKey) {\n var warningKey = originalKey + ',' + correctOriginalKey;\n\n if (warnedAbout[warningKey]) {\n continue;\n }\n\n warnedAbout[warningKey] = true;\n\n error('%s a style property during rerender (%s) when a ' + 'conflicting property is set (%s) can lead to styling bugs. To ' + \"avoid this, don't mix shorthand and non-shorthand properties \" + 'for the same value; instead, replace the shorthand with ' + 'separate values.', isValueEmpty(styleUpdates[originalKey]) ? 'Removing' : 'Updating', originalKey, correctOriginalKey);\n }\n }\n }\n}\n\n// For HTML, certain tags should omit their close tag. We keep a list for\n// those special-case tags.\nvar omittedCloseTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true // NOTE: menuitem's close tag should be omitted, but that causes problems.\n\n};\n\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n menuitem: true\n}, omittedCloseTags);\n\nvar HTML = '__html';\n\nfunction assertValidProps(tag, props) {\n if (!props) {\n return;\n } // Note the use of `==` which checks for null or undefined.\n\n\n if (voidElementTags[tag]) {\n if (!(props.children == null && props.dangerouslySetInnerHTML == null)) {\n {\n throw Error( tag + \" is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\" );\n }\n }\n }\n\n if (props.dangerouslySetInnerHTML != null) {\n if (!(props.children == null)) {\n {\n throw Error( \"Can only set one of `children` or `props.dangerouslySetInnerHTML`.\" );\n }\n }\n\n if (!(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML)) {\n {\n throw Error( \"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://reactjs.org/link/dangerously-set-inner-html for more information.\" );\n }\n }\n }\n\n {\n if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {\n error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.');\n }\n }\n\n if (!(props.style == null || typeof props.style === 'object')) {\n {\n throw Error( \"The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.\" );\n }\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n if (tagName.indexOf('-') === -1) {\n return typeof props.is === 'string';\n }\n\n switch (tagName) {\n // These are reserved SVG and MathML elements.\n // We don't mind this list too much because we expect it to never grow.\n // The alternative is to track the namespace in a few places which is convoluted.\n // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n case 'annotation-xml':\n case 'color-profile':\n case 'font-face':\n case 'font-face-src':\n case 'font-face-uri':\n case 'font-face-format':\n case 'font-face-name':\n case 'missing-glyph':\n return false;\n\n default:\n return true;\n }\n}\n\n// When adding attributes to the HTML or SVG allowed attribute list, be sure to\n// also add them to this module to ensure casing and incorrect name\n// warnings.\nvar possibleStandardNames = {\n // HTML\n accept: 'accept',\n acceptcharset: 'acceptCharset',\n 'accept-charset': 'acceptCharset',\n accesskey: 'accessKey',\n action: 'action',\n allowfullscreen: 'allowFullScreen',\n alt: 'alt',\n as: 'as',\n async: 'async',\n autocapitalize: 'autoCapitalize',\n autocomplete: 'autoComplete',\n autocorrect: 'autoCorrect',\n autofocus: 'autoFocus',\n autoplay: 'autoPlay',\n autosave: 'autoSave',\n capture: 'capture',\n cellpadding: 'cellPadding',\n cellspacing: 'cellSpacing',\n challenge: 'challenge',\n charset: 'charSet',\n checked: 'checked',\n children: 'children',\n cite: 'cite',\n class: 'className',\n classid: 'classID',\n classname: 'className',\n cols: 'cols',\n colspan: 'colSpan',\n content: 'content',\n contenteditable: 'contentEditable',\n contextmenu: 'contextMenu',\n controls: 'controls',\n controlslist: 'controlsList',\n coords: 'coords',\n crossorigin: 'crossOrigin',\n dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n data: 'data',\n datetime: 'dateTime',\n default: 'default',\n defaultchecked: 'defaultChecked',\n defaultvalue: 'defaultValue',\n defer: 'defer',\n dir: 'dir',\n disabled: 'disabled',\n disablepictureinpicture: 'disablePictureInPicture',\n disableremoteplayback: 'disableRemotePlayback',\n download: 'download',\n draggable: 'draggable',\n enctype: 'encType',\n enterkeyhint: 'enterKeyHint',\n for: 'htmlFor',\n form: 'form',\n formmethod: 'formMethod',\n formaction: 'formAction',\n formenctype: 'formEncType',\n formnovalidate: 'formNoValidate',\n formtarget: 'formTarget',\n frameborder: 'frameBorder',\n headers: 'headers',\n height: 'height',\n hidden: 'hidden',\n high: 'high',\n href: 'href',\n hreflang: 'hrefLang',\n htmlfor: 'htmlFor',\n httpequiv: 'httpEquiv',\n 'http-equiv': 'httpEquiv',\n icon: 'icon',\n id: 'id',\n innerhtml: 'innerHTML',\n inputmode: 'inputMode',\n integrity: 'integrity',\n is: 'is',\n itemid: 'itemID',\n itemprop: 'itemProp',\n itemref: 'itemRef',\n itemscope: 'itemScope',\n itemtype: 'itemType',\n keyparams: 'keyParams',\n keytype: 'keyType',\n kind: 'kind',\n label: 'label',\n lang: 'lang',\n list: 'list',\n loop: 'loop',\n low: 'low',\n manifest: 'manifest',\n marginwidth: 'marginWidth',\n marginheight: 'marginHeight',\n max: 'max',\n maxlength: 'maxLength',\n media: 'media',\n mediagroup: 'mediaGroup',\n method: 'method',\n min: 'min',\n minlength: 'minLength',\n multiple: 'multiple',\n muted: 'muted',\n name: 'name',\n nomodule: 'noModule',\n nonce: 'nonce',\n novalidate: 'noValidate',\n open: 'open',\n optimum: 'optimum',\n pattern: 'pattern',\n placeholder: 'placeholder',\n playsinline: 'playsInline',\n poster: 'poster',\n preload: 'preload',\n profile: 'profile',\n radiogroup: 'radioGroup',\n readonly: 'readOnly',\n referrerpolicy: 'referrerPolicy',\n rel: 'rel',\n required: 'required',\n reversed: 'reversed',\n role: 'role',\n rows: 'rows',\n rowspan: 'rowSpan',\n sandbox: 'sandbox',\n scope: 'scope',\n scoped: 'scoped',\n scrolling: 'scrolling',\n seamless: 'seamless',\n selected: 'selected',\n shape: 'shape',\n size: 'size',\n sizes: 'sizes',\n span: 'span',\n spellcheck: 'spellCheck',\n src: 'src',\n srcdoc: 'srcDoc',\n srclang: 'srcLang',\n srcset: 'srcSet',\n start: 'start',\n step: 'step',\n style: 'style',\n summary: 'summary',\n tabindex: 'tabIndex',\n target: 'target',\n title: 'title',\n type: 'type',\n usemap: 'useMap',\n value: 'value',\n width: 'width',\n wmode: 'wmode',\n wrap: 'wrap',\n // SVG\n about: 'about',\n accentheight: 'accentHeight',\n 'accent-height': 'accentHeight',\n accumulate: 'accumulate',\n additive: 'additive',\n alignmentbaseline: 'alignmentBaseline',\n 'alignment-baseline': 'alignmentBaseline',\n allowreorder: 'allowReorder',\n alphabetic: 'alphabetic',\n amplitude: 'amplitude',\n arabicform: 'arabicForm',\n 'arabic-form': 'arabicForm',\n ascent: 'ascent',\n attributename: 'attributeName',\n attributetype: 'attributeType',\n autoreverse: 'autoReverse',\n azimuth: 'azimuth',\n basefrequency: 'baseFrequency',\n baselineshift: 'baselineShift',\n 'baseline-shift': 'baselineShift',\n baseprofile: 'baseProfile',\n bbox: 'bbox',\n begin: 'begin',\n bias: 'bias',\n by: 'by',\n calcmode: 'calcMode',\n capheight: 'capHeight',\n 'cap-height': 'capHeight',\n clip: 'clip',\n clippath: 'clipPath',\n 'clip-path': 'clipPath',\n clippathunits: 'clipPathUnits',\n cliprule: 'clipRule',\n 'clip-rule': 'clipRule',\n color: 'color',\n colorinterpolation: 'colorInterpolation',\n 'color-interpolation': 'colorInterpolation',\n colorinterpolationfilters: 'colorInterpolationFilters',\n 'color-interpolation-filters': 'colorInterpolationFilters',\n colorprofile: 'colorProfile',\n 'color-profile': 'colorProfile',\n colorrendering: 'colorRendering',\n 'color-rendering': 'colorRendering',\n contentscripttype: 'contentScriptType',\n contentstyletype: 'contentStyleType',\n cursor: 'cursor',\n cx: 'cx',\n cy: 'cy',\n d: 'd',\n datatype: 'datatype',\n decelerate: 'decelerate',\n descent: 'descent',\n diffuseconstant: 'diffuseConstant',\n direction: 'direction',\n display: 'display',\n divisor: 'divisor',\n dominantbaseline: 'dominantBaseline',\n 'dominant-baseline': 'dominantBaseline',\n dur: 'dur',\n dx: 'dx',\n dy: 'dy',\n edgemode: 'edgeMode',\n elevation: 'elevation',\n enablebackground: 'enableBackground',\n 'enable-background': 'enableBackground',\n end: 'end',\n exponent: 'exponent',\n externalresourcesrequired: 'externalResourcesRequired',\n fill: 'fill',\n fillopacity: 'fillOpacity',\n 'fill-opacity': 'fillOpacity',\n fillrule: 'fillRule',\n 'fill-rule': 'fillRule',\n filter: 'filter',\n filterres: 'filterRes',\n filterunits: 'filterUnits',\n floodopacity: 'floodOpacity',\n 'flood-opacity': 'floodOpacity',\n floodcolor: 'floodColor',\n 'flood-color': 'floodColor',\n focusable: 'focusable',\n fontfamily: 'fontFamily',\n 'font-family': 'fontFamily',\n fontsize: 'fontSize',\n 'font-size': 'fontSize',\n fontsizeadjust: 'fontSizeAdjust',\n 'font-size-adjust': 'fontSizeAdjust',\n fontstretch: 'fontStretch',\n 'font-stretch': 'fontStretch',\n fontstyle: 'fontStyle',\n 'font-style': 'fontStyle',\n fontvariant: 'fontVariant',\n 'font-variant': 'fontVariant',\n fontweight: 'fontWeight',\n 'font-weight': 'fontWeight',\n format: 'format',\n from: 'from',\n fx: 'fx',\n fy: 'fy',\n g1: 'g1',\n g2: 'g2',\n glyphname: 'glyphName',\n 'glyph-name': 'glyphName',\n glyphorientationhorizontal: 'glyphOrientationHorizontal',\n 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n glyphorientationvertical: 'glyphOrientationVertical',\n 'glyph-orientation-vertical': 'glyphOrientationVertical',\n glyphref: 'glyphRef',\n gradienttransform: 'gradientTransform',\n gradientunits: 'gradientUnits',\n hanging: 'hanging',\n horizadvx: 'horizAdvX',\n 'horiz-adv-x': 'horizAdvX',\n horizoriginx: 'horizOriginX',\n 'horiz-origin-x': 'horizOriginX',\n ideographic: 'ideographic',\n imagerendering: 'imageRendering',\n 'image-rendering': 'imageRendering',\n in2: 'in2',\n in: 'in',\n inlist: 'inlist',\n intercept: 'intercept',\n k1: 'k1',\n k2: 'k2',\n k3: 'k3',\n k4: 'k4',\n k: 'k',\n kernelmatrix: 'kernelMatrix',\n kernelunitlength: 'kernelUnitLength',\n kerning: 'kerning',\n keypoints: 'keyPoints',\n keysplines: 'keySplines',\n keytimes: 'keyTimes',\n lengthadjust: 'lengthAdjust',\n letterspacing: 'letterSpacing',\n 'letter-spacing': 'letterSpacing',\n lightingcolor: 'lightingColor',\n 'lighting-color': 'lightingColor',\n limitingconeangle: 'limitingConeAngle',\n local: 'local',\n markerend: 'markerEnd',\n 'marker-end': 'markerEnd',\n markerheight: 'markerHeight',\n markermid: 'markerMid',\n 'marker-mid': 'markerMid',\n markerstart: 'markerStart',\n 'marker-start': 'markerStart',\n markerunits: 'markerUnits',\n markerwidth: 'markerWidth',\n mask: 'mask',\n maskcontentunits: 'maskContentUnits',\n maskunits: 'maskUnits',\n mathematical: 'mathematical',\n mode: 'mode',\n numoctaves: 'numOctaves',\n offset: 'offset',\n opacity: 'opacity',\n operator: 'operator',\n order: 'order',\n orient: 'orient',\n orientation: 'orientation',\n origin: 'origin',\n overflow: 'overflow',\n overlineposition: 'overlinePosition',\n 'overline-position': 'overlinePosition',\n overlinethickness: 'overlineThickness',\n 'overline-thickness': 'overlineThickness',\n paintorder: 'paintOrder',\n 'paint-order': 'paintOrder',\n panose1: 'panose1',\n 'panose-1': 'panose1',\n pathlength: 'pathLength',\n patterncontentunits: 'patternContentUnits',\n patterntransform: 'patternTransform',\n patternunits: 'patternUnits',\n pointerevents: 'pointerEvents',\n 'pointer-events': 'pointerEvents',\n points: 'points',\n pointsatx: 'pointsAtX',\n pointsaty: 'pointsAtY',\n pointsatz: 'pointsAtZ',\n prefix: 'prefix',\n preservealpha: 'preserveAlpha',\n preserveaspectratio: 'preserveAspectRatio',\n primitiveunits: 'primitiveUnits',\n property: 'property',\n r: 'r',\n radius: 'radius',\n refx: 'refX',\n refy: 'refY',\n renderingintent: 'renderingIntent',\n 'rendering-intent': 'renderingIntent',\n repeatcount: 'repeatCount',\n repeatdur: 'repeatDur',\n requiredextensions: 'requiredExtensions',\n requiredfeatures: 'requiredFeatures',\n resource: 'resource',\n restart: 'restart',\n result: 'result',\n results: 'results',\n rotate: 'rotate',\n rx: 'rx',\n ry: 'ry',\n scale: 'scale',\n security: 'security',\n seed: 'seed',\n shaperendering: 'shapeRendering',\n 'shape-rendering': 'shapeRendering',\n slope: 'slope',\n spacing: 'spacing',\n specularconstant: 'specularConstant',\n specularexponent: 'specularExponent',\n speed: 'speed',\n spreadmethod: 'spreadMethod',\n startoffset: 'startOffset',\n stddeviation: 'stdDeviation',\n stemh: 'stemh',\n stemv: 'stemv',\n stitchtiles: 'stitchTiles',\n stopcolor: 'stopColor',\n 'stop-color': 'stopColor',\n stopopacity: 'stopOpacity',\n 'stop-opacity': 'stopOpacity',\n strikethroughposition: 'strikethroughPosition',\n 'strikethrough-position': 'strikethroughPosition',\n strikethroughthickness: 'strikethroughThickness',\n 'strikethrough-thickness': 'strikethroughThickness',\n string: 'string',\n stroke: 'stroke',\n strokedasharray: 'strokeDasharray',\n 'stroke-dasharray': 'strokeDasharray',\n strokedashoffset: 'strokeDashoffset',\n 'stroke-dashoffset': 'strokeDashoffset',\n strokelinecap: 'strokeLinecap',\n 'stroke-linecap': 'strokeLinecap',\n strokelinejoin: 'strokeLinejoin',\n 'stroke-linejoin': 'strokeLinejoin',\n strokemiterlimit: 'strokeMiterlimit',\n 'stroke-miterlimit': 'strokeMiterlimit',\n strokewidth: 'strokeWidth',\n 'stroke-width': 'strokeWidth',\n strokeopacity: 'strokeOpacity',\n 'stroke-opacity': 'strokeOpacity',\n suppresscontenteditablewarning: 'suppressContentEditableWarning',\n suppresshydrationwarning: 'suppressHydrationWarning',\n surfacescale: 'surfaceScale',\n systemlanguage: 'systemLanguage',\n tablevalues: 'tableValues',\n targetx: 'targetX',\n targety: 'targetY',\n textanchor: 'textAnchor',\n 'text-anchor': 'textAnchor',\n textdecoration: 'textDecoration',\n 'text-decoration': 'textDecoration',\n textlength: 'textLength',\n textrendering: 'textRendering',\n 'text-rendering': 'textRendering',\n to: 'to',\n transform: 'transform',\n typeof: 'typeof',\n u1: 'u1',\n u2: 'u2',\n underlineposition: 'underlinePosition',\n 'underline-position': 'underlinePosition',\n underlinethickness: 'underlineThickness',\n 'underline-thickness': 'underlineThickness',\n unicode: 'unicode',\n unicodebidi: 'unicodeBidi',\n 'unicode-bidi': 'unicodeBidi',\n unicoderange: 'unicodeRange',\n 'unicode-range': 'unicodeRange',\n unitsperem: 'unitsPerEm',\n 'units-per-em': 'unitsPerEm',\n unselectable: 'unselectable',\n valphabetic: 'vAlphabetic',\n 'v-alphabetic': 'vAlphabetic',\n values: 'values',\n vectoreffect: 'vectorEffect',\n 'vector-effect': 'vectorEffect',\n version: 'version',\n vertadvy: 'vertAdvY',\n 'vert-adv-y': 'vertAdvY',\n vertoriginx: 'vertOriginX',\n 'vert-origin-x': 'vertOriginX',\n vertoriginy: 'vertOriginY',\n 'vert-origin-y': 'vertOriginY',\n vhanging: 'vHanging',\n 'v-hanging': 'vHanging',\n videographic: 'vIdeographic',\n 'v-ideographic': 'vIdeographic',\n viewbox: 'viewBox',\n viewtarget: 'viewTarget',\n visibility: 'visibility',\n vmathematical: 'vMathematical',\n 'v-mathematical': 'vMathematical',\n vocab: 'vocab',\n widths: 'widths',\n wordspacing: 'wordSpacing',\n 'word-spacing': 'wordSpacing',\n writingmode: 'writingMode',\n 'writing-mode': 'writingMode',\n x1: 'x1',\n x2: 'x2',\n x: 'x',\n xchannelselector: 'xChannelSelector',\n xheight: 'xHeight',\n 'x-height': 'xHeight',\n xlinkactuate: 'xlinkActuate',\n 'xlink:actuate': 'xlinkActuate',\n xlinkarcrole: 'xlinkArcrole',\n 'xlink:arcrole': 'xlinkArcrole',\n xlinkhref: 'xlinkHref',\n 'xlink:href': 'xlinkHref',\n xlinkrole: 'xlinkRole',\n 'xlink:role': 'xlinkRole',\n xlinkshow: 'xlinkShow',\n 'xlink:show': 'xlinkShow',\n xlinktitle: 'xlinkTitle',\n 'xlink:title': 'xlinkTitle',\n xlinktype: 'xlinkType',\n 'xlink:type': 'xlinkType',\n xmlbase: 'xmlBase',\n 'xml:base': 'xmlBase',\n xmllang: 'xmlLang',\n 'xml:lang': 'xmlLang',\n xmlns: 'xmlns',\n 'xml:space': 'xmlSpace',\n xmlnsxlink: 'xmlnsXlink',\n 'xmlns:xlink': 'xmlnsXlink',\n xmlspace: 'xmlSpace',\n y1: 'y1',\n y2: 'y2',\n y: 'y',\n ychannelselector: 'yChannelSelector',\n z: 'z',\n zoomandpan: 'zoomAndPan'\n};\n\nvar ariaProperties = {\n 'aria-current': 0,\n // state\n 'aria-details': 0,\n 'aria-disabled': 0,\n // state\n 'aria-hidden': 0,\n // state\n 'aria-invalid': 0,\n // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n};\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\nfunction validateProperty(tagName, name) {\n {\n if (hasOwnProperty$1.call(warnedProperties, name) && warnedProperties[name]) {\n return true;\n }\n\n if (rARIACamel.test(name)) {\n var ariaName = 'aria-' + name.slice(4).toLowerCase();\n var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n // DOM properties, then it is an invalid aria-* attribute.\n\n if (correctName == null) {\n error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name);\n\n warnedProperties[name] = true;\n return true;\n } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n if (name !== correctName) {\n error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName);\n\n warnedProperties[name] = true;\n return true;\n }\n }\n\n if (rARIA.test(name)) {\n var lowerCasedName = name.toLowerCase();\n var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n // DOM properties, then it is an invalid aria-* attribute.\n\n if (standardName == null) {\n warnedProperties[name] = true;\n return false;\n } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n if (name !== standardName) {\n error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName);\n\n warnedProperties[name] = true;\n return true;\n }\n }\n }\n\n return true;\n}\n\nfunction warnInvalidARIAProps(type, props) {\n {\n var invalidProps = [];\n\n for (var key in props) {\n var isValid = validateProperty(type, key);\n\n if (!isValid) {\n invalidProps.push(key);\n }\n }\n\n var unknownPropString = invalidProps.map(function (prop) {\n return '`' + prop + '`';\n }).join(', ');\n\n if (invalidProps.length === 1) {\n error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n } else if (invalidProps.length > 1) {\n error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n }\n }\n}\n\nfunction validateProperties(type, props) {\n if (isCustomComponent(type, props)) {\n return;\n }\n\n warnInvalidARIAProps(type, props);\n}\n\nvar didWarnValueNull = false;\nfunction validateProperties$1(type, props) {\n {\n if (type !== 'input' && type !== 'textarea' && type !== 'select') {\n return;\n }\n\n if (props != null && props.value === null && !didWarnValueNull) {\n didWarnValueNull = true;\n\n if (type === 'select' && props.multiple) {\n error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type);\n } else {\n error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type);\n }\n }\n }\n}\n\nvar validateProperty$1 = function () {};\n\n{\n var warnedProperties$1 = {};\n var _hasOwnProperty = Object.prototype.hasOwnProperty;\n var EVENT_NAME_REGEX = /^on./;\n var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;\n var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\n var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\n validateProperty$1 = function (tagName, name, value, eventRegistry) {\n if (_hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n return true;\n }\n\n var lowerCasedName = name.toLowerCase();\n\n if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {\n error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');\n\n warnedProperties$1[name] = true;\n return true;\n } // We can't rely on the event system being injected on the server.\n\n\n if (eventRegistry != null) {\n var registrationNameDependencies = eventRegistry.registrationNameDependencies,\n possibleRegistrationNames = eventRegistry.possibleRegistrationNames;\n\n if (registrationNameDependencies.hasOwnProperty(name)) {\n return true;\n }\n\n var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;\n\n if (registrationName != null) {\n error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName);\n\n warnedProperties$1[name] = true;\n return true;\n }\n\n if (EVENT_NAME_REGEX.test(name)) {\n error('Unknown event handler property `%s`. It will be ignored.', name);\n\n warnedProperties$1[name] = true;\n return true;\n }\n } else if (EVENT_NAME_REGEX.test(name)) {\n // If no event plugins have been injected, we are in a server environment.\n // So we can't tell if the event name is correct for sure, but we can filter\n // out known bad ones like `onclick`. We can't suggest a specific replacement though.\n if (INVALID_EVENT_NAME_REGEX.test(name)) {\n error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name);\n }\n\n warnedProperties$1[name] = true;\n return true;\n } // Let the ARIA attribute hook validate ARIA attributes\n\n\n if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n return true;\n }\n\n if (lowerCasedName === 'innerhtml') {\n error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');\n\n warnedProperties$1[name] = true;\n return true;\n }\n\n if (lowerCasedName === 'aria') {\n error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');\n\n warnedProperties$1[name] = true;\n return true;\n }\n\n if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {\n error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value);\n\n warnedProperties$1[name] = true;\n return true;\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name);\n\n warnedProperties$1[name] = true;\n return true;\n }\n\n var propertyInfo = getPropertyInfo(name);\n var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config.\n\n if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n var standardName = possibleStandardNames[lowerCasedName];\n\n if (standardName !== name) {\n error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName);\n\n warnedProperties$1[name] = true;\n return true;\n }\n } else if (!isReserved && name !== lowerCasedName) {\n // Unknown attributes should have lowercase casing since that's how they\n // will be cased anyway with server rendering.\n error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName);\n\n warnedProperties$1[name] = true;\n return true;\n }\n\n if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n if (value) {\n error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.', value, name, name, value, name);\n } else {\n error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);\n }\n\n warnedProperties$1[name] = true;\n return true;\n } // Now that we've validated casing, do not validate\n // data types for reserved props\n\n\n if (isReserved) {\n return true;\n } // Warn when a known attribute is a bad type\n\n\n if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n warnedProperties$1[name] = true;\n return false;\n } // Warn when passing the strings 'false' or 'true' into a boolean prop\n\n\n if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) {\n error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string \"false\".', name, value);\n\n warnedProperties$1[name] = true;\n return true;\n }\n\n return true;\n };\n}\n\nvar warnUnknownProperties = function (type, props, eventRegistry) {\n {\n var unknownProps = [];\n\n for (var key in props) {\n var isValid = validateProperty$1(type, key, props[key], eventRegistry);\n\n if (!isValid) {\n unknownProps.push(key);\n }\n }\n\n var unknownPropString = unknownProps.map(function (prop) {\n return '`' + prop + '`';\n }).join(', ');\n\n if (unknownProps.length === 1) {\n error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n } else if (unknownProps.length > 1) {\n error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n }\n }\n};\n\nfunction validateProperties$2(type, props, eventRegistry) {\n if (isCustomComponent(type, props)) {\n return;\n }\n\n warnUnknownProperties(type, props, eventRegistry);\n}\n\nvar IS_EVENT_HANDLE_NON_MANAGED_NODE = 1;\nvar IS_NON_DELEGATED = 1 << 1;\nvar IS_CAPTURE_PHASE = 1 << 2;\nvar IS_REPLAYED = 1 << 4;\n// set to LEGACY_FB_SUPPORT. LEGACY_FB_SUPPORT only gets set when\n// we call willDeferLaterForLegacyFBSupport, thus not bailing out\n// will result in endless cycles like an infinite loop.\n// We also don't want to defer during event replaying.\n\nvar SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS = IS_EVENT_HANDLE_NON_MANAGED_NODE | IS_NON_DELEGATED | IS_CAPTURE_PHASE;\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n // Fallback to nativeEvent.srcElement for IE9\n // https://github.com/facebook/react/issues/12506\n var target = nativeEvent.target || nativeEvent.srcElement || window; // Normalize SVG <use> element events #4963\n\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n } // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n\n\n return target.nodeType === TEXT_NODE ? target.parentNode : target;\n}\n\nvar restoreImpl = null;\nvar restoreTarget = null;\nvar restoreQueue = null;\n\nfunction restoreStateOfTarget(target) {\n // We perform this translation at the end of the event loop so that we\n // always receive the correct fiber here\n var internalInstance = getInstanceFromNode(target);\n\n if (!internalInstance) {\n // Unmounted\n return;\n }\n\n if (!(typeof restoreImpl === 'function')) {\n {\n throw Error( \"setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n var stateNode = internalInstance.stateNode; // Guard against Fiber being unmounted.\n\n if (stateNode) {\n var _props = getFiberCurrentPropsFromNode(stateNode);\n\n restoreImpl(internalInstance.stateNode, internalInstance.type, _props);\n }\n}\n\nfunction setRestoreImplementation(impl) {\n restoreImpl = impl;\n}\nfunction enqueueStateRestore(target) {\n if (restoreTarget) {\n if (restoreQueue) {\n restoreQueue.push(target);\n } else {\n restoreQueue = [target];\n }\n } else {\n restoreTarget = target;\n }\n}\nfunction needsStateRestore() {\n return restoreTarget !== null || restoreQueue !== null;\n}\nfunction restoreStateIfNeeded() {\n if (!restoreTarget) {\n return;\n }\n\n var target = restoreTarget;\n var queuedTargets = restoreQueue;\n restoreTarget = null;\n restoreQueue = null;\n restoreStateOfTarget(target);\n\n if (queuedTargets) {\n for (var i = 0; i < queuedTargets.length; i++) {\n restoreStateOfTarget(queuedTargets[i]);\n }\n }\n}\n\n// the renderer. Such as when we're dispatching events or if third party\n// libraries need to call batchedUpdates. Eventually, this API will go away when\n// everything is batched by default. We'll then have a similar API to opt-out of\n// scheduled work and instead do synchronous work.\n// Defaults\n\nvar batchedUpdatesImpl = function (fn, bookkeeping) {\n return fn(bookkeeping);\n};\n\nvar discreteUpdatesImpl = function (fn, a, b, c, d) {\n return fn(a, b, c, d);\n};\n\nvar flushDiscreteUpdatesImpl = function () {};\n\nvar batchedEventUpdatesImpl = batchedUpdatesImpl;\nvar isInsideEventHandler = false;\nvar isBatchingEventUpdates = false;\n\nfunction finishEventHandler() {\n // Here we wait until all updates have propagated, which is important\n // when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n // Then we restore state of any controlled component.\n var controlledComponentsHavePendingUpdates = needsStateRestore();\n\n if (controlledComponentsHavePendingUpdates) {\n // If a controlled event was fired, we may need to restore the state of\n // the DOM node back to the controlled value. This is necessary when React\n // bails out of the update without touching the DOM.\n flushDiscreteUpdatesImpl();\n restoreStateIfNeeded();\n }\n}\n\nfunction batchedUpdates(fn, bookkeeping) {\n if (isInsideEventHandler) {\n // If we are currently inside another batch, we need to wait until it\n // fully completes before restoring state.\n return fn(bookkeeping);\n }\n\n isInsideEventHandler = true;\n\n try {\n return batchedUpdatesImpl(fn, bookkeeping);\n } finally {\n isInsideEventHandler = false;\n finishEventHandler();\n }\n}\nfunction batchedEventUpdates(fn, a, b) {\n if (isBatchingEventUpdates) {\n // If we are currently inside another batch, we need to wait until it\n // fully completes before restoring state.\n return fn(a, b);\n }\n\n isBatchingEventUpdates = true;\n\n try {\n return batchedEventUpdatesImpl(fn, a, b);\n } finally {\n isBatchingEventUpdates = false;\n finishEventHandler();\n }\n}\nfunction discreteUpdates(fn, a, b, c, d) {\n var prevIsInsideEventHandler = isInsideEventHandler;\n isInsideEventHandler = true;\n\n try {\n return discreteUpdatesImpl(fn, a, b, c, d);\n } finally {\n isInsideEventHandler = prevIsInsideEventHandler;\n\n if (!isInsideEventHandler) {\n finishEventHandler();\n }\n }\n}\nfunction flushDiscreteUpdatesIfNeeded(timeStamp) {\n {\n if (!isInsideEventHandler) {\n flushDiscreteUpdatesImpl();\n }\n }\n}\nfunction setBatchingImplementation(_batchedUpdatesImpl, _discreteUpdatesImpl, _flushDiscreteUpdatesImpl, _batchedEventUpdatesImpl) {\n batchedUpdatesImpl = _batchedUpdatesImpl;\n discreteUpdatesImpl = _discreteUpdatesImpl;\n flushDiscreteUpdatesImpl = _flushDiscreteUpdatesImpl;\n batchedEventUpdatesImpl = _batchedEventUpdatesImpl;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n case 'onMouseEnter':\n return !!(props.disabled && isInteractive(type));\n\n default:\n return false;\n }\n}\n/**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n\n\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n\n if (stateNode === null) {\n // Work in progress (ex: onload events in incremental mode).\n return null;\n }\n\n var props = getFiberCurrentPropsFromNode(stateNode);\n\n if (props === null) {\n // Work in progress.\n return null;\n }\n\n var listener = props[registrationName];\n\n if (shouldPreventMouseEvent(registrationName, inst.type, props)) {\n return null;\n }\n\n if (!(!listener || typeof listener === 'function')) {\n {\n throw Error( \"Expected `\" + registrationName + \"` listener to be a function, instead got a value of `\" + typeof listener + \"` type.\" );\n }\n }\n\n return listener;\n}\n\nvar passiveBrowserEventsSupported = false; // Check if browser support events with passive listeners\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n\nif (canUseDOM) {\n try {\n var options = {}; // $FlowFixMe: Ignore Flow complaining about needing a value\n\n Object.defineProperty(options, 'passive', {\n get: function () {\n passiveBrowserEventsSupported = true;\n }\n });\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n } catch (e) {\n passiveBrowserEventsSupported = false;\n }\n}\n\nfunction invokeGuardedCallbackProd(name, func, context, a, b, c, d, e, f) {\n var funcArgs = Array.prototype.slice.call(arguments, 3);\n\n try {\n func.apply(context, funcArgs);\n } catch (error) {\n this.onError(error);\n }\n}\n\nvar invokeGuardedCallbackImpl = invokeGuardedCallbackProd;\n\n{\n // In DEV mode, we swap out invokeGuardedCallback for a special version\n // that plays more nicely with the browser's DevTools. The idea is to preserve\n // \"Pause on exceptions\" behavior. Because React wraps all user-provided\n // functions in invokeGuardedCallback, and the production version of\n // invokeGuardedCallback uses a try-catch, all user exceptions are treated\n // like caught exceptions, and the DevTools won't pause unless the developer\n // takes the extra step of enabling pause on caught exceptions. This is\n // unintuitive, though, because even though React has caught the error, from\n // the developer's perspective, the error is uncaught.\n //\n // To preserve the expected \"Pause on exceptions\" behavior, we don't use a\n // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake\n // DOM node, and call the user-provided callback from inside an event handler\n // for that fake event. If the callback throws, the error is \"captured\" using\n // a global event handler. But because the error happens in a different\n // event loop context, it does not interrupt the normal program flow.\n // Effectively, this gives us try-catch behavior without actually using\n // try-catch. Neat!\n // Check that the browser supports the APIs we need to implement our special\n // DEV version of invokeGuardedCallback\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n\n invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context, a, b, c, d, e, f) {\n // If document doesn't exist we know for sure we will crash in this method\n // when we call document.createEvent(). However this can cause confusing\n // errors: https://github.com/facebookincubator/create-react-app/issues/3482\n // So we preemptively throw with a better message instead.\n if (!(typeof document !== 'undefined')) {\n {\n throw Error( \"The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous.\" );\n }\n }\n\n var evt = document.createEvent('Event');\n var didCall = false; // Keeps track of whether the user-provided callback threw an error. We\n // set this to true at the beginning, then set it to false right after\n // calling the function. If the function errors, `didError` will never be\n // set to false. This strategy works even if the browser is flaky and\n // fails to call our global error handler, because it doesn't rely on\n // the error event at all.\n\n var didError = true; // Keeps track of the value of window.event so that we can reset it\n // during the callback to let user code access window.event in the\n // browsers that support it.\n\n var windowEvent = window.event; // Keeps track of the descriptor of window.event to restore it after event\n // dispatching: https://github.com/facebook/react/issues/13688\n\n var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, 'event');\n\n function restoreAfterDispatch() {\n // We immediately remove the callback from event listeners so that\n // nested `invokeGuardedCallback` calls do not clash. Otherwise, a\n // nested call would trigger the fake event handlers of any call higher\n // in the stack.\n fakeNode.removeEventListener(evtType, callCallback, false); // We check for window.hasOwnProperty('event') to prevent the\n // window.event assignment in both IE <= 10 as they throw an error\n // \"Member not found\" in strict mode, and in Firefox which does not\n // support window.event.\n\n if (typeof window.event !== 'undefined' && window.hasOwnProperty('event')) {\n window.event = windowEvent;\n }\n } // Create an event handler for our fake event. We will synchronously\n // dispatch our fake event using `dispatchEvent`. Inside the handler, we\n // call the user-provided callback.\n\n\n var funcArgs = Array.prototype.slice.call(arguments, 3);\n\n function callCallback() {\n didCall = true;\n restoreAfterDispatch();\n func.apply(context, funcArgs);\n didError = false;\n } // Create a global error event handler. We use this to capture the value\n // that was thrown. It's possible that this error handler will fire more\n // than once; for example, if non-React code also calls `dispatchEvent`\n // and a handler for that event throws. We should be resilient to most of\n // those cases. Even if our error event handler fires more than once, the\n // last error event is always used. If the callback actually does error,\n // we know that the last error event is the correct one, because it's not\n // possible for anything else to have happened in between our callback\n // erroring and the code that follows the `dispatchEvent` call below. If\n // the callback doesn't error, but the error event was fired, we know to\n // ignore it because `didError` will be false, as described above.\n\n\n var error; // Use this to track whether the error event is ever called.\n\n var didSetError = false;\n var isCrossOriginError = false;\n\n function handleWindowError(event) {\n error = event.error;\n didSetError = true;\n\n if (error === null && event.colno === 0 && event.lineno === 0) {\n isCrossOriginError = true;\n }\n\n if (event.defaultPrevented) {\n // Some other error handler has prevented default.\n // Browsers silence the error report if this happens.\n // We'll remember this to later decide whether to log it or not.\n if (error != null && typeof error === 'object') {\n try {\n error._suppressLogging = true;\n } catch (inner) {// Ignore.\n }\n }\n }\n } // Create a fake event type.\n\n\n var evtType = \"react-\" + (name ? name : 'invokeguardedcallback'); // Attach our event handlers\n\n window.addEventListener('error', handleWindowError);\n fakeNode.addEventListener(evtType, callCallback, false); // Synchronously dispatch our fake event. If the user-provided function\n // errors, it will trigger our global error handler.\n\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n\n if (windowEventDescriptor) {\n Object.defineProperty(window, 'event', windowEventDescriptor);\n }\n\n if (didCall && didError) {\n if (!didSetError) {\n // The callback errored, but the error event never fired.\n error = new Error('An error was thrown inside one of your components, but React ' + \"doesn't know what it was. This is likely due to browser \" + 'flakiness. React does its best to preserve the \"Pause on ' + 'exceptions\" behavior of the DevTools, which requires some ' + \"DEV-mode only tricks. It's possible that these don't work in \" + 'your browser. Try triggering the error in production mode, ' + 'or switching to a modern browser. If you suspect that this is ' + 'actually an issue with React, please file an issue.');\n } else if (isCrossOriginError) {\n error = new Error(\"A cross-origin error was thrown. React doesn't have access to \" + 'the actual error object in development. ' + 'See https://reactjs.org/link/crossorigin-error for more information.');\n }\n\n this.onError(error);\n } // Remove our event listeners\n\n\n window.removeEventListener('error', handleWindowError);\n\n if (!didCall) {\n // Something went really wrong, and our event was not dispatched.\n // https://github.com/facebook/react/issues/16734\n // https://github.com/facebook/react/issues/16585\n // Fall back to the production implementation.\n restoreAfterDispatch();\n return invokeGuardedCallbackProd.apply(this, arguments);\n }\n };\n }\n}\n\nvar invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl;\n\nvar hasError = false;\nvar caughtError = null; // Used by event system to capture/rethrow the first error.\n\nvar hasRethrowError = false;\nvar rethrowError = null;\nvar reporter = {\n onError: function (error) {\n hasError = true;\n caughtError = error;\n }\n};\n/**\n * Call a function while guarding against errors that happens within it.\n * Returns an error if it throws, otherwise null.\n *\n * In production, this is implemented using a try-catch. The reason we don't\n * use a try-catch directly is so that we can swap out a different\n * implementation in DEV mode.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n hasError = false;\n caughtError = null;\n invokeGuardedCallbackImpl$1.apply(reporter, arguments);\n}\n/**\n * Same as invokeGuardedCallback, but instead of returning an error, it stores\n * it in a global so it can be rethrown by `rethrowCaughtError` later.\n * TODO: See if caughtError and rethrowError can be unified.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) {\n invokeGuardedCallback.apply(this, arguments);\n\n if (hasError) {\n var error = clearCaughtError();\n\n if (!hasRethrowError) {\n hasRethrowError = true;\n rethrowError = error;\n }\n }\n}\n/**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n\nfunction rethrowCaughtError() {\n if (hasRethrowError) {\n var error = rethrowError;\n hasRethrowError = false;\n rethrowError = null;\n throw error;\n }\n}\nfunction hasCaughtError() {\n return hasError;\n}\nfunction clearCaughtError() {\n if (hasError) {\n var error = caughtError;\n hasError = false;\n caughtError = null;\n return error;\n } else {\n {\n {\n throw Error( \"clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n }\n}\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n *\n * Note that this module is currently shared and assumed to be stateless.\n * If this becomes an actual Map, that will break.\n */\nfunction get(key) {\n return key._reactInternals;\n}\nfunction has(key) {\n return key._reactInternals !== undefined;\n}\nfunction set(key, value) {\n key._reactInternals = value;\n}\n\n// Don't change these two values. They're used by React Dev Tools.\nvar NoFlags =\n/* */\n0;\nvar PerformedWork =\n/* */\n1; // You can change the rest (and add more).\n\nvar Placement =\n/* */\n2;\nvar Update =\n/* */\n4;\nvar PlacementAndUpdate =\n/* */\n6;\nvar Deletion =\n/* */\n8;\nvar ContentReset =\n/* */\n16;\nvar Callback =\n/* */\n32;\nvar DidCapture =\n/* */\n64;\nvar Ref =\n/* */\n128;\nvar Snapshot =\n/* */\n256;\nvar Passive =\n/* */\n512; // TODO (effects) Remove this bit once the new reconciler is synced to the old.\n\nvar PassiveUnmountPendingDev =\n/* */\n8192;\nvar Hydrating =\n/* */\n1024;\nvar HydratingAndUpdate =\n/* */\n1028; // Passive & Update & Callback & Ref & Snapshot\n\nvar LifecycleEffectMask =\n/* */\n932; // Union of all host effects\n\nvar HostEffectMask =\n/* */\n2047; // These are not really side effects, but we still reuse this field.\n\nvar Incomplete =\n/* */\n2048;\nvar ShouldCapture =\n/* */\n4096;\nvar ForceUpdateForLegacySuspense =\n/* */\n16384; // Static tags describe aspects of a fiber that are not specific to a render,\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nfunction getNearestMountedFiber(fiber) {\n var node = fiber;\n var nearestMounted = fiber;\n\n if (!fiber.alternate) {\n // If there is no alternate, this might be a new tree that isn't inserted\n // yet. If it is, then it will have a pending insertion effect on it.\n var nextNode = node;\n\n do {\n node = nextNode;\n\n if ((node.flags & (Placement | Hydrating)) !== NoFlags) {\n // This is an insertion or in-progress hydration. The nearest possible\n // mounted fiber is the parent but we need to continue to figure out\n // if that one is still mounted.\n nearestMounted = node.return;\n }\n\n nextNode = node.return;\n } while (nextNode);\n } else {\n while (node.return) {\n node = node.return;\n }\n }\n\n if (node.tag === HostRoot) {\n // TODO: Check if this was a nested HostRoot when used with\n // renderContainerIntoSubtree.\n return nearestMounted;\n } // If we didn't hit the root, that means that we're in an disconnected tree\n // that has been unmounted.\n\n\n return null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (fiber.tag === SuspenseComponent) {\n var suspenseState = fiber.memoizedState;\n\n if (suspenseState === null) {\n var current = fiber.alternate;\n\n if (current !== null) {\n suspenseState = current.memoizedState;\n }\n }\n\n if (suspenseState !== null) {\n return suspenseState.dehydrated;\n }\n }\n\n return null;\n}\nfunction getContainerFromFiber(fiber) {\n return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null;\n}\nfunction isFiberMounted(fiber) {\n return getNearestMountedFiber(fiber) === fiber;\n}\nfunction isMounted(component) {\n {\n var owner = ReactCurrentOwner.current;\n\n if (owner !== null && owner.tag === ClassComponent) {\n var ownerFiber = owner;\n var instance = ownerFiber.stateNode;\n\n if (!instance._warnedAboutRefsInRender) {\n error('%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(ownerFiber.type) || 'A component');\n }\n\n instance._warnedAboutRefsInRender = true;\n }\n }\n\n var fiber = get(component);\n\n if (!fiber) {\n return false;\n }\n\n return getNearestMountedFiber(fiber) === fiber;\n}\n\nfunction assertIsMounted(fiber) {\n if (!(getNearestMountedFiber(fiber) === fiber)) {\n {\n throw Error( \"Unable to find node on an unmounted component.\" );\n }\n }\n}\n\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n\n if (!alternate) {\n // If there is no alternate, then we only need to check if it is mounted.\n var nearestMounted = getNearestMountedFiber(fiber);\n\n if (!(nearestMounted !== null)) {\n {\n throw Error( \"Unable to find node on an unmounted component.\" );\n }\n }\n\n if (nearestMounted !== fiber) {\n return null;\n }\n\n return fiber;\n } // If we have two possible branches, we'll walk backwards up to the root\n // to see what path the root points to. On the way we may hit one of the\n // special cases and we'll deal with them.\n\n\n var a = fiber;\n var b = alternate;\n\n while (true) {\n var parentA = a.return;\n\n if (parentA === null) {\n // We're at the root.\n break;\n }\n\n var parentB = parentA.alternate;\n\n if (parentB === null) {\n // There is no alternate. This is an unusual case. Currently, it only\n // happens when a Suspense component is hidden. An extra fragment fiber\n // is inserted in between the Suspense fiber and its children. Skip\n // over this extra fragment fiber and proceed to the next parent.\n var nextParent = parentA.return;\n\n if (nextParent !== null) {\n a = b = nextParent;\n continue;\n } // If there's no parent, we're at the root.\n\n\n break;\n } // If both copies of the parent fiber point to the same child, we can\n // assume that the child is current. This happens when we bailout on low\n // priority: the bailed out fiber's child reuses the current child.\n\n\n if (parentA.child === parentB.child) {\n var child = parentA.child;\n\n while (child) {\n if (child === a) {\n // We've determined that A is the current branch.\n assertIsMounted(parentA);\n return fiber;\n }\n\n if (child === b) {\n // We've determined that B is the current branch.\n assertIsMounted(parentA);\n return alternate;\n }\n\n child = child.sibling;\n } // We should never have an alternate for any mounting node. So the only\n // way this could possibly happen is if this was unmounted, if at all.\n\n\n {\n {\n throw Error( \"Unable to find node on an unmounted component.\" );\n }\n }\n }\n\n if (a.return !== b.return) {\n // The return pointer of A and the return pointer of B point to different\n // fibers. We assume that return pointers never criss-cross, so A must\n // belong to the child set of A.return, and B must belong to the child\n // set of B.return.\n a = parentA;\n b = parentB;\n } else {\n // The return pointers point to the same fiber. We'll have to use the\n // default, slow path: scan the child sets of each parent alternate to see\n // which child belongs to which set.\n //\n // Search parent A's child set\n var didFindChild = false;\n var _child = parentA.child;\n\n while (_child) {\n if (_child === a) {\n didFindChild = true;\n a = parentA;\n b = parentB;\n break;\n }\n\n if (_child === b) {\n didFindChild = true;\n b = parentA;\n a = parentB;\n break;\n }\n\n _child = _child.sibling;\n }\n\n if (!didFindChild) {\n // Search parent B's child set\n _child = parentB.child;\n\n while (_child) {\n if (_child === a) {\n didFindChild = true;\n a = parentB;\n b = parentA;\n break;\n }\n\n if (_child === b) {\n didFindChild = true;\n b = parentB;\n a = parentA;\n break;\n }\n\n _child = _child.sibling;\n }\n\n if (!didFindChild) {\n {\n throw Error( \"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\" );\n }\n }\n }\n }\n\n if (!(a.alternate === b)) {\n {\n throw Error( \"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n } // If the root is not a host container, we're in a disconnected tree. I.e.\n // unmounted.\n\n\n if (!(a.tag === HostRoot)) {\n {\n throw Error( \"Unable to find node on an unmounted component.\" );\n }\n }\n\n if (a.stateNode.current === a) {\n // We've determined that A is the current branch.\n return fiber;\n } // Otherwise B has to be current branch.\n\n\n return alternate;\n}\nfunction findCurrentHostFiber(parent) {\n var currentParent = findCurrentFiberUsingSlowPath(parent);\n\n if (!currentParent) {\n return null;\n } // Next we'll drill down this component to find the first HostComponent/Text.\n\n\n var node = currentParent;\n\n while (true) {\n if (node.tag === HostComponent || node.tag === HostText) {\n return node;\n } else if (node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === currentParent) {\n return null;\n }\n\n while (!node.sibling) {\n if (!node.return || node.return === currentParent) {\n return null;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n } // Flow needs the return null here, but ESLint complains about it.\n // eslint-disable-next-line no-unreachable\n\n\n return null;\n}\nfunction findCurrentHostFiberWithNoPortals(parent) {\n var currentParent = findCurrentFiberUsingSlowPath(parent);\n\n if (!currentParent) {\n return null;\n } // Next we'll drill down this component to find the first HostComponent/Text.\n\n\n var node = currentParent;\n\n while (true) {\n if (node.tag === HostComponent || node.tag === HostText || enableFundamentalAPI ) {\n return node;\n } else if (node.child && node.tag !== HostPortal) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === currentParent) {\n return null;\n }\n\n while (!node.sibling) {\n if (!node.return || node.return === currentParent) {\n return null;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n } // Flow needs the return null here, but ESLint complains about it.\n // eslint-disable-next-line no-unreachable\n\n\n return null;\n}\nfunction doesFiberContain(parentFiber, childFiber) {\n var node = childFiber;\n var parentFiberAlternate = parentFiber.alternate;\n\n while (node !== null) {\n if (node === parentFiber || node === parentFiberAlternate) {\n return true;\n }\n\n node = node.return;\n }\n\n return false;\n}\n\nvar attemptUserBlockingHydration;\nfunction setAttemptUserBlockingHydration(fn) {\n attemptUserBlockingHydration = fn;\n}\nvar attemptContinuousHydration;\nfunction setAttemptContinuousHydration(fn) {\n attemptContinuousHydration = fn;\n}\nvar attemptHydrationAtCurrentPriority;\nfunction setAttemptHydrationAtCurrentPriority(fn) {\n attemptHydrationAtCurrentPriority = fn;\n}\nvar attemptHydrationAtPriority;\nfunction setAttemptHydrationAtPriority(fn) {\n attemptHydrationAtPriority = fn;\n} // TODO: Upgrade this definition once we're on a newer version of Flow that\nvar hasScheduledReplayAttempt = false; // The queue of discrete events to be replayed.\n\nvar queuedDiscreteEvents = []; // Indicates if any continuous event targets are non-null for early bailout.\n// if the last target was dehydrated.\n\nvar queuedFocus = null;\nvar queuedDrag = null;\nvar queuedMouse = null; // For pointer events there can be one latest event per pointerId.\n\nvar queuedPointers = new Map();\nvar queuedPointerCaptures = new Map(); // We could consider replaying selectionchange and touchmoves too.\n\nvar queuedExplicitHydrationTargets = [];\nfunction hasQueuedDiscreteEvents() {\n return queuedDiscreteEvents.length > 0;\n}\nvar discreteReplayableEvents = ['mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', // Intentionally camelCase\n'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset', 'submit'];\nfunction isReplayableDiscreteEvent(eventType) {\n return discreteReplayableEvents.indexOf(eventType) > -1;\n}\n\nfunction createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n return {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags | IS_REPLAYED,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n };\n}\n\nfunction queueDiscreteEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n var queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);\n queuedDiscreteEvents.push(queuedEvent);\n} // Resets the replaying for this type of continuous event to no event.\n\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case 'focusin':\n case 'focusout':\n queuedFocus = null;\n break;\n\n case 'dragenter':\n case 'dragleave':\n queuedDrag = null;\n break;\n\n case 'mouseover':\n case 'mouseout':\n queuedMouse = null;\n break;\n\n case 'pointerover':\n case 'pointerout':\n {\n var pointerId = nativeEvent.pointerId;\n queuedPointers.delete(pointerId);\n break;\n }\n\n case 'gotpointercapture':\n case 'lostpointercapture':\n {\n var _pointerId = nativeEvent.pointerId;\n queuedPointerCaptures.delete(_pointerId);\n break;\n }\n }\n}\n\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) {\n var queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n if (blockedOn !== null) {\n var _fiber2 = getInstanceFromNode(blockedOn);\n\n if (_fiber2 !== null) {\n // Attempt to increase the priority of this target.\n attemptContinuousHydration(_fiber2);\n }\n }\n\n return queuedEvent;\n } // If we have already queued this exact event, then it's because\n // the different event systems have different DOM event listeners.\n // We can accumulate the flags, and the targetContainers, and\n // store a single event to be replayed.\n\n\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n var targetContainers = existingQueuedEvent.targetContainers;\n\n if (targetContainer !== null && targetContainers.indexOf(targetContainer) === -1) {\n targetContainers.push(targetContainer);\n }\n\n return existingQueuedEvent;\n}\n\nfunction queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n // These set relatedTarget to null because the replayed event will be treated as if we\n // moved from outside the window (no target) onto the target once it hydrates.\n // Instead of mutating we could clone the event.\n switch (domEventName) {\n case 'focusin':\n {\n var focusEvent = nativeEvent;\n queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, domEventName, eventSystemFlags, targetContainer, focusEvent);\n return true;\n }\n\n case 'dragenter':\n {\n var dragEvent = nativeEvent;\n queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, domEventName, eventSystemFlags, targetContainer, dragEvent);\n return true;\n }\n\n case 'mouseover':\n {\n var mouseEvent = nativeEvent;\n queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, domEventName, eventSystemFlags, targetContainer, mouseEvent);\n return true;\n }\n\n case 'pointerover':\n {\n var pointerEvent = nativeEvent;\n var pointerId = pointerEvent.pointerId;\n queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, pointerEvent));\n return true;\n }\n\n case 'gotpointercapture':\n {\n var _pointerEvent = nativeEvent;\n var _pointerId2 = _pointerEvent.pointerId;\n queuedPointerCaptures.set(_pointerId2, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, _pointerEvent));\n return true;\n }\n }\n\n return false;\n} // Check if this target is unblocked. Returns true if it's unblocked.\n\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n // TODO: This function shares a lot of logic with attemptToDispatchEvent.\n // Try to unify them. It's a bit tricky since it would require two return\n // values.\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n\n if (targetInst !== null) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n\n if (nearestMounted !== null) {\n var tag = nearestMounted.tag;\n\n if (tag === SuspenseComponent) {\n var instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n if (instance !== null) {\n // We're blocked on hydrating this boundary.\n // Increase its priority.\n queuedTarget.blockedOn = instance;\n attemptHydrationAtPriority(queuedTarget.lanePriority, function () {\n Scheduler.unstable_runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n });\n return;\n }\n } else if (tag === HostRoot) {\n var root = nearestMounted.stateNode;\n\n if (root.hydrate) {\n queuedTarget.blockedOn = getContainerFromFiber(nearestMounted); // We don't currently have a way to increase the priority of\n // a root other than sync.\n\n return;\n }\n }\n }\n }\n\n queuedTarget.blockedOn = null;\n}\n\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (queuedEvent.blockedOn !== null) {\n return false;\n }\n\n var targetContainers = queuedEvent.targetContainers;\n\n while (targetContainers.length > 0) {\n var targetContainer = targetContainers[0];\n var nextBlockedOn = attemptToDispatchEvent(queuedEvent.domEventName, queuedEvent.eventSystemFlags, targetContainer, queuedEvent.nativeEvent);\n\n if (nextBlockedOn !== null) {\n // We're still blocked. Try again later.\n var _fiber3 = getInstanceFromNode(nextBlockedOn);\n\n if (_fiber3 !== null) {\n attemptContinuousHydration(_fiber3);\n }\n\n queuedEvent.blockedOn = nextBlockedOn;\n return false;\n } // This target container was successfully dispatched. Try the next.\n\n\n targetContainers.shift();\n }\n\n return true;\n}\n\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n if (attemptReplayContinuousQueuedEvent(queuedEvent)) {\n map.delete(key);\n }\n}\n\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = false; // First replay discrete events.\n\n while (queuedDiscreteEvents.length > 0) {\n var nextDiscreteEvent = queuedDiscreteEvents[0];\n\n if (nextDiscreteEvent.blockedOn !== null) {\n // We're still blocked.\n // Increase the priority of this boundary to unblock\n // the next discrete event.\n var _fiber4 = getInstanceFromNode(nextDiscreteEvent.blockedOn);\n\n if (_fiber4 !== null) {\n attemptUserBlockingHydration(_fiber4);\n }\n\n break;\n }\n\n var targetContainers = nextDiscreteEvent.targetContainers;\n\n while (targetContainers.length > 0) {\n var targetContainer = targetContainers[0];\n var nextBlockedOn = attemptToDispatchEvent(nextDiscreteEvent.domEventName, nextDiscreteEvent.eventSystemFlags, targetContainer, nextDiscreteEvent.nativeEvent);\n\n if (nextBlockedOn !== null) {\n // We're still blocked. Try again later.\n nextDiscreteEvent.blockedOn = nextBlockedOn;\n break;\n } // This target container was successfully dispatched. Try the next.\n\n\n targetContainers.shift();\n }\n\n if (nextDiscreteEvent.blockedOn === null) {\n // We've successfully replayed the first event. Let's try the next one.\n queuedDiscreteEvents.shift();\n }\n } // Next replay any continuous events.\n\n\n if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) {\n queuedFocus = null;\n }\n\n if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) {\n queuedDrag = null;\n }\n\n if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) {\n queuedMouse = null;\n }\n\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\n\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n if (queuedEvent.blockedOn === unblocked) {\n queuedEvent.blockedOn = null;\n\n if (!hasScheduledReplayAttempt) {\n hasScheduledReplayAttempt = true; // Schedule a callback to attempt replaying as many events as are\n // now unblocked. This first might not actually be unblocked yet.\n // We could check it early to avoid scheduling an unnecessary callback.\n\n Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents);\n }\n }\n}\n\nfunction retryIfBlockedOn(unblocked) {\n // Mark anything that was blocked on this as no longer blocked\n // and eligible for a replay.\n if (queuedDiscreteEvents.length > 0) {\n scheduleCallbackIfUnblocked(queuedDiscreteEvents[0], unblocked); // This is a exponential search for each boundary that commits. I think it's\n // worth it because we expect very few discrete events to queue up and once\n // we are actually fully unblocked it will be fast to replay them.\n\n for (var i = 1; i < queuedDiscreteEvents.length; i++) {\n var queuedEvent = queuedDiscreteEvents[i];\n\n if (queuedEvent.blockedOn === unblocked) {\n queuedEvent.blockedOn = null;\n }\n }\n }\n\n if (queuedFocus !== null) {\n scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n }\n\n if (queuedDrag !== null) {\n scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n }\n\n if (queuedMouse !== null) {\n scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n }\n\n var unblock = function (queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n };\n\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n\n for (var _i = 0; _i < queuedExplicitHydrationTargets.length; _i++) {\n var queuedTarget = queuedExplicitHydrationTargets[_i];\n\n if (queuedTarget.blockedOn === unblocked) {\n queuedTarget.blockedOn = null;\n }\n }\n\n while (queuedExplicitHydrationTargets.length > 0) {\n var nextExplicitTarget = queuedExplicitHydrationTargets[0];\n\n if (nextExplicitTarget.blockedOn !== null) {\n // We're still blocked.\n break;\n } else {\n attemptExplicitHydrationTarget(nextExplicitTarget);\n\n if (nextExplicitTarget.blockedOn === null) {\n // We're unblocked.\n queuedExplicitHydrationTargets.shift();\n }\n }\n }\n}\n\nvar DiscreteEvent = 0;\nvar UserBlockingEvent = 1;\nvar ContinuousEvent = 2;\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\n\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n return prefixes;\n}\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\n\n\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\n\nvar prefixedEventNames = {};\n/**\n * Element to check for prefixes on.\n */\n\nvar style = {};\n/**\n * Bootstrap if a DOM exists.\n */\n\nif (canUseDOM) {\n style = document.createElement('div').style; // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n } // Same as above\n\n\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\n\n\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return eventName;\n}\n\nvar ANIMATION_END = getVendorPrefixedEventName('animationend');\nvar ANIMATION_ITERATION = getVendorPrefixedEventName('animationiteration');\nvar ANIMATION_START = getVendorPrefixedEventName('animationstart');\nvar TRANSITION_END = getVendorPrefixedEventName('transitionend');\n\nvar topLevelEventsToReactNames = new Map();\nvar eventPriorities = new Map(); // We store most of the events in this module in pairs of two strings so we can re-use\n// the code required to apply the same logic for event prioritization and that of the\n// SimpleEventPlugin. This complicates things slightly, but the aim is to reduce code\n// duplication (for which there would be quite a bit). For the events that are not needed\n// for the SimpleEventPlugin (otherDiscreteEvents) we process them separately as an\n// array of top level events.\n// Lastly, we ignore prettier so we can keep the formatting sane.\n// prettier-ignore\n\nvar discreteEventPairsForSimpleEventPlugin = ['cancel', 'cancel', 'click', 'click', 'close', 'close', 'contextmenu', 'contextMenu', 'copy', 'copy', 'cut', 'cut', 'auxclick', 'auxClick', 'dblclick', 'doubleClick', // Careful!\n'dragend', 'dragEnd', 'dragstart', 'dragStart', 'drop', 'drop', 'focusin', 'focus', // Careful!\n'focusout', 'blur', // Careful!\n'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'];\nvar otherDiscreteEvents = ['change', 'selectionchange', 'textInput', 'compositionstart', 'compositionend', 'compositionupdate'];\n\n\nvar userBlockingPairsForSimpleEventPlugin = ['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']; // prettier-ignore\n\nvar continuousPairsForSimpleEventPlugin = ['abort', 'abort', ANIMATION_END, 'animationEnd', ANIMATION_ITERATION, 'animationIteration', ANIMATION_START, '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', 'seeking', 'stalled', 'stalled', 'suspend', 'suspend', 'timeupdate', 'timeUpdate', TRANSITION_END, 'transitionEnd', 'waiting', 'waiting'];\n/**\n * Turns\n * ['abort', ...]\n *\n * into\n *\n * topLevelEventsToReactNames = new Map([\n * ['abort', 'onAbort'],\n * ]);\n *\n * and registers them.\n */\n\nfunction registerSimplePluginEventsAndSetTheirPriorities(eventTypes, priority) {\n // As the event types are in pairs of two, we need to iterate\n // through in twos. The events are in pairs of two to save code\n // and improve init perf of processing this array, as it will\n // result in far fewer object allocations and property accesses\n // if we only use three arrays to process all the categories of\n // instead of tuples.\n for (var i = 0; i < eventTypes.length; i += 2) {\n var topEvent = eventTypes[i];\n var event = eventTypes[i + 1];\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var reactName = 'on' + capitalizedEvent;\n eventPriorities.set(topEvent, priority);\n topLevelEventsToReactNames.set(topEvent, reactName);\n registerTwoPhaseEvent(reactName, [topEvent]);\n }\n}\n\nfunction setEventPriorities(eventTypes, priority) {\n for (var i = 0; i < eventTypes.length; i++) {\n eventPriorities.set(eventTypes[i], priority);\n }\n}\n\nfunction getEventPriorityForPluginSystem(domEventName) {\n var priority = eventPriorities.get(domEventName); // Default to a ContinuousEvent. Note: we might\n // want to warn if we can't detect the priority\n // for the event.\n\n return priority === undefined ? ContinuousEvent : priority;\n}\nfunction registerSimpleEvents() {\n registerSimplePluginEventsAndSetTheirPriorities(discreteEventPairsForSimpleEventPlugin, DiscreteEvent);\n registerSimplePluginEventsAndSetTheirPriorities(userBlockingPairsForSimpleEventPlugin, UserBlockingEvent);\n registerSimplePluginEventsAndSetTheirPriorities(continuousPairsForSimpleEventPlugin, ContinuousEvent);\n setEventPriorities(otherDiscreteEvents, DiscreteEvent);\n}\n\nvar Scheduler_now = Scheduler.unstable_now;\n\n{\n // Provide explicit error message when production+profiling bundle of e.g.\n // react-dom is used with production (non-profiling) bundle of\n // scheduler/tracing\n if (!(tracing.__interactionsRef != null && tracing.__interactionsRef.current != null)) {\n {\n throw Error( \"It is not supported to run the profiling version of a renderer (for example, `react-dom/profiling`) without also replacing the `scheduler/tracing` module with `scheduler/tracing-profiling`. Your bundler might have a setting for aliasing both modules. Learn more at https://reactjs.org/link/profiling\" );\n }\n }\n}\n// ascending numbers so we can compare them like numbers. They start at 90 to\n// avoid clashing with Scheduler's priorities.\n\nvar ImmediatePriority = 99;\nvar UserBlockingPriority = 98;\nvar NormalPriority = 97;\nvar LowPriority = 96;\nvar IdlePriority = 95; // NoPriority is the absence of priority. Also React-only.\n\nvar NoPriority = 90;\nvar initialTimeMs = Scheduler_now(); // If the initial timestamp is reasonably small, use Scheduler's `now` directly.\n\nvar SyncLanePriority = 15;\nvar SyncBatchedLanePriority = 14;\nvar InputDiscreteHydrationLanePriority = 13;\nvar InputDiscreteLanePriority = 12;\nvar InputContinuousHydrationLanePriority = 11;\nvar InputContinuousLanePriority = 10;\nvar DefaultHydrationLanePriority = 9;\nvar DefaultLanePriority = 8;\nvar TransitionHydrationPriority = 7;\nvar TransitionPriority = 6;\nvar RetryLanePriority = 5;\nvar SelectiveHydrationLanePriority = 4;\nvar IdleHydrationLanePriority = 3;\nvar IdleLanePriority = 2;\nvar OffscreenLanePriority = 1;\nvar NoLanePriority = 0;\nvar TotalLanes = 31;\nvar NoLanes =\n/* */\n0;\nvar NoLane =\n/* */\n0;\nvar SyncLane =\n/* */\n1;\nvar SyncBatchedLane =\n/* */\n2;\nvar InputDiscreteHydrationLane =\n/* */\n4;\nvar InputDiscreteLanes =\n/* */\n24;\nvar InputContinuousHydrationLane =\n/* */\n32;\nvar InputContinuousLanes =\n/* */\n192;\nvar DefaultHydrationLane =\n/* */\n256;\nvar DefaultLanes =\n/* */\n3584;\nvar TransitionHydrationLane =\n/* */\n4096;\nvar TransitionLanes =\n/* */\n4186112;\nvar RetryLanes =\n/* */\n62914560;\nvar SomeRetryLane =\n/* */\n33554432;\nvar SelectiveHydrationLane =\n/* */\n67108864;\nvar NonIdleLanes =\n/* */\n134217727;\nvar IdleHydrationLane =\n/* */\n134217728;\nvar IdleLanes =\n/* */\n805306368;\nvar OffscreenLane =\n/* */\n1073741824;\nvar NoTimestamp = -1;\nfunction setCurrentUpdateLanePriority(newLanePriority) {\n} // \"Registers\" used to \"return\" multiple values\n// Used by getHighestPriorityLanes and getNextLanes:\n\nvar return_highestLanePriority = DefaultLanePriority;\n\nfunction getHighestPriorityLanes(lanes) {\n if ((SyncLane & lanes) !== NoLanes) {\n return_highestLanePriority = SyncLanePriority;\n return SyncLane;\n }\n\n if ((SyncBatchedLane & lanes) !== NoLanes) {\n return_highestLanePriority = SyncBatchedLanePriority;\n return SyncBatchedLane;\n }\n\n if ((InputDiscreteHydrationLane & lanes) !== NoLanes) {\n return_highestLanePriority = InputDiscreteHydrationLanePriority;\n return InputDiscreteHydrationLane;\n }\n\n var inputDiscreteLanes = InputDiscreteLanes & lanes;\n\n if (inputDiscreteLanes !== NoLanes) {\n return_highestLanePriority = InputDiscreteLanePriority;\n return inputDiscreteLanes;\n }\n\n if ((lanes & InputContinuousHydrationLane) !== NoLanes) {\n return_highestLanePriority = InputContinuousHydrationLanePriority;\n return InputContinuousHydrationLane;\n }\n\n var inputContinuousLanes = InputContinuousLanes & lanes;\n\n if (inputContinuousLanes !== NoLanes) {\n return_highestLanePriority = InputContinuousLanePriority;\n return inputContinuousLanes;\n }\n\n if ((lanes & DefaultHydrationLane) !== NoLanes) {\n return_highestLanePriority = DefaultHydrationLanePriority;\n return DefaultHydrationLane;\n }\n\n var defaultLanes = DefaultLanes & lanes;\n\n if (defaultLanes !== NoLanes) {\n return_highestLanePriority = DefaultLanePriority;\n return defaultLanes;\n }\n\n if ((lanes & TransitionHydrationLane) !== NoLanes) {\n return_highestLanePriority = TransitionHydrationPriority;\n return TransitionHydrationLane;\n }\n\n var transitionLanes = TransitionLanes & lanes;\n\n if (transitionLanes !== NoLanes) {\n return_highestLanePriority = TransitionPriority;\n return transitionLanes;\n }\n\n var retryLanes = RetryLanes & lanes;\n\n if (retryLanes !== NoLanes) {\n return_highestLanePriority = RetryLanePriority;\n return retryLanes;\n }\n\n if (lanes & SelectiveHydrationLane) {\n return_highestLanePriority = SelectiveHydrationLanePriority;\n return SelectiveHydrationLane;\n }\n\n if ((lanes & IdleHydrationLane) !== NoLanes) {\n return_highestLanePriority = IdleHydrationLanePriority;\n return IdleHydrationLane;\n }\n\n var idleLanes = IdleLanes & lanes;\n\n if (idleLanes !== NoLanes) {\n return_highestLanePriority = IdleLanePriority;\n return idleLanes;\n }\n\n if ((OffscreenLane & lanes) !== NoLanes) {\n return_highestLanePriority = OffscreenLanePriority;\n return OffscreenLane;\n }\n\n {\n error('Should have found matching lanes. This is a bug in React.');\n } // This shouldn't be reachable, but as a fallback, return the entire bitmask.\n\n\n return_highestLanePriority = DefaultLanePriority;\n return lanes;\n}\n\nfunction schedulerPriorityToLanePriority(schedulerPriorityLevel) {\n switch (schedulerPriorityLevel) {\n case ImmediatePriority:\n return SyncLanePriority;\n\n case UserBlockingPriority:\n return InputContinuousLanePriority;\n\n case NormalPriority:\n case LowPriority:\n // TODO: Handle LowSchedulerPriority, somehow. Maybe the same lane as hydration.\n return DefaultLanePriority;\n\n case IdlePriority:\n return IdleLanePriority;\n\n default:\n return NoLanePriority;\n }\n}\nfunction lanePriorityToSchedulerPriority(lanePriority) {\n switch (lanePriority) {\n case SyncLanePriority:\n case SyncBatchedLanePriority:\n return ImmediatePriority;\n\n case InputDiscreteHydrationLanePriority:\n case InputDiscreteLanePriority:\n case InputContinuousHydrationLanePriority:\n case InputContinuousLanePriority:\n return UserBlockingPriority;\n\n case DefaultHydrationLanePriority:\n case DefaultLanePriority:\n case TransitionHydrationPriority:\n case TransitionPriority:\n case SelectiveHydrationLanePriority:\n case RetryLanePriority:\n return NormalPriority;\n\n case IdleHydrationLanePriority:\n case IdleLanePriority:\n case OffscreenLanePriority:\n return IdlePriority;\n\n case NoLanePriority:\n return NoPriority;\n\n default:\n {\n {\n throw Error( \"Invalid update priority: \" + lanePriority + \". This is a bug in React.\" );\n }\n }\n\n }\n}\nfunction getNextLanes(root, wipLanes) {\n // Early bailout if there's no pending work left.\n var pendingLanes = root.pendingLanes;\n\n if (pendingLanes === NoLanes) {\n return_highestLanePriority = NoLanePriority;\n return NoLanes;\n }\n\n var nextLanes = NoLanes;\n var nextLanePriority = NoLanePriority;\n var expiredLanes = root.expiredLanes;\n var suspendedLanes = root.suspendedLanes;\n var pingedLanes = root.pingedLanes; // Check if any work has expired.\n\n if (expiredLanes !== NoLanes) {\n nextLanes = expiredLanes;\n nextLanePriority = return_highestLanePriority = SyncLanePriority;\n } else {\n // Do not work on any idle work until all the non-idle work has finished,\n // even if the work is suspended.\n var nonIdlePendingLanes = pendingLanes & NonIdleLanes;\n\n if (nonIdlePendingLanes !== NoLanes) {\n var nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;\n\n if (nonIdleUnblockedLanes !== NoLanes) {\n nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);\n nextLanePriority = return_highestLanePriority;\n } else {\n var nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;\n\n if (nonIdlePingedLanes !== NoLanes) {\n nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);\n nextLanePriority = return_highestLanePriority;\n }\n }\n } else {\n // The only remaining work is Idle.\n var unblockedLanes = pendingLanes & ~suspendedLanes;\n\n if (unblockedLanes !== NoLanes) {\n nextLanes = getHighestPriorityLanes(unblockedLanes);\n nextLanePriority = return_highestLanePriority;\n } else {\n if (pingedLanes !== NoLanes) {\n nextLanes = getHighestPriorityLanes(pingedLanes);\n nextLanePriority = return_highestLanePriority;\n }\n }\n }\n }\n\n if (nextLanes === NoLanes) {\n // This should only be reachable if we're suspended\n // TODO: Consider warning in this path if a fallback timer is not scheduled.\n return NoLanes;\n } // If there are higher priority lanes, we'll include them even if they\n // are suspended.\n\n\n nextLanes = pendingLanes & getEqualOrHigherPriorityLanes(nextLanes); // If we're already in the middle of a render, switching lanes will interrupt\n // it and we'll lose our progress. We should only do this if the new lanes are\n // higher priority.\n\n if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't\n // bother waiting until the root is complete.\n (wipLanes & suspendedLanes) === NoLanes) {\n getHighestPriorityLanes(wipLanes);\n var wipLanePriority = return_highestLanePriority;\n\n if (nextLanePriority <= wipLanePriority) {\n return wipLanes;\n } else {\n return_highestLanePriority = nextLanePriority;\n }\n } // Check for entangled lanes and add them to the batch.\n //\n // A lane is said to be entangled with another when it's not allowed to render\n // in a batch that does not also include the other lane. Typically we do this\n // when multiple updates have the same source, and we only want to respond to\n // the most recent event from that source.\n //\n // Note that we apply entanglements *after* checking for partial work above.\n // This means that if a lane is entangled during an interleaved event while\n // it's already rendering, we won't interrupt it. This is intentional, since\n // entanglement is usually \"best effort\": we'll try our best to render the\n // lanes in the same batch, but it's not worth throwing out partially\n // completed work in order to do it.\n //\n // For those exceptions where entanglement is semantically important, like\n // useMutableSource, we should ensure that there is no partial work at the\n // time we apply the entanglement.\n\n\n var entangledLanes = root.entangledLanes;\n\n if (entangledLanes !== NoLanes) {\n var entanglements = root.entanglements;\n var lanes = nextLanes & entangledLanes;\n\n while (lanes > 0) {\n var index = pickArbitraryLaneIndex(lanes);\n var lane = 1 << index;\n nextLanes |= entanglements[index];\n lanes &= ~lane;\n }\n }\n\n return nextLanes;\n}\nfunction getMostRecentEventTime(root, lanes) {\n var eventTimes = root.eventTimes;\n var mostRecentEventTime = NoTimestamp;\n\n while (lanes > 0) {\n var index = pickArbitraryLaneIndex(lanes);\n var lane = 1 << index;\n var eventTime = eventTimes[index];\n\n if (eventTime > mostRecentEventTime) {\n mostRecentEventTime = eventTime;\n }\n\n lanes &= ~lane;\n }\n\n return mostRecentEventTime;\n}\n\nfunction computeExpirationTime(lane, currentTime) {\n // TODO: Expiration heuristic is constant per lane, so could use a map.\n getHighestPriorityLanes(lane);\n var priority = return_highestLanePriority;\n\n if (priority >= InputContinuousLanePriority) {\n // User interactions should expire slightly more quickly.\n //\n // NOTE: This is set to the corresponding constant as in Scheduler.js. When\n // we made it larger, a product metric in www regressed, suggesting there's\n // a user interaction that's being starved by a series of synchronous\n // updates. If that theory is correct, the proper solution is to fix the\n // starvation. However, this scenario supports the idea that expiration\n // times are an important safeguard when starvation does happen.\n //\n // Also note that, in the case of user input specifically, this will soon no\n // longer be an issue because we plan to make user input synchronous by\n // default (until you enter `startTransition`, of course.)\n //\n // If weren't planning to make these updates synchronous soon anyway, I\n // would probably make this number a configurable parameter.\n return currentTime + 250;\n } else if (priority >= TransitionPriority) {\n return currentTime + 5000;\n } else {\n // Anything idle priority or lower should never expire.\n return NoTimestamp;\n }\n}\n\nfunction markStarvedLanesAsExpired(root, currentTime) {\n // TODO: This gets called every time we yield. We can optimize by storing\n // the earliest expiration time on the root. Then use that to quickly bail out\n // of this function.\n var pendingLanes = root.pendingLanes;\n var suspendedLanes = root.suspendedLanes;\n var pingedLanes = root.pingedLanes;\n var expirationTimes = root.expirationTimes; // Iterate through the pending lanes and check if we've reached their\n // expiration time. If so, we'll assume the update is being starved and mark\n // it as expired to force it to finish.\n\n var lanes = pendingLanes;\n\n while (lanes > 0) {\n var index = pickArbitraryLaneIndex(lanes);\n var lane = 1 << index;\n var expirationTime = expirationTimes[index];\n\n if (expirationTime === NoTimestamp) {\n // Found a pending lane with no expiration time. If it's not suspended, or\n // if it's pinged, assume it's CPU-bound. Compute a new expiration time\n // using the current time.\n if ((lane & suspendedLanes) === NoLanes || (lane & pingedLanes) !== NoLanes) {\n // Assumes timestamps are monotonically increasing.\n expirationTimes[index] = computeExpirationTime(lane, currentTime);\n }\n } else if (expirationTime <= currentTime) {\n // This lane expired\n root.expiredLanes |= lane;\n }\n\n lanes &= ~lane;\n }\n} // This returns the highest priority pending lanes regardless of whether they\nfunction getLanesToRetrySynchronouslyOnError(root) {\n var everythingButOffscreen = root.pendingLanes & ~OffscreenLane;\n\n if (everythingButOffscreen !== NoLanes) {\n return everythingButOffscreen;\n }\n\n if (everythingButOffscreen & OffscreenLane) {\n return OffscreenLane;\n }\n\n return NoLanes;\n}\nfunction returnNextLanesPriority() {\n return return_highestLanePriority;\n}\nfunction includesNonIdleWork(lanes) {\n return (lanes & NonIdleLanes) !== NoLanes;\n}\nfunction includesOnlyRetries(lanes) {\n return (lanes & RetryLanes) === lanes;\n}\nfunction includesOnlyTransitions(lanes) {\n return (lanes & TransitionLanes) === lanes;\n} // To ensure consistency across multiple updates in the same event, this should\n// be a pure function, so that it always returns the same lane for given inputs.\n\nfunction findUpdateLane(lanePriority, wipLanes) {\n switch (lanePriority) {\n case NoLanePriority:\n break;\n\n case SyncLanePriority:\n return SyncLane;\n\n case SyncBatchedLanePriority:\n return SyncBatchedLane;\n\n case InputDiscreteLanePriority:\n {\n var _lane = pickArbitraryLane(InputDiscreteLanes & ~wipLanes);\n\n if (_lane === NoLane) {\n // Shift to the next priority level\n return findUpdateLane(InputContinuousLanePriority, wipLanes);\n }\n\n return _lane;\n }\n\n case InputContinuousLanePriority:\n {\n var _lane2 = pickArbitraryLane(InputContinuousLanes & ~wipLanes);\n\n if (_lane2 === NoLane) {\n // Shift to the next priority level\n return findUpdateLane(DefaultLanePriority, wipLanes);\n }\n\n return _lane2;\n }\n\n case DefaultLanePriority:\n {\n var _lane3 = pickArbitraryLane(DefaultLanes & ~wipLanes);\n\n if (_lane3 === NoLane) {\n // If all the default lanes are already being worked on, look for a\n // lane in the transition range.\n _lane3 = pickArbitraryLane(TransitionLanes & ~wipLanes);\n\n if (_lane3 === NoLane) {\n // All the transition lanes are taken, too. This should be very\n // rare, but as a last resort, pick a default lane. This will have\n // the effect of interrupting the current work-in-progress render.\n _lane3 = pickArbitraryLane(DefaultLanes);\n }\n }\n\n return _lane3;\n }\n\n case TransitionPriority: // Should be handled by findTransitionLane instead\n\n case RetryLanePriority:\n // Should be handled by findRetryLane instead\n break;\n\n case IdleLanePriority:\n var lane = pickArbitraryLane(IdleLanes & ~wipLanes);\n\n if (lane === NoLane) {\n lane = pickArbitraryLane(IdleLanes);\n }\n\n return lane;\n }\n\n {\n {\n throw Error( \"Invalid update priority: \" + lanePriority + \". This is a bug in React.\" );\n }\n }\n} // To ensure consistency across multiple updates in the same event, this should\n// be pure function, so that it always returns the same lane for given inputs.\n\nfunction findTransitionLane(wipLanes, pendingLanes) {\n // First look for lanes that are completely unclaimed, i.e. have no\n // pending work.\n var lane = pickArbitraryLane(TransitionLanes & ~pendingLanes);\n\n if (lane === NoLane) {\n // If all lanes have pending work, look for a lane that isn't currently\n // being worked on.\n lane = pickArbitraryLane(TransitionLanes & ~wipLanes);\n\n if (lane === NoLane) {\n // If everything is being worked on, pick any lane. This has the\n // effect of interrupting the current work-in-progress.\n lane = pickArbitraryLane(TransitionLanes);\n }\n }\n\n return lane;\n} // To ensure consistency across multiple updates in the same event, this should\n// be pure function, so that it always returns the same lane for given inputs.\n\nfunction findRetryLane(wipLanes) {\n // This is a fork of `findUpdateLane` designed specifically for Suspense\n // \"retries\" \u2014 a special update that attempts to flip a Suspense boundary\n // from its placeholder state to its primary/resolved state.\n var lane = pickArbitraryLane(RetryLanes & ~wipLanes);\n\n if (lane === NoLane) {\n lane = pickArbitraryLane(RetryLanes);\n }\n\n return lane;\n}\n\nfunction getHighestPriorityLane(lanes) {\n return lanes & -lanes;\n}\n\nfunction getLowestPriorityLane(lanes) {\n // This finds the most significant non-zero bit.\n var index = 31 - clz32(lanes);\n return index < 0 ? NoLanes : 1 << index;\n}\n\nfunction getEqualOrHigherPriorityLanes(lanes) {\n return (getLowestPriorityLane(lanes) << 1) - 1;\n}\n\nfunction pickArbitraryLane(lanes) {\n // This wrapper function gets inlined. Only exists so to communicate that it\n // doesn't matter which bit is selected; you can pick any bit without\n // affecting the algorithms where its used. Here I'm using\n // getHighestPriorityLane because it requires the fewest operations.\n return getHighestPriorityLane(lanes);\n}\n\nfunction pickArbitraryLaneIndex(lanes) {\n return 31 - clz32(lanes);\n}\n\nfunction laneToIndex(lane) {\n return pickArbitraryLaneIndex(lane);\n}\n\nfunction includesSomeLane(a, b) {\n return (a & b) !== NoLanes;\n}\nfunction isSubsetOfLanes(set, subset) {\n return (set & subset) === subset;\n}\nfunction mergeLanes(a, b) {\n return a | b;\n}\nfunction removeLanes(set, subset) {\n return set & ~subset;\n} // Seems redundant, but it changes the type from a single lane (used for\n// updates) to a group of lanes (used for flushing work).\n\nfunction laneToLanes(lane) {\n return lane;\n}\nfunction higherPriorityLane(a, b) {\n // This works because the bit ranges decrease in priority as you go left.\n return a !== NoLane && a < b ? a : b;\n}\nfunction createLaneMap(initial) {\n // Intentionally pushing one by one.\n // https://v8.dev/blog/elements-kinds#avoid-creating-holes\n var laneMap = [];\n\n for (var i = 0; i < TotalLanes; i++) {\n laneMap.push(initial);\n }\n\n return laneMap;\n}\nfunction markRootUpdated(root, updateLane, eventTime) {\n root.pendingLanes |= updateLane; // TODO: Theoretically, any update to any lane can unblock any other lane. But\n // it's not practical to try every single possible combination. We need a\n // heuristic to decide which lanes to attempt to render, and in which batches.\n // For now, we use the same heuristic as in the old ExpirationTimes model:\n // retry any lane at equal or lower priority, but don't try updates at higher\n // priority without also including the lower priority updates. This works well\n // when considering updates across different priority levels, but isn't\n // sufficient for updates within the same priority, since we want to treat\n // those updates as parallel.\n // Unsuspend any update at equal or lower priority.\n\n var higherPriorityLanes = updateLane - 1; // Turns 0b1000 into 0b0111\n\n root.suspendedLanes &= higherPriorityLanes;\n root.pingedLanes &= higherPriorityLanes;\n var eventTimes = root.eventTimes;\n var index = laneToIndex(updateLane); // We can always overwrite an existing timestamp because we prefer the most\n // recent event, and we assume time is monotonically increasing.\n\n eventTimes[index] = eventTime;\n}\nfunction markRootSuspended(root, suspendedLanes) {\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes; // The suspended lanes are no longer CPU-bound. Clear their expiration times.\n\n var expirationTimes = root.expirationTimes;\n var lanes = suspendedLanes;\n\n while (lanes > 0) {\n var index = pickArbitraryLaneIndex(lanes);\n var lane = 1 << index;\n expirationTimes[index] = NoTimestamp;\n lanes &= ~lane;\n }\n}\nfunction markRootPinged(root, pingedLanes, eventTime) {\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n}\nfunction markDiscreteUpdatesExpired(root) {\n root.expiredLanes |= InputDiscreteLanes & root.pendingLanes;\n}\nfunction hasDiscreteLanes(lanes) {\n return (lanes & InputDiscreteLanes) !== NoLanes;\n}\nfunction markRootMutableRead(root, updateLane) {\n root.mutableReadLanes |= updateLane & root.pendingLanes;\n}\nfunction markRootFinished(root, remainingLanes) {\n var noLongerPendingLanes = root.pendingLanes & ~remainingLanes;\n root.pendingLanes = remainingLanes; // Let's try everything again\n\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.mutableReadLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n var entanglements = root.entanglements;\n var eventTimes = root.eventTimes;\n var expirationTimes = root.expirationTimes; // Clear the lanes that no longer have pending work\n\n var lanes = noLongerPendingLanes;\n\n while (lanes > 0) {\n var index = pickArbitraryLaneIndex(lanes);\n var lane = 1 << index;\n entanglements[index] = NoLanes;\n eventTimes[index] = NoTimestamp;\n expirationTimes[index] = NoTimestamp;\n lanes &= ~lane;\n }\n}\nfunction markRootEntangled(root, entangledLanes) {\n root.entangledLanes |= entangledLanes;\n var entanglements = root.entanglements;\n var lanes = entangledLanes;\n\n while (lanes > 0) {\n var index = pickArbitraryLaneIndex(lanes);\n var lane = 1 << index;\n entanglements[index] |= entangledLanes;\n lanes &= ~lane;\n }\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; // Count leading zeros. Only used on lanes, so assume input is an integer.\n// Based on:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nfunction clz32Fallback(lanes) {\n if (lanes === 0) {\n return 32;\n }\n\n return 31 - (log(lanes) / LN2 | 0) | 0;\n}\n\n// Intentionally not named imports because Rollup would use dynamic dispatch for\nvar UserBlockingPriority$1 = Scheduler.unstable_UserBlockingPriority,\n runWithPriority = Scheduler.unstable_runWithPriority; // TODO: can we stop exporting these?\n\nvar _enabled = true; // This is exported in FB builds for use by legacy FB layer infra.\n// We'd like to remove this but it's not clear if this is safe.\n\nfunction setEnabled(enabled) {\n _enabled = !!enabled;\n}\nfunction isEnabled() {\n return _enabled;\n}\nfunction createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags) {\n var eventPriority = getEventPriorityForPluginSystem(domEventName);\n var listenerWrapper;\n\n switch (eventPriority) {\n case DiscreteEvent:\n listenerWrapper = dispatchDiscreteEvent;\n break;\n\n case UserBlockingEvent:\n listenerWrapper = dispatchUserBlockingUpdate;\n break;\n\n case ContinuousEvent:\n default:\n listenerWrapper = dispatchEvent;\n break;\n }\n\n return listenerWrapper.bind(null, domEventName, eventSystemFlags, targetContainer);\n}\n\nfunction dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n {\n flushDiscreteUpdatesIfNeeded(nativeEvent.timeStamp);\n }\n\n discreteUpdates(dispatchEvent, domEventName, eventSystemFlags, container, nativeEvent);\n}\n\nfunction dispatchUserBlockingUpdate(domEventName, eventSystemFlags, container, nativeEvent) {\n {\n runWithPriority(UserBlockingPriority$1, dispatchEvent.bind(null, domEventName, eventSystemFlags, container, nativeEvent));\n }\n}\n\nfunction dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n if (!_enabled) {\n return;\n }\n\n var allowReplay = true;\n\n {\n // TODO: replaying capture phase events is currently broken\n // because we used to do it during top-level native bubble handlers\n // but now we use different bubble and capture handlers.\n // In eager mode, we attach capture listeners early, so we need\n // to filter them out until we fix the logic to handle them correctly.\n // This could've been outside the flag but I put it inside to reduce risk.\n allowReplay = (eventSystemFlags & IS_CAPTURE_PHASE) === 0;\n }\n\n if (allowReplay && hasQueuedDiscreteEvents() && isReplayableDiscreteEvent(domEventName)) {\n // If we already have a queue of discrete events, and this is another discrete\n // event, then we can't dispatch it regardless of its target, since they\n // need to dispatch in order.\n queueDiscreteEvent(null, // Flags that we're not actually blocked on anything as far as we know.\n domEventName, eventSystemFlags, targetContainer, nativeEvent);\n return;\n }\n\n var blockedOn = attemptToDispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n if (blockedOn === null) {\n // We successfully dispatched this event.\n if (allowReplay) {\n clearIfContinuousEvent(domEventName, nativeEvent);\n }\n\n return;\n }\n\n if (allowReplay) {\n if (isReplayableDiscreteEvent(domEventName)) {\n // This this to be replayed later once the target is available.\n queueDiscreteEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);\n return;\n }\n\n if (queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent)) {\n return;\n } // We need to clear only if we didn't queue because\n // queueing is accummulative.\n\n\n clearIfContinuousEvent(domEventName, nativeEvent);\n } // This is not replayable so we'll invoke it but without a target,\n // in case the event system needs to trace it.\n\n\n dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, null, targetContainer);\n} // Attempt dispatching an event. Returns a SuspenseInstance or Container if it's blocked.\n\nfunction attemptToDispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n // TODO: Warn if _enabled is false.\n var nativeEventTarget = getEventTarget(nativeEvent);\n var targetInst = getClosestInstanceFromNode(nativeEventTarget);\n\n if (targetInst !== null) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n\n if (nearestMounted === null) {\n // This tree has been unmounted already. Dispatch without a target.\n targetInst = null;\n } else {\n var tag = nearestMounted.tag;\n\n if (tag === SuspenseComponent) {\n var instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n if (instance !== null) {\n // Queue the event to be replayed later. Abort dispatching since we\n // don't want this event dispatched twice through the event system.\n // TODO: If this is the first discrete event in the queue. Schedule an increased\n // priority for this boundary.\n return instance;\n } // This shouldn't happen, something went wrong but to avoid blocking\n // the whole system, dispatch the event without a target.\n // TODO: Warn.\n\n\n targetInst = null;\n } else if (tag === HostRoot) {\n var root = nearestMounted.stateNode;\n\n if (root.hydrate) {\n // If this happens during a replay something went wrong and it might block\n // the whole system.\n return getContainerFromFiber(nearestMounted);\n }\n\n targetInst = null;\n } else if (nearestMounted !== targetInst) {\n // If we get an event (ex: img onload) before committing that\n // component's mount, ignore it for now (that is, treat it as if it was an\n // event on a non-React tree). We might also consider queueing events and\n // dispatching them after the mount.\n targetInst = null;\n }\n }\n }\n\n dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer); // We're not blocked on anything.\n\n return null;\n}\n\nfunction addEventBubbleListener(target, eventType, listener) {\n target.addEventListener(eventType, listener, false);\n return listener;\n}\nfunction addEventCaptureListener(target, eventType, listener) {\n target.addEventListener(eventType, listener, true);\n return listener;\n}\nfunction addEventCaptureListenerWithPassiveFlag(target, eventType, listener, passive) {\n target.addEventListener(eventType, listener, {\n capture: true,\n passive: passive\n });\n return listener;\n}\nfunction addEventBubbleListenerWithPassiveFlag(target, eventType, listener, passive) {\n target.addEventListener(eventType, listener, {\n passive: passive\n });\n return listener;\n}\n\n/**\n * These variables store information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n *\n */\nvar root = null;\nvar startText = null;\nvar fallbackText = null;\nfunction initialize(nativeEventTarget) {\n root = nativeEventTarget;\n startText = getText();\n return true;\n}\nfunction reset() {\n root = null;\n startText = null;\n fallbackText = null;\n}\nfunction getData() {\n if (fallbackText) {\n return fallbackText;\n }\n\n var start;\n var startValue = startText;\n var startLength = startValue.length;\n var end;\n var endValue = getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n fallbackText = endValue.slice(start, sliceTail);\n return fallbackText;\n}\nfunction getText() {\n if ('value' in root) {\n return root.value;\n }\n\n return root.textContent;\n}\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode; // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n } // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux)\n // report Enter as charCode 10 when ctrl is pressed.\n\n\n if (charCode === 10) {\n charCode = 13;\n } // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n\n\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nfunction functionThatReturnsTrue() {\n return true;\n}\n\nfunction functionThatReturnsFalse() {\n return false;\n} // This is intentionally a factory so that we have different returned constructors.\n// If we had a single constructor, it would be megamorphic and engines would deopt.\n\n\nfunction createSyntheticEvent(Interface) {\n /**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n */\n function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n\n for (var _propName in Interface) {\n if (!Interface.hasOwnProperty(_propName)) {\n continue;\n }\n\n var normalize = Interface[_propName];\n\n if (normalize) {\n this[_propName] = normalize(nativeEvent);\n } else {\n this[_propName] = nativeEvent[_propName];\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n\n if (defaultPrevented) {\n this.isDefaultPrevented = functionThatReturnsTrue;\n } else {\n this.isDefaultPrevented = functionThatReturnsFalse;\n }\n\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n\n _assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault(); // $FlowFixMe - flow is not aware of `unknown` in IE\n } else if (typeof event.returnValue !== 'unknown') {\n event.returnValue = false;\n }\n\n this.isDefaultPrevented = functionThatReturnsTrue;\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation(); // $FlowFixMe - flow is not aware of `unknown` in IE\n } else if (typeof event.cancelBubble !== 'unknown') {\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = functionThatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {// Modern event system doesn't use pooling.\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: functionThatReturnsTrue\n });\n\n return SyntheticBaseEvent;\n}\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n};\nvar SyntheticEvent = createSyntheticEvent(EventInterface);\n\nvar UIEventInterface = _assign({}, EventInterface, {\n view: 0,\n detail: 0\n});\n\nvar SyntheticUIEvent = createSyntheticEvent(UIEventInterface);\nvar lastMovementX;\nvar lastMovementY;\nvar lastMouseEvent;\n\nfunction updateMouseMovementPolyfillState(event) {\n if (event !== lastMouseEvent) {\n if (lastMouseEvent && event.type === 'mousemove') {\n lastMovementX = event.screenX - lastMouseEvent.screenX;\n lastMovementY = event.screenY - lastMouseEvent.screenY;\n } else {\n lastMovementX = 0;\n lastMovementY = 0;\n }\n\n lastMouseEvent = event;\n }\n}\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar MouseEventInterface = _assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n if (event.relatedTarget === undefined) return event.fromElement === event.srcElement ? event.toElement : event.fromElement;\n return event.relatedTarget;\n },\n movementX: function (event) {\n if ('movementX' in event) {\n return event.movementX;\n }\n\n updateMouseMovementPolyfillState(event);\n return lastMovementX;\n },\n movementY: function (event) {\n if ('movementY' in event) {\n return event.movementY;\n } // Don't need to call updateMouseMovementPolyfillState() here\n // because it's guaranteed to have already run when movementX\n // was copied.\n\n\n return lastMovementY;\n }\n});\n\nvar SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface);\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar DragEventInterface = _assign({}, MouseEventInterface, {\n dataTransfer: 0\n});\n\nvar SyntheticDragEvent = createSyntheticEvent(DragEventInterface);\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar FocusEventInterface = _assign({}, UIEventInterface, {\n relatedTarget: 0\n});\n\nvar SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\n\nvar AnimationEventInterface = _assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n});\n\nvar SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\n\nvar ClipboardEventInterface = _assign({}, EventInterface, {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n});\n\nvar SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\n\nvar CompositionEventInterface = _assign({}, EventInterface, {\n data: 0\n});\n\nvar SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\n// Happens to share the same list for now.\n\nvar SyntheticInputEvent = SyntheticCompositionEvent;\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar normalizeKey = {\n Esc: 'Escape',\n Spacebar: ' ',\n Left: 'ArrowLeft',\n Up: 'ArrowUp',\n Right: 'ArrowRight',\n Down: 'ArrowDown',\n Del: 'Delete',\n Win: 'OS',\n Menu: 'ContextMenu',\n Apps: 'ContextMenu',\n Scroll: 'ScrollLock',\n MozPrintableKey: 'Unidentified'\n};\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar translateToKey = {\n '8': 'Backspace',\n '9': 'Tab',\n '12': 'Clear',\n '13': 'Enter',\n '16': 'Shift',\n '17': 'Control',\n '18': 'Alt',\n '19': 'Pause',\n '20': 'CapsLock',\n '27': 'Escape',\n '32': ' ',\n '33': 'PageUp',\n '34': 'PageDown',\n '35': 'End',\n '36': 'Home',\n '37': 'ArrowLeft',\n '38': 'ArrowUp',\n '39': 'ArrowRight',\n '40': 'ArrowDown',\n '45': 'Insert',\n '46': 'Delete',\n '112': 'F1',\n '113': 'F2',\n '114': 'F3',\n '115': 'F4',\n '116': 'F5',\n '117': 'F6',\n '118': 'F7',\n '119': 'F8',\n '120': 'F9',\n '121': 'F10',\n '122': 'F11',\n '123': 'F12',\n '144': 'NumLock',\n '145': 'ScrollLock',\n '224': 'Meta'\n};\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\n\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n\n if (key !== 'Unidentified') {\n return key;\n }\n } // Browser does not implement `key`, polyfill as much of it as we can.\n\n\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent); // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n\n return '';\n}\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\n\nvar modifierKeyToProp = {\n Alt: 'altKey',\n Control: 'ctrlKey',\n Meta: 'metaKey',\n Shift: 'shiftKey'\n}; // Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support\n// getModifierState. If getModifierState is not supported, we map it to a set of\n// modifier keys exposed by the event. In this case, Lock-keys are not supported.\n\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar KeyboardEventInterface = _assign({}, UIEventInterface, {\n key: getEventKey,\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n\n return 0;\n }\n});\n\nvar SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface);\n/**\n * @interface PointerEvent\n * @see http://www.w3.org/TR/pointerevents/\n */\n\nvar PointerEventInterface = _assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n});\n\nvar SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface);\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\n\nvar TouchEventInterface = _assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n});\n\nvar SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\n\nvar TransitionEventInterface = _assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n});\n\nvar SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface);\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar WheelEventInterface = _assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: 0,\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: 0\n});\n\nvar SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\n\nvar START_KEYCODE = 229;\nvar canUseCompositionEvent = canUseDOM && 'CompositionEvent' in window;\nvar documentMode = null;\n\nif (canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n} // Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\n\n\nvar canUseTextInputEvent = canUseDOM && 'TextEvent' in window && !documentMode; // In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\n\nvar useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\nfunction registerEvents() {\n registerTwoPhaseEvent('onBeforeInput', ['compositionend', 'keypress', 'textInput', 'paste']);\n registerTwoPhaseEvent('onCompositionEnd', ['compositionend', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n registerTwoPhaseEvent('onCompositionStart', ['compositionstart', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n registerTwoPhaseEvent('onCompositionUpdate', ['compositionupdate', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n} // Track whether we've ever handled a keypress on the space key.\n\n\nvar hasSpaceKeypress = false;\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\n\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n/**\n * Translate native top level events into event types.\n */\n\n\nfunction getCompositionEventType(domEventName) {\n switch (domEventName) {\n case 'compositionstart':\n return 'onCompositionStart';\n\n case 'compositionend':\n return 'onCompositionEnd';\n\n case 'compositionupdate':\n return 'onCompositionUpdate';\n }\n}\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n */\n\n\nfunction isFallbackCompositionStart(domEventName, nativeEvent) {\n return domEventName === 'keydown' && nativeEvent.keyCode === START_KEYCODE;\n}\n/**\n * Does our fallback mode think that this event is the end of composition?\n */\n\n\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case 'keyup':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n\n case 'keydown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n\n case 'keypress':\n case 'mousedown':\n case 'focusout':\n // Events are not possible without cancelling IME.\n return true;\n\n default:\n return false;\n }\n}\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\n\n\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n\n return null;\n}\n/**\n * Check if a composition event was triggered by Korean IME.\n * Our fallback mode does not work well with IE's Korean IME,\n * so just use native composition events when Korean IME is used.\n * Although CompositionEvent.locale property is deprecated,\n * it is available in IE, where our fallback mode is enabled.\n *\n * @param {object} nativeEvent\n * @return {boolean}\n */\n\n\nfunction isUsingKoreanIME(nativeEvent) {\n return nativeEvent.locale === 'ko';\n} // Track the current IME composition status, if any.\n\n\nvar isComposing = false;\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\n\nfunction extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(domEventName);\n } else if (!isComposing) {\n if (isFallbackCompositionStart(domEventName, nativeEvent)) {\n eventType = 'onCompositionStart';\n }\n } else if (isFallbackCompositionEnd(domEventName, nativeEvent)) {\n eventType = 'onCompositionEnd';\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!isComposing && eventType === 'onCompositionStart') {\n isComposing = initialize(nativeEventTarget);\n } else if (eventType === 'onCompositionEnd') {\n if (isComposing) {\n fallbackData = getData();\n }\n }\n }\n\n var listeners = accumulateTwoPhaseListeners(targetInst, eventType);\n\n if (listeners.length > 0) {\n var event = new SyntheticCompositionEvent(eventType, domEventName, null, nativeEvent, nativeEventTarget);\n dispatchQueue.push({\n event: event,\n listeners: listeners\n });\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n\n if (customData !== null) {\n event.data = customData;\n }\n }\n }\n}\n\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case 'compositionend':\n return getDataFromCustomEvent(nativeEvent);\n\n case 'keypress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'textInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data; // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to ignore it.\n\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n */\n\n\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (isComposing) {\n if (domEventName === 'compositionend' || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) {\n var chars = getData();\n reset();\n isComposing = false;\n return chars;\n }\n\n return null;\n }\n\n switch (domEventName) {\n case 'paste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n\n case 'keypress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (!isKeypressCommand(nativeEvent)) {\n // IE fires the `keypress` event when a user types an emoji via\n // Touch keyboard of Windows. In such a case, the `char` property\n // holds an emoji character like `\\uD83D\\uDE0A`. Because its length\n // is 2, the property `which` does not represent an emoji correctly.\n // In such a case, we directly return the `char` property instead of\n // using `which`.\n if (nativeEvent.char && nativeEvent.char.length > 1) {\n return nativeEvent.char;\n } else if (nativeEvent.which) {\n return String.fromCharCode(nativeEvent.which);\n }\n }\n\n return null;\n\n case 'compositionend':\n return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data;\n\n default:\n return null;\n }\n}\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\n\n\nfunction extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(domEventName, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(domEventName, nativeEvent);\n } // If no characters are being inserted, no BeforeInput event should\n // be fired.\n\n\n if (!chars) {\n return null;\n }\n\n var listeners = accumulateTwoPhaseListeners(targetInst, 'onBeforeInput');\n\n if (listeners.length > 0) {\n var event = new SyntheticInputEvent('onBeforeInput', 'beforeinput', null, nativeEvent, nativeEventTarget);\n dispatchQueue.push({\n event: event,\n listeners: listeners\n });\n event.data = chars;\n }\n}\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\n\n\nfunction extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n}\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\nvar supportedInputTypes = {\n color: true,\n date: true,\n datetime: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n password: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\n\nfunction isEventSupported(eventNameSuffix) {\n if (!canUseDOM) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = (eventName in document);\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n return isSupported;\n}\n\nfunction registerEvents$1() {\n registerTwoPhaseEvent('onChange', ['change', 'click', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'selectionchange']);\n}\n\nfunction createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {\n // Flag this event loop as needing state restore.\n enqueueStateRestore(target);\n var listeners = accumulateTwoPhaseListeners(inst, 'onChange');\n\n if (listeners.length > 0) {\n var event = new SyntheticEvent('onChange', 'change', null, nativeEvent, target);\n dispatchQueue.push({\n event: event,\n listeners: listeners\n });\n }\n}\n/**\n * For IE shims\n */\n\n\nvar activeElement = null;\nvar activeElementInst = null;\n/**\n * SECTION: handle `change` event\n */\n\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(dispatchQueue, activeElementInst, nativeEvent, getEventTarget(nativeEvent)); // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n\n batchedUpdates(runEventInBatch, dispatchQueue);\n}\n\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\n\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n\n if (updateValueIfChanged(targetNode)) {\n return targetInst;\n }\n}\n\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (domEventName === 'change') {\n return targetInst;\n }\n}\n/**\n * SECTION: handle `input` event\n */\n\n\nvar isInputEventSupported = false;\n\nif (canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\n\n\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\n\n\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n activeElement = null;\n activeElementInst = null;\n}\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\n\n\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n\n if (getInstIfValueChanged(activeElementInst)) {\n manualDispatchChangeEvent(nativeEvent);\n }\n}\n\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n if (domEventName === 'focusin') {\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (domEventName === 'focusout') {\n stopWatchingForValueChange();\n }\n} // For IE8 and IE9.\n\n\nfunction getTargetInstForInputEventPolyfill(domEventName, targetInst) {\n if (domEventName === 'selectionchange' || domEventName === 'keyup' || domEventName === 'keydown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n return getInstIfValueChanged(activeElementInst);\n }\n}\n/**\n * SECTION: handle `click` event\n */\n\n\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (domEventName === 'click') {\n return getInstIfValueChanged(targetInst);\n }\n}\n\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (domEventName === 'input' || domEventName === 'change') {\n return getInstIfValueChanged(targetInst);\n }\n}\n\nfunction handleControlledInputBlur(node) {\n var state = node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n {\n // If controlled, assign the value attribute to the current value on blur\n setDefaultValue(node, 'number', node.value);\n }\n}\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\n\n\nfunction extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n var getTargetInstFunc, handleEventFunc;\n\n if (shouldUseChangeEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n handleEventFunc = handleEventsForInputEventPolyfill;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(domEventName, targetInst);\n\n if (inst) {\n createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, nativeEventTarget);\n return;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(domEventName, targetNode, targetInst);\n } // When blurring, set the value attribute for number inputs\n\n\n if (domEventName === 'focusout') {\n handleControlledInputBlur(targetNode);\n }\n}\n\nfunction registerEvents$2() {\n registerDirectEvent('onMouseEnter', ['mouseout', 'mouseover']);\n registerDirectEvent('onMouseLeave', ['mouseout', 'mouseover']);\n registerDirectEvent('onPointerEnter', ['pointerout', 'pointerover']);\n registerDirectEvent('onPointerLeave', ['pointerout', 'pointerover']);\n}\n/**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n\n\nfunction extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n var isOverEvent = domEventName === 'mouseover' || domEventName === 'pointerover';\n var isOutEvent = domEventName === 'mouseout' || domEventName === 'pointerout';\n\n if (isOverEvent && (eventSystemFlags & IS_REPLAYED) === 0) {\n // If this is an over event with a target, we might have already dispatched\n // the event in the out event of the other target. If this is replayed,\n // then it's because we couldn't dispatch against this target previously\n // so we have to do it now instead.\n var related = nativeEvent.relatedTarget || nativeEvent.fromElement;\n\n if (related) {\n // If the related node is managed by React, we can assume that we have\n // already dispatched the corresponding events during its mouseout.\n if (getClosestInstanceFromNode(related) || isContainerMarkedAsRoot(related)) {\n return;\n }\n }\n }\n\n if (!isOutEvent && !isOverEvent) {\n // Must not be a mouse or pointer in or out - ignoring.\n return;\n }\n\n var win; // TODO: why is this nullable in the types but we read from it?\n\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n\n if (isOutEvent) {\n var _related = nativeEvent.relatedTarget || nativeEvent.toElement;\n\n from = targetInst;\n to = _related ? getClosestInstanceFromNode(_related) : null;\n\n if (to !== null) {\n var nearestMounted = getNearestMountedFiber(to);\n\n if (to !== nearestMounted || to.tag !== HostComponent && to.tag !== HostText) {\n to = null;\n }\n }\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return;\n }\n\n var SyntheticEventCtor = SyntheticMouseEvent;\n var leaveEventType = 'onMouseLeave';\n var enterEventType = 'onMouseEnter';\n var eventTypePrefix = 'mouse';\n\n if (domEventName === 'pointerout' || domEventName === 'pointerover') {\n SyntheticEventCtor = SyntheticPointerEvent;\n leaveEventType = 'onPointerLeave';\n enterEventType = 'onPointerEnter';\n eventTypePrefix = 'pointer';\n }\n\n var fromNode = from == null ? win : getNodeFromInstance(from);\n var toNode = to == null ? win : getNodeFromInstance(to);\n var leave = new SyntheticEventCtor(leaveEventType, eventTypePrefix + 'leave', from, nativeEvent, nativeEventTarget);\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n var enter = null; // We should only process this nativeEvent if we are processing\n // the first ancestor. Next time, we will ignore the event.\n\n var nativeTargetInst = getClosestInstanceFromNode(nativeEventTarget);\n\n if (nativeTargetInst === targetInst) {\n var enterEvent = new SyntheticEventCtor(enterEventType, eventTypePrefix + 'enter', to, nativeEvent, nativeEventTarget);\n enterEvent.target = toNode;\n enterEvent.relatedTarget = fromNode;\n enter = enterEvent;\n }\n\n accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leave, enter, from, to);\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar hasOwnProperty$2 = Object.prototype.hasOwnProperty;\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\n\nfunction shallowEqual(objA, objB) {\n if (objectIs(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 } // Test for A's keys different from B.\n\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty$2.call(objB, keysA[i]) || !objectIs(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n\n return node;\n}\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\n\n\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n\n node = node.parentNode;\n }\n}\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\n\n\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === TEXT_NODE) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\n/**\n * @param {DOMElement} outerNode\n * @return {?object}\n */\n\nfunction getOffsets(outerNode) {\n var ownerDocument = outerNode.ownerDocument;\n var win = ownerDocument && ownerDocument.defaultView || window;\n var selection = win.getSelection && win.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode,\n anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode,\n focusOffset = selection.focusOffset; // In Firefox, anchorNode and focusNode can be \"anonymous divs\", e.g. the\n // up/down buttons on an <input type=\"number\">. Anonymous divs do not seem to\n // expose properties, triggering a \"Permission denied error\" if any of its\n // properties are accessed. The only seemingly possible way to avoid erroring\n // is to access a property that typically works for non-anonymous divs and\n // catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\n try {\n /* eslint-disable no-unused-expressions */\n anchorNode.nodeType;\n focusNode.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n/**\n * Returns {start, end} where `start` is the character/codepoint index of\n * (anchorNode, anchorOffset) within the textContent of `outerNode`, and\n * `end` is the index of (focusNode, focusOffset).\n *\n * Returns null if you pass in garbage input but we should probably just crash.\n *\n * Exported only for testing.\n */\n\nfunction getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {\n var length = 0;\n var start = -1;\n var end = -1;\n var indexWithinAnchor = 0;\n var indexWithinFocus = 0;\n var node = outerNode;\n var parentNode = null;\n\n outer: while (true) {\n var next = null;\n\n while (true) {\n if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {\n start = length + anchorOffset;\n }\n\n if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {\n end = length + focusOffset;\n }\n\n if (node.nodeType === TEXT_NODE) {\n length += node.nodeValue.length;\n }\n\n if ((next = node.firstChild) === null) {\n break;\n } // Moving from `node` to its first child `next`.\n\n\n parentNode = node;\n node = next;\n }\n\n while (true) {\n if (node === outerNode) {\n // If `outerNode` has children, this is always the second time visiting\n // it. If it has no children, this is still the first loop, and the only\n // valid selection is anchorNode and focusNode both equal to this node\n // and both offsets 0, in which case we will have handled above.\n break outer;\n }\n\n if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {\n start = length;\n }\n\n if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {\n end = length;\n }\n\n if ((next = node.nextSibling) !== null) {\n break;\n }\n\n node = parentNode;\n parentNode = node.parentNode;\n } // Moving from `node` to its next sibling `next`.\n\n\n node = next;\n }\n\n if (start === -1 || end === -1) {\n // This should never happen. (Would happen if the anchor/focus nodes aren't\n // actually inside the passed-in node.)\n return null;\n }\n\n return {\n start: start,\n end: end\n };\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n\nfunction setOffsets(node, offsets) {\n var doc = node.ownerDocument || document;\n var win = doc && doc.defaultView || window; // Edge fails with \"Object expected\" in some scenarios.\n // (For instance: TinyMCE editor used in a list component that supports pasting to add more,\n // fails when pasting 100+ items)\n\n if (!win.getSelection) {\n return;\n }\n\n var selection = win.getSelection();\n var length = node.textContent.length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length); // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {\n return;\n }\n\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nfunction isTextNode(node) {\n return node && node.nodeType === TEXT_NODE;\n}\n\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nfunction isInDocument(node) {\n return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);\n}\n\nfunction isSameOriginFrame(iframe) {\n try {\n // Accessing the contentDocument of a HTMLIframeElement can cause the browser\n // to throw, e.g. if it has a cross-origin src attribute.\n // Safari will show an error in the console when the access results in \"Blocked a frame with origin\". e.g:\n // iframe.contentDocument.defaultView;\n // A safety way is to access one of the cross origin properties: Window or Location\n // Which might result in \"SecurityError\" DOM Exception and it is compatible to Safari.\n // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl\n return typeof iframe.contentWindow.location.href === 'string';\n } catch (err) {\n return false;\n }\n}\n\nfunction getActiveElementDeep() {\n var win = window;\n var element = getActiveElement();\n\n while (element instanceof win.HTMLIFrameElement) {\n if (isSameOriginFrame(element)) {\n win = element.contentWindow;\n } else {\n return element;\n }\n\n element = getActiveElement(win.document);\n }\n\n return element;\n}\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\n\n/**\n * @hasSelectionCapabilities: we get the element types that support selection\n * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart`\n * and `selectionEnd` rows.\n */\n\n\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && (elem.type === 'text' || elem.type === 'search' || elem.type === 'tel' || elem.type === 'url' || elem.type === 'password') || nodeName === 'textarea' || elem.contentEditable === 'true');\n}\nfunction getSelectionInformation() {\n var focusedElem = getActiveElementDeep();\n return {\n focusedElem: focusedElem,\n selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection(focusedElem) : null\n };\n}\n/**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n\nfunction restoreSelection(priorSelectionInformation) {\n var curFocusedElem = getActiveElementDeep();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) {\n setSelection(priorFocusedElem, priorSelectionRange);\n } // Focusing a node can change the scroll position, which is undesirable\n\n\n var ancestors = [];\n var ancestor = priorFocusedElem;\n\n while (ancestor = ancestor.parentNode) {\n if (ancestor.nodeType === ELEMENT_NODE) {\n ancestors.push({\n element: ancestor,\n left: ancestor.scrollLeft,\n top: ancestor.scrollTop\n });\n }\n }\n\n if (typeof priorFocusedElem.focus === 'function') {\n priorFocusedElem.focus();\n }\n\n for (var i = 0; i < ancestors.length; i++) {\n var info = ancestors[i];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n}\n/**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n\nfunction getSelection(input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else {\n // Content editable or old IE textarea.\n selection = getOffsets(input);\n }\n\n return selection || {\n start: 0,\n end: 0\n };\n}\n/**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n\nfunction setSelection(input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else {\n setOffsets(input, offsets);\n }\n}\n\nvar skipSelectionChangeEvent = canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nfunction registerEvents$3() {\n registerTwoPhaseEvent('onSelect', ['focusout', 'contextmenu', 'dragend', 'focusin', 'keydown', 'keyup', 'mousedown', 'mouseup', 'selectionchange']);\n}\n\nvar activeElement$1 = null;\nvar activeElementInst$1 = null;\nvar lastSelection = null;\nvar mouseDown = false;\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n */\n\nfunction getSelection$1(node) {\n if ('selectionStart' in node && hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else {\n var win = node.ownerDocument && node.ownerDocument.defaultView || window;\n var selection = win.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n }\n}\n/**\n * Get document associated with the event target.\n */\n\n\nfunction getEventTargetDocument(eventTarget) {\n return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument;\n}\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @param {object} nativeEventTarget\n * @return {?SyntheticEvent}\n */\n\n\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n var doc = getEventTargetDocument(nativeEventTarget);\n\n if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) {\n return;\n } // Only fire when selection has actually changed.\n\n\n var currentSelection = getSelection$1(activeElement$1);\n\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n var listeners = accumulateTwoPhaseListeners(activeElementInst$1, 'onSelect');\n\n if (listeners.length > 0) {\n var event = new SyntheticEvent('onSelect', 'select', null, nativeEvent, nativeEventTarget);\n dispatchQueue.push({\n event: event,\n listeners: listeners\n });\n event.target = activeElement$1;\n }\n }\n}\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\n\n\nfunction extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n\n var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n\n switch (domEventName) {\n // Track the input node that has focus.\n case 'focusin':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement$1 = targetNode;\n activeElementInst$1 = targetInst;\n lastSelection = null;\n }\n\n break;\n\n case 'focusout':\n activeElement$1 = null;\n activeElementInst$1 = null;\n lastSelection = null;\n break;\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n\n case 'mousedown':\n mouseDown = true;\n break;\n\n case 'contextmenu':\n case 'mouseup':\n case 'dragend':\n mouseDown = false;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n\n case 'selectionchange':\n if (skipSelectionChangeEvent) {\n break;\n }\n\n // falls through\n\n case 'keydown':\n case 'keyup':\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n}\n\nfunction extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n\n if (reactName === undefined) {\n return;\n }\n\n var SyntheticEventCtor = SyntheticEvent;\n var reactEventType = domEventName;\n\n switch (domEventName) {\n case 'keypress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return;\n }\n\n /* falls through */\n\n case 'keydown':\n case 'keyup':\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n\n case 'focusin':\n reactEventType = 'focus';\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n\n case 'focusout':\n reactEventType = 'blur';\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n\n case 'beforeblur':\n case 'afterblur':\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n\n case 'click':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return;\n }\n\n /* falls through */\n\n case 'auxclick':\n case 'dblclick':\n case 'mousedown':\n case 'mousemove':\n case 'mouseup': // TODO: Disabled elements should not respond to mouse events\n\n /* falls through */\n\n case 'mouseout':\n case 'mouseover':\n case 'contextmenu':\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n\n case 'drag':\n case 'dragend':\n case 'dragenter':\n case 'dragexit':\n case 'dragleave':\n case 'dragover':\n case 'dragstart':\n case 'drop':\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n\n case 'touchcancel':\n case 'touchend':\n case 'touchmove':\n case 'touchstart':\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n\n case 'scroll':\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n\n case 'wheel':\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n\n case 'copy':\n case 'cut':\n case 'paste':\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n\n case 'gotpointercapture':\n case 'lostpointercapture':\n case 'pointercancel':\n case 'pointerdown':\n case 'pointermove':\n case 'pointerout':\n case 'pointerover':\n case 'pointerup':\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n }\n\n var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n {\n // Some events don't bubble in the browser.\n // In the past, React has always bubbled them, but this can be surprising.\n // We're going to try aligning closer to the browser behavior by not bubbling\n // them in React either. We'll start by not bubbling onScroll, and then expand.\n var accumulateTargetOnly = !inCapturePhase && // TODO: ideally, we'd eventually add all events from\n // nonDelegatedEvents list in DOMPluginEventSystem.\n // Then we can remove this special list.\n // This is a breaking change that can wait until React 18.\n domEventName === 'scroll';\n\n var _listeners = accumulateSinglePhaseListeners(targetInst, reactName, nativeEvent.type, inCapturePhase, accumulateTargetOnly);\n\n if (_listeners.length > 0) {\n // Intentionally create event lazily.\n var _event = new SyntheticEventCtor(reactName, reactEventType, null, nativeEvent, nativeEventTarget);\n\n dispatchQueue.push({\n event: _event,\n listeners: _listeners\n });\n }\n }\n}\n\n// TODO: remove top-level side effect.\nregisterSimpleEvents();\nregisterEvents$2();\nregisterEvents$1();\nregisterEvents$3();\nregisterEvents();\n\nfunction extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n // TODO: we should remove the concept of a \"SimpleEventPlugin\".\n // This is the basic functionality of the event system. All\n // the other plugins are essentially polyfills. So the plugin\n // should probably be inlined somewhere and have its logic\n // be core the to event system. This would potentially allow\n // us to ship builds of React without the polyfilled plugins below.\n extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n var shouldProcessPolyfillPlugins = (eventSystemFlags & SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS) === 0; // We don't process these events unless we are in the\n // event's native \"bubble\" phase, which means that we're\n // not in the capture phase. That's because we emulate\n // the capture phase here still. This is a trade-off,\n // because in an ideal world we would not emulate and use\n // the phases properly, like we do with the SimpleEvent\n // plugin. However, the plugins below either expect\n // emulation (EnterLeave) or use state localized to that\n // plugin (BeforeInput, Change, Select). The state in\n // these modules complicates things, as you'll essentially\n // get the case where the capture phase event might change\n // state, only for the following bubble event to come in\n // later and not trigger anything as the state now\n // invalidates the heuristics of the event plugin. We\n // could alter all these plugins to work in such ways, but\n // that might cause other unknown side-effects that we\n // can't forsee right now.\n\n if (shouldProcessPolyfillPlugins) {\n extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n }\n} // List of events that need to be individually attached to media elements.\n\n\nvar mediaEventTypes = ['abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'encrypted', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting']; // We should not delegate these events to the container, but rather\n// set them on the actual target element itself. This is primarily\n// because these events do not consistently bubble in the DOM.\n\nvar nonDelegatedEvents = new Set(['cancel', 'close', 'invalid', 'load', 'scroll', 'toggle'].concat(mediaEventTypes));\n\nfunction executeDispatch(event, listener, currentTarget) {\n var type = event.type || 'unknown-event';\n event.currentTarget = currentTarget;\n invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event);\n event.currentTarget = null;\n}\n\nfunction processDispatchQueueItemsInOrder(event, dispatchListeners, inCapturePhase) {\n var previousInstance;\n\n if (inCapturePhase) {\n for (var i = dispatchListeners.length - 1; i >= 0; i--) {\n var _dispatchListeners$i = dispatchListeners[i],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget,\n listener = _dispatchListeners$i.listener;\n\n if (instance !== previousInstance && event.isPropagationStopped()) {\n return;\n }\n\n executeDispatch(event, listener, currentTarget);\n previousInstance = instance;\n }\n } else {\n for (var _i = 0; _i < dispatchListeners.length; _i++) {\n var _dispatchListeners$_i = dispatchListeners[_i],\n _instance = _dispatchListeners$_i.instance,\n _currentTarget = _dispatchListeners$_i.currentTarget,\n _listener = _dispatchListeners$_i.listener;\n\n if (_instance !== previousInstance && event.isPropagationStopped()) {\n return;\n }\n\n executeDispatch(event, _listener, _currentTarget);\n previousInstance = _instance;\n }\n }\n}\n\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event,\n listeners = _dispatchQueue$i.listeners;\n processDispatchQueueItemsInOrder(event, listeners, inCapturePhase); // event system doesn't use pooling.\n } // This would be a good time to rethrow if any of the event handlers threw.\n\n\n rethrowCaughtError();\n}\n\nfunction dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n var nativeEventTarget = getEventTarget(nativeEvent);\n var dispatchQueue = [];\n extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n}\n\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var isCapturePhaseListener = false;\n var listenerSet = getEventListenerSet(targetElement);\n var listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener);\n\n if (!listenerSet.has(listenerSetKey)) {\n addTrappedEventListener(targetElement, domEventName, IS_NON_DELEGATED, isCapturePhaseListener);\n listenerSet.add(listenerSetKey);\n }\n}\nvar listeningMarker = '_reactListening' + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n {\n if (rootContainerElement[listeningMarker]) {\n // Performance optimization: don't iterate through events\n // for the same portal container or root node more than once.\n // TODO: once we remove the flag, we may be able to also\n // remove some of the bookkeeping maps used for laziness.\n return;\n }\n\n rootContainerElement[listeningMarker] = true;\n allNativeEvents.forEach(function (domEventName) {\n if (!nonDelegatedEvents.has(domEventName)) {\n listenToNativeEvent(domEventName, false, rootContainerElement, null);\n }\n\n listenToNativeEvent(domEventName, true, rootContainerElement, null);\n });\n }\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, rootContainerElement, targetElement) {\n var eventSystemFlags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var target = rootContainerElement; // selectionchange needs to be attached to the document\n // otherwise it won't capture incoming events that are only\n // triggered on the document directly.\n\n if (domEventName === 'selectionchange' && rootContainerElement.nodeType !== DOCUMENT_NODE) {\n target = rootContainerElement.ownerDocument;\n } // If the event can be delegated (or is capture phase), we can\n // register it to the root container. Otherwise, we should\n // register the event to the target element and mark it as\n // a non-delegated event.\n\n\n if (targetElement !== null && !isCapturePhaseListener && nonDelegatedEvents.has(domEventName)) {\n // For all non-delegated events, apart from scroll, we attach\n // their event listeners to the respective elements that their\n // events fire on. That means we can skip this step, as event\n // listener has already been added previously. However, we\n // special case the scroll event because the reality is that any\n // element can scroll.\n // TODO: ideally, we'd eventually apply the same logic to all\n // events from the nonDelegatedEvents list. Then we can remove\n // this special case and use the same logic for all events.\n if (domEventName !== 'scroll') {\n return;\n }\n\n eventSystemFlags |= IS_NON_DELEGATED;\n target = targetElement;\n }\n\n var listenerSet = getEventListenerSet(target);\n var listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener); // If the listener entry is empty or we should upgrade, then\n // we need to trap an event listener onto the target.\n\n if (!listenerSet.has(listenerSetKey)) {\n if (isCapturePhaseListener) {\n eventSystemFlags |= IS_CAPTURE_PHASE;\n }\n\n addTrappedEventListener(target, domEventName, eventSystemFlags, isCapturePhaseListener);\n listenerSet.add(listenerSetKey);\n }\n}\n\nfunction addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener, isDeferredListenerForLegacyFBSupport) {\n var listener = createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags); // If passive option is not supported, then the event will be\n // active and not passive.\n\n var isPassiveListener = undefined;\n\n if (passiveBrowserEventsSupported) {\n // Browsers introduced an intervention, making these events\n // passive by default on document. React doesn't bind them\n // to document anymore, but changing this now would undo\n // the performance wins from the change. So we emulate\n // the existing behavior manually on the roots now.\n // https://github.com/facebook/react/issues/19651\n if (domEventName === 'touchstart' || domEventName === 'touchmove' || domEventName === 'wheel') {\n isPassiveListener = true;\n }\n }\n\n targetContainer = targetContainer;\n var unsubscribeListener; // When legacyFBSupport is enabled, it's for when we\n\n\n if (isCapturePhaseListener) {\n if (isPassiveListener !== undefined) {\n unsubscribeListener = addEventCaptureListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n } else {\n unsubscribeListener = addEventCaptureListener(targetContainer, domEventName, listener);\n }\n } else {\n if (isPassiveListener !== undefined) {\n unsubscribeListener = addEventBubbleListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n } else {\n unsubscribeListener = addEventBubbleListener(targetContainer, domEventName, listener);\n }\n }\n}\n\nfunction isMatchingRootContainer(grandContainer, targetContainer) {\n return grandContainer === targetContainer || grandContainer.nodeType === COMMENT_NODE && grandContainer.parentNode === targetContainer;\n}\n\nfunction dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n var ancestorInst = targetInst;\n\n if ((eventSystemFlags & IS_EVENT_HANDLE_NON_MANAGED_NODE) === 0 && (eventSystemFlags & IS_NON_DELEGATED) === 0) {\n var targetContainerNode = targetContainer; // If we are using the legacy FB support flag, we\n\n if (targetInst !== null) {\n // The below logic attempts to work out if we need to change\n // the target fiber to a different ancestor. We had similar logic\n // in the legacy event system, except the big difference between\n // systems is that the modern event system now has an event listener\n // attached to each React Root and React Portal Root. Together,\n // the DOM nodes representing these roots are the \"rootContainer\".\n // To figure out which ancestor instance we should use, we traverse\n // up the fiber tree from the target instance and attempt to find\n // root boundaries that match that of our current \"rootContainer\".\n // If we find that \"rootContainer\", we find the parent fiber\n // sub-tree for that root and make that our ancestor instance.\n var node = targetInst;\n\n mainLoop: while (true) {\n if (node === null) {\n return;\n }\n\n var nodeTag = node.tag;\n\n if (nodeTag === HostRoot || nodeTag === HostPortal) {\n var container = node.stateNode.containerInfo;\n\n if (isMatchingRootContainer(container, targetContainerNode)) {\n break;\n }\n\n if (nodeTag === HostPortal) {\n // The target is a portal, but it's not the rootContainer we're looking for.\n // Normally portals handle their own events all the way down to the root.\n // So we should be able to stop now. However, we don't know if this portal\n // was part of *our* root.\n var grandNode = node.return;\n\n while (grandNode !== null) {\n var grandTag = grandNode.tag;\n\n if (grandTag === HostRoot || grandTag === HostPortal) {\n var grandContainer = grandNode.stateNode.containerInfo;\n\n if (isMatchingRootContainer(grandContainer, targetContainerNode)) {\n // This is the rootContainer we're looking for and we found it as\n // a parent of the Portal. That means we can ignore it because the\n // Portal will bubble through to us.\n return;\n }\n }\n\n grandNode = grandNode.return;\n }\n } // Now we need to find it's corresponding host fiber in the other\n // tree. To do this we can use getClosestInstanceFromNode, but we\n // need to validate that the fiber is a host instance, otherwise\n // we need to traverse up through the DOM till we find the correct\n // node that is from the other tree.\n\n\n while (container !== null) {\n var parentNode = getClosestInstanceFromNode(container);\n\n if (parentNode === null) {\n return;\n }\n\n var parentTag = parentNode.tag;\n\n if (parentTag === HostComponent || parentTag === HostText) {\n node = ancestorInst = parentNode;\n continue mainLoop;\n }\n\n container = container.parentNode;\n }\n }\n\n node = node.return;\n }\n }\n }\n\n batchedEventUpdates(function () {\n return dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, ancestorInst);\n });\n}\n\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\n\nfunction accumulateSinglePhaseListeners(targetFiber, reactName, nativeEventType, inCapturePhase, accumulateTargetOnly) {\n var captureName = reactName !== null ? reactName + 'Capture' : null;\n var reactEventName = inCapturePhase ? captureName : reactName;\n var listeners = [];\n var instance = targetFiber;\n var lastHostComponent = null; // Accumulate all instances and listeners via the target -> root path.\n\n while (instance !== null) {\n var _instance2 = instance,\n stateNode = _instance2.stateNode,\n tag = _instance2.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n if (tag === HostComponent && stateNode !== null) {\n lastHostComponent = stateNode; // createEventHandle listeners\n\n\n if (reactEventName !== null) {\n var listener = getListener(instance, reactEventName);\n\n if (listener != null) {\n listeners.push(createDispatchListener(instance, listener, lastHostComponent));\n }\n }\n } // If we are only accumulating events for the target, then we don't\n // continue to propagate through the React fiber tree to find other\n // listeners.\n\n\n if (accumulateTargetOnly) {\n break;\n }\n\n instance = instance.return;\n }\n\n return listeners;\n} // We should only use this function for:\n// - BeforeInputEventPlugin\n// - ChangeEventPlugin\n// - SelectEventPlugin\n// This is because we only process these plugins\n// in the bubble phase, so we need to accumulate two\n// phase event listeners (via emulation).\n\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n var captureName = reactName + 'Capture';\n var listeners = [];\n var instance = targetFiber; // Accumulate all instances and listeners via the target -> root path.\n\n while (instance !== null) {\n var _instance3 = instance,\n stateNode = _instance3.stateNode,\n tag = _instance3.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n if (tag === HostComponent && stateNode !== null) {\n var currentTarget = stateNode;\n var captureListener = getListener(instance, captureName);\n\n if (captureListener != null) {\n listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n }\n\n var bubbleListener = getListener(instance, reactName);\n\n if (bubbleListener != null) {\n listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n }\n }\n\n instance = instance.return;\n }\n\n return listeners;\n}\n\nfunction getParent(inst) {\n if (inst === null) {\n return null;\n }\n\n do {\n inst = inst.return; // TODO: If this is a HostRoot we might want to bail out.\n // That is depending on if we want nested subtrees (layers) to bubble\n // events to their parent. We could also go through parentNode on the\n // host node but that wouldn't work for React Native and doesn't let us\n // do the portal feature.\n } while (inst && inst.tag !== HostComponent);\n\n if (inst) {\n return inst;\n }\n\n return null;\n}\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\n\n\nfunction getLowestCommonAncestor(instA, instB) {\n var nodeA = instA;\n var nodeB = instB;\n var depthA = 0;\n\n for (var tempA = nodeA; tempA; tempA = getParent(tempA)) {\n depthA++;\n }\n\n var depthB = 0;\n\n for (var tempB = nodeB; tempB; tempB = getParent(tempB)) {\n depthB++;\n } // If A is deeper, crawl up.\n\n\n while (depthA - depthB > 0) {\n nodeA = getParent(nodeA);\n depthA--;\n } // If B is deeper, crawl up.\n\n\n while (depthB - depthA > 0) {\n nodeB = getParent(nodeB);\n depthB--;\n } // Walk in lockstep until we find a match.\n\n\n var depth = depthA;\n\n while (depth--) {\n if (nodeA === nodeB || nodeB !== null && nodeA === nodeB.alternate) {\n return nodeA;\n }\n\n nodeA = getParent(nodeA);\n nodeB = getParent(nodeB);\n }\n\n return null;\n}\n\nfunction accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {\n var registrationName = event._reactName;\n var listeners = [];\n var instance = target;\n\n while (instance !== null) {\n if (instance === common) {\n break;\n }\n\n var _instance4 = instance,\n alternate = _instance4.alternate,\n stateNode = _instance4.stateNode,\n tag = _instance4.tag;\n\n if (alternate !== null && alternate === common) {\n break;\n }\n\n if (tag === HostComponent && stateNode !== null) {\n var currentTarget = stateNode;\n\n if (inCapturePhase) {\n var captureListener = getListener(instance, registrationName);\n\n if (captureListener != null) {\n listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n }\n } else if (!inCapturePhase) {\n var bubbleListener = getListener(instance, registrationName);\n\n if (bubbleListener != null) {\n listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n }\n }\n }\n\n instance = instance.return;\n }\n\n if (listeners.length !== 0) {\n dispatchQueue.push({\n event: event,\n listeners: listeners\n });\n }\n} // We should only use this function for:\n// - EnterLeaveEventPlugin\n// This is because we only process this plugin\n// in the bubble phase, so we need to accumulate two\n// phase event listeners.\n\n\nfunction accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leaveEvent, enterEvent, from, to) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n\n if (from !== null) {\n accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common, false);\n }\n\n if (to !== null && enterEvent !== null) {\n accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common, true);\n }\n}\nfunction getListenerSetKey(domEventName, capture) {\n return domEventName + \"__\" + (capture ? 'capture' : 'bubble');\n}\n\nvar didWarnInvalidHydration = false;\nvar DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';\nvar SUPPRESS_CONTENT_EDITABLE_WARNING = 'suppressContentEditableWarning';\nvar SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning';\nvar AUTOFOCUS = 'autoFocus';\nvar CHILDREN = 'children';\nvar STYLE = 'style';\nvar HTML$1 = '__html';\nvar HTML_NAMESPACE$1 = Namespaces.html;\nvar warnedUnknownTags;\nvar suppressHydrationWarning;\nvar validatePropertiesInDevelopment;\nvar warnForTextDifference;\nvar warnForPropDifference;\nvar warnForExtraAttributes;\nvar warnForInvalidEventListener;\nvar canDiffStyleForHydrationWarning;\nvar normalizeMarkupForTextOrAttribute;\nvar normalizeHTML;\n\n{\n warnedUnknownTags = {\n // There are working polyfills for <dialog>. Let people use it.\n dialog: true,\n // Electron ships a custom <webview> tag to display external web content in\n // an isolated frame and process.\n // This tag is not present in non Electron environments such as JSDom which\n // is often used for testing purposes.\n // @see https://electronjs.org/docs/api/webview-tag\n webview: true\n };\n\n validatePropertiesInDevelopment = function (type, props) {\n validateProperties(type, props);\n validateProperties$1(type, props);\n validateProperties$2(type, props, {\n registrationNameDependencies: registrationNameDependencies,\n possibleRegistrationNames: possibleRegistrationNames\n });\n }; // IE 11 parses & normalizes the style attribute as opposed to other\n // browsers. It adds spaces and sorts the properties in some\n // non-alphabetical order. Handling that would require sorting CSS\n // properties in the client & server versions or applying\n // `expectedStyle` to a temporary DOM node to read its `style` attribute\n // normalized. Since it only affects IE, we're skipping style warnings\n // in that browser completely in favor of doing all that work.\n // See https://github.com/facebook/react/issues/11807\n\n\n canDiffStyleForHydrationWarning = canUseDOM && !document.documentMode; // HTML parsing normalizes CR and CRLF to LF.\n // It also can turn \\u0000 into \\uFFFD inside attributes.\n // https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream\n // If we have a mismatch, it might be caused by that.\n // We will still patch up in this case but not fire the warning.\n\n var NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g;\n var NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\n\n normalizeMarkupForTextOrAttribute = function (markup) {\n var markupString = typeof markup === 'string' ? markup : '' + markup;\n return markupString.replace(NORMALIZE_NEWLINES_REGEX, '\\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, '');\n };\n\n warnForTextDifference = function (serverText, clientText) {\n if (didWarnInvalidHydration) {\n return;\n }\n\n var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);\n var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);\n\n if (normalizedServerText === normalizedClientText) {\n return;\n }\n\n didWarnInvalidHydration = true;\n\n error('Text content did not match. Server: \"%s\" Client: \"%s\"', normalizedServerText, normalizedClientText);\n };\n\n warnForPropDifference = function (propName, serverValue, clientValue) {\n if (didWarnInvalidHydration) {\n return;\n }\n\n var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue);\n var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue);\n\n if (normalizedServerValue === normalizedClientValue) {\n return;\n }\n\n didWarnInvalidHydration = true;\n\n error('Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));\n };\n\n warnForExtraAttributes = function (attributeNames) {\n if (didWarnInvalidHydration) {\n return;\n }\n\n didWarnInvalidHydration = true;\n var names = [];\n attributeNames.forEach(function (name) {\n names.push(name);\n });\n\n error('Extra attributes from the server: %s', names);\n };\n\n warnForInvalidEventListener = function (registrationName, listener) {\n if (listener === false) {\n error('Expected `%s` listener to be a function, instead got `false`.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', registrationName, registrationName, registrationName);\n } else {\n error('Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener);\n }\n }; // Parse the HTML and read it back to normalize the HTML string so that it\n // can be used for comparison.\n\n\n normalizeHTML = function (parent, html) {\n // We could have created a separate document here to avoid\n // re-initializing custom elements if they exist. But this breaks\n // how <noscript> is being handled. So we use the same document.\n // See the discussion in https://github.com/facebook/react/pull/11157.\n var testElement = parent.namespaceURI === HTML_NAMESPACE$1 ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);\n testElement.innerHTML = html;\n return testElement.innerHTML;\n };\n}\n\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n}\n\nfunction noop() {}\n\nfunction trapClickOnNonInteractiveElement(node) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n // Just set it using the onclick property so that we don't have to manage any\n // bookkeeping for it. Not sure if we need to clear it when the listener is\n // removed.\n // TODO: Only do this for the relevant Safaris maybe?\n node.onclick = noop;\n}\n\nfunction setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) {\n for (var propKey in nextProps) {\n if (!nextProps.hasOwnProperty(propKey)) {\n continue;\n }\n\n var nextProp = nextProps[propKey];\n\n if (propKey === STYLE) {\n {\n if (nextProp) {\n // Freeze the next style object so that we can assume it won't be\n // mutated. We have already warned for this in the past.\n Object.freeze(nextProp);\n }\n } // Relies on `updateStylesByID` not mutating `styleUpdates`.\n\n\n setValueForStyles(domElement, nextProp);\n } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n\n if (nextHtml != null) {\n setInnerHTML(domElement, nextHtml);\n }\n } else if (propKey === CHILDREN) {\n if (typeof nextProp === 'string') {\n // Avoid setting initial textContent when the text is empty. In IE11 setting\n // textContent on a <textarea> will cause the placeholder to not\n // show within the <textarea> until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n var canSetTextContent = tag !== 'textarea' || nextProp !== '';\n\n if (canSetTextContent) {\n setTextContent(domElement, nextProp);\n }\n } else if (typeof nextProp === 'number') {\n setTextContent(domElement, '' + nextProp);\n }\n } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n if (nextProp != null) {\n if ( typeof nextProp !== 'function') {\n warnForInvalidEventListener(propKey, nextProp);\n }\n\n if (propKey === 'onScroll') {\n listenToNonDelegatedEvent('scroll', domElement);\n }\n }\n } else if (nextProp != null) {\n setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag);\n }\n }\n}\n\nfunction updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {\n // TODO: Handle wasCustomComponentTag\n for (var i = 0; i < updatePayload.length; i += 2) {\n var propKey = updatePayload[i];\n var propValue = updatePayload[i + 1];\n\n if (propKey === STYLE) {\n setValueForStyles(domElement, propValue);\n } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n setInnerHTML(domElement, propValue);\n } else if (propKey === CHILDREN) {\n setTextContent(domElement, propValue);\n } else {\n setValueForProperty(domElement, propKey, propValue, isCustomComponentTag);\n }\n }\n}\n\nfunction createElement(type, props, rootContainerElement, parentNamespace) {\n var isCustomComponentTag; // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n\n var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);\n var domElement;\n var namespaceURI = parentNamespace;\n\n if (namespaceURI === HTML_NAMESPACE$1) {\n namespaceURI = getIntrinsicNamespace(type);\n }\n\n if (namespaceURI === HTML_NAMESPACE$1) {\n {\n isCustomComponentTag = isCustomComponent(type, props); // Should this check be gated by parent namespace? Not sure we want to\n // allow <SVG> or <mATH>.\n\n if (!isCustomComponentTag && type !== type.toLowerCase()) {\n error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);\n }\n }\n\n if (type === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n\n div.innerHTML = '<script><' + '/script>'; // eslint-disable-line\n // This is guaranteed to yield a script element.\n\n var firstChild = div.firstChild;\n domElement = div.removeChild(firstChild);\n } else if (typeof props.is === 'string') {\n // $FlowIssue `createElement` should be updated for Web Components\n domElement = ownerDocument.createElement(type, {\n is: props.is\n });\n } else {\n // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n domElement = ownerDocument.createElement(type); // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`\n // attributes on `select`s needs to be added before `option`s are inserted.\n // This prevents:\n // - a bug where the `select` does not scroll to the correct option because singular\n // `select` elements automatically pick the first item #13222\n // - a bug where the `select` set the first item as selected despite the `size` attribute #14239\n // See https://github.com/facebook/react/issues/13222\n // and https://github.com/facebook/react/issues/14239\n\n if (type === 'select') {\n var node = domElement;\n\n if (props.multiple) {\n node.multiple = true;\n } else if (props.size) {\n // Setting a size greater than 1 causes a select to behave like `multiple=true`, where\n // it is possible that no option is selected.\n //\n // This is only necessary when a select in \"single selection mode\".\n node.size = props.size;\n }\n }\n }\n } else {\n domElement = ownerDocument.createElementNS(namespaceURI, type);\n }\n\n {\n if (namespaceURI === HTML_NAMESPACE$1) {\n if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !Object.prototype.hasOwnProperty.call(warnedUnknownTags, type)) {\n warnedUnknownTags[type] = true;\n\n error('The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);\n }\n }\n }\n\n return domElement;\n}\nfunction createTextNode(text, rootContainerElement) {\n return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);\n}\nfunction setInitialProperties(domElement, tag, rawProps, rootContainerElement) {\n var isCustomComponentTag = isCustomComponent(tag, rawProps);\n\n {\n validatePropertiesInDevelopment(tag, rawProps);\n } // TODO: Make sure that we check isMounted before firing any of these events.\n\n\n var props;\n\n switch (tag) {\n case 'dialog':\n listenToNonDelegatedEvent('cancel', domElement);\n listenToNonDelegatedEvent('close', domElement);\n props = rawProps;\n break;\n\n case 'iframe':\n case 'object':\n case 'embed':\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the load event.\n listenToNonDelegatedEvent('load', domElement);\n props = rawProps;\n break;\n\n case 'video':\n case 'audio':\n // We listen to these events in case to ensure emulated bubble\n // listeners still fire for all the media events.\n for (var i = 0; i < mediaEventTypes.length; i++) {\n listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n }\n\n props = rawProps;\n break;\n\n case 'source':\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the error event.\n listenToNonDelegatedEvent('error', domElement);\n props = rawProps;\n break;\n\n case 'img':\n case 'image':\n case 'link':\n // We listen to these events in case to ensure emulated bubble\n // listeners still fire for error and load events.\n listenToNonDelegatedEvent('error', domElement);\n listenToNonDelegatedEvent('load', domElement);\n props = rawProps;\n break;\n\n case 'details':\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the toggle event.\n listenToNonDelegatedEvent('toggle', domElement);\n props = rawProps;\n break;\n\n case 'input':\n initWrapperState(domElement, rawProps);\n props = getHostProps(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the invalid event.\n\n listenToNonDelegatedEvent('invalid', domElement);\n\n break;\n\n case 'option':\n validateProps(domElement, rawProps);\n props = getHostProps$1(domElement, rawProps);\n break;\n\n case 'select':\n initWrapperState$1(domElement, rawProps);\n props = getHostProps$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the invalid event.\n\n listenToNonDelegatedEvent('invalid', domElement);\n\n break;\n\n case 'textarea':\n initWrapperState$2(domElement, rawProps);\n props = getHostProps$3(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the invalid event.\n\n listenToNonDelegatedEvent('invalid', domElement);\n\n break;\n\n default:\n props = rawProps;\n }\n\n assertValidProps(tag, props);\n setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag);\n\n switch (tag) {\n case 'input':\n // TODO: Make sure we check if this is still unmounted or do any clean\n // up necessary since we never stop tracking anymore.\n track(domElement);\n postMountWrapper(domElement, rawProps, false);\n break;\n\n case 'textarea':\n // TODO: Make sure we check if this is still unmounted or do any clean\n // up necessary since we never stop tracking anymore.\n track(domElement);\n postMountWrapper$3(domElement);\n break;\n\n case 'option':\n postMountWrapper$1(domElement, rawProps);\n break;\n\n case 'select':\n postMountWrapper$2(domElement, rawProps);\n break;\n\n default:\n if (typeof props.onClick === 'function') {\n // TODO: This cast may not be sound for SVG, MathML or custom elements.\n trapClickOnNonInteractiveElement(domElement);\n }\n\n break;\n }\n} // Calculate the diff between the two objects.\n\nfunction diffProperties(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {\n {\n validatePropertiesInDevelopment(tag, nextRawProps);\n }\n\n var updatePayload = null;\n var lastProps;\n var nextProps;\n\n switch (tag) {\n case 'input':\n lastProps = getHostProps(domElement, lastRawProps);\n nextProps = getHostProps(domElement, nextRawProps);\n updatePayload = [];\n break;\n\n case 'option':\n lastProps = getHostProps$1(domElement, lastRawProps);\n nextProps = getHostProps$1(domElement, nextRawProps);\n updatePayload = [];\n break;\n\n case 'select':\n lastProps = getHostProps$2(domElement, lastRawProps);\n nextProps = getHostProps$2(domElement, nextRawProps);\n updatePayload = [];\n break;\n\n case 'textarea':\n lastProps = getHostProps$3(domElement, lastRawProps);\n nextProps = getHostProps$3(domElement, nextRawProps);\n updatePayload = [];\n break;\n\n default:\n lastProps = lastRawProps;\n nextProps = nextRawProps;\n\n if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') {\n // TODO: This cast may not be sound for SVG, MathML or custom elements.\n trapClickOnNonInteractiveElement(domElement);\n }\n\n break;\n }\n\n assertValidProps(tag, nextProps);\n var propKey;\n var styleName;\n var styleUpdates = null;\n\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n\n if (propKey === STYLE) {\n var lastStyle = lastProps[propKey];\n\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n if (!styleUpdates) {\n styleUpdates = {};\n }\n\n styleUpdates[styleName] = '';\n }\n }\n } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n // This is a special case. If any listener updates we need to ensure\n // that the \"current\" fiber pointer gets updated so we need a commit\n // to update this element.\n if (!updatePayload) {\n updatePayload = [];\n }\n } else {\n // For all other deleted properties we add it to the queue. We use\n // the allowed property list in the commit phase instead.\n (updatePayload = updatePayload || []).push(propKey, null);\n }\n }\n\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = lastProps != null ? lastProps[propKey] : undefined;\n\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n\n if (propKey === STYLE) {\n {\n if (nextProp) {\n // Freeze the next style object so that we can assume it won't be\n // mutated. We have already warned for this in the past.\n Object.freeze(nextProp);\n }\n }\n\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n if (!styleUpdates) {\n styleUpdates = {};\n }\n\n styleUpdates[styleName] = '';\n }\n } // Update styles that changed since `lastProp`.\n\n\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n if (!styleUpdates) {\n styleUpdates = {};\n }\n\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n if (!styleUpdates) {\n if (!updatePayload) {\n updatePayload = [];\n }\n\n updatePayload.push(propKey, styleUpdates);\n }\n\n styleUpdates = nextProp;\n }\n } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n var lastHtml = lastProp ? lastProp[HTML$1] : undefined;\n\n if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n (updatePayload = updatePayload || []).push(propKey, nextHtml);\n }\n }\n } else if (propKey === CHILDREN) {\n if (typeof nextProp === 'string' || typeof nextProp === 'number') {\n (updatePayload = updatePayload || []).push(propKey, '' + nextProp);\n }\n } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n if (nextProp != null) {\n // We eagerly listen to this even though we haven't committed yet.\n if ( typeof nextProp !== 'function') {\n warnForInvalidEventListener(propKey, nextProp);\n }\n\n if (propKey === 'onScroll') {\n listenToNonDelegatedEvent('scroll', domElement);\n }\n }\n\n if (!updatePayload && lastProp !== nextProp) {\n // This is a special case. If any listener updates we need to ensure\n // that the \"current\" props pointer gets updated so we need a commit\n // to update this element.\n updatePayload = [];\n }\n } else if (typeof nextProp === 'object' && nextProp !== null && nextProp.$$typeof === REACT_OPAQUE_ID_TYPE) {\n // If we encounter useOpaqueReference's opaque object, this means we are hydrating.\n // In this case, call the opaque object's toString function which generates a new client\n // ID so client and server IDs match and throws to rerender.\n nextProp.toString();\n } else {\n // For any other property we always add it to the queue and then we\n // filter it out using the allowed property list during the commit.\n (updatePayload = updatePayload || []).push(propKey, nextProp);\n }\n }\n\n if (styleUpdates) {\n {\n validateShorthandPropertyCollisionInDev(styleUpdates, nextProps[STYLE]);\n }\n\n (updatePayload = updatePayload || []).push(STYLE, styleUpdates);\n }\n\n return updatePayload;\n} // Apply the diff.\n\nfunction updateProperties(domElement, updatePayload, tag, lastRawProps, nextRawProps) {\n // Update checked *before* name.\n // In the middle of an update, it is possible to have multiple checked.\n // When a checked radio tries to change name, browser makes another radio's checked false.\n if (tag === 'input' && nextRawProps.type === 'radio' && nextRawProps.name != null) {\n updateChecked(domElement, nextRawProps);\n }\n\n var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);\n var isCustomComponentTag = isCustomComponent(tag, nextRawProps); // Apply the diff.\n\n updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag); // TODO: Ensure that an update gets scheduled if any of the special props\n // changed.\n\n switch (tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n updateWrapper(domElement, nextRawProps);\n break;\n\n case 'textarea':\n updateWrapper$1(domElement, nextRawProps);\n break;\n\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n postUpdateWrapper(domElement, nextRawProps);\n break;\n }\n}\n\nfunction getPossibleStandardName(propName) {\n {\n var lowerCasedName = propName.toLowerCase();\n\n if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n return null;\n }\n\n return possibleStandardNames[lowerCasedName] || null;\n }\n}\n\nfunction diffHydratedProperties(domElement, tag, rawProps, parentNamespace, rootContainerElement) {\n var isCustomComponentTag;\n var extraAttributeNames;\n\n {\n suppressHydrationWarning = rawProps[SUPPRESS_HYDRATION_WARNING] === true;\n isCustomComponentTag = isCustomComponent(tag, rawProps);\n validatePropertiesInDevelopment(tag, rawProps);\n } // TODO: Make sure that we check isMounted before firing any of these events.\n\n\n switch (tag) {\n case 'dialog':\n listenToNonDelegatedEvent('cancel', domElement);\n listenToNonDelegatedEvent('close', domElement);\n break;\n\n case 'iframe':\n case 'object':\n case 'embed':\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the load event.\n listenToNonDelegatedEvent('load', domElement);\n break;\n\n case 'video':\n case 'audio':\n // We listen to these events in case to ensure emulated bubble\n // listeners still fire for all the media events.\n for (var i = 0; i < mediaEventTypes.length; i++) {\n listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n }\n\n break;\n\n case 'source':\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the error event.\n listenToNonDelegatedEvent('error', domElement);\n break;\n\n case 'img':\n case 'image':\n case 'link':\n // We listen to these events in case to ensure emulated bubble\n // listeners still fire for error and load events.\n listenToNonDelegatedEvent('error', domElement);\n listenToNonDelegatedEvent('load', domElement);\n break;\n\n case 'details':\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the toggle event.\n listenToNonDelegatedEvent('toggle', domElement);\n break;\n\n case 'input':\n initWrapperState(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the invalid event.\n\n listenToNonDelegatedEvent('invalid', domElement);\n\n break;\n\n case 'option':\n validateProps(domElement, rawProps);\n break;\n\n case 'select':\n initWrapperState$1(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the invalid event.\n\n listenToNonDelegatedEvent('invalid', domElement);\n\n break;\n\n case 'textarea':\n initWrapperState$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the invalid event.\n\n listenToNonDelegatedEvent('invalid', domElement);\n\n break;\n }\n\n assertValidProps(tag, rawProps);\n\n {\n extraAttributeNames = new Set();\n var attributes = domElement.attributes;\n\n for (var _i = 0; _i < attributes.length; _i++) {\n var name = attributes[_i].name.toLowerCase();\n\n switch (name) {\n // Built-in SSR attribute is allowed\n case 'data-reactroot':\n break;\n // Controlled attributes are not validated\n // TODO: Only ignore them on controlled tags.\n\n case 'value':\n break;\n\n case 'checked':\n break;\n\n case 'selected':\n break;\n\n default:\n // Intentionally use the original name.\n // See discussion in https://github.com/facebook/react/pull/10676.\n extraAttributeNames.add(attributes[_i].name);\n }\n }\n }\n\n var updatePayload = null;\n\n for (var propKey in rawProps) {\n if (!rawProps.hasOwnProperty(propKey)) {\n continue;\n }\n\n var nextProp = rawProps[propKey];\n\n if (propKey === CHILDREN) {\n // For text content children we compare against textContent. This\n // might match additional HTML that is hidden when we read it using\n // textContent. E.g. \"foo\" will match \"f<span>oo</span>\" but that still\n // satisfies our requirement. Our requirement is not to produce perfect\n // HTML and attributes. Ideally we should preserve structure but it's\n // ok not to if the visible content is still enough to indicate what\n // even listeners these nodes might be wired up to.\n // TODO: Warn if there is more than a single textNode as a child.\n // TODO: Should we use domElement.firstChild.nodeValue to compare?\n if (typeof nextProp === 'string') {\n if (domElement.textContent !== nextProp) {\n if ( !suppressHydrationWarning) {\n warnForTextDifference(domElement.textContent, nextProp);\n }\n\n updatePayload = [CHILDREN, nextProp];\n }\n } else if (typeof nextProp === 'number') {\n if (domElement.textContent !== '' + nextProp) {\n if ( !suppressHydrationWarning) {\n warnForTextDifference(domElement.textContent, nextProp);\n }\n\n updatePayload = [CHILDREN, '' + nextProp];\n }\n }\n } else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n if (nextProp != null) {\n if ( typeof nextProp !== 'function') {\n warnForInvalidEventListener(propKey, nextProp);\n }\n\n if (propKey === 'onScroll') {\n listenToNonDelegatedEvent('scroll', domElement);\n }\n }\n } else if ( // Convince Flow we've calculated it (it's DEV-only in this method.)\n typeof isCustomComponentTag === 'boolean') {\n // Validate that the properties correspond to their expected values.\n var serverValue = void 0;\n var propertyInfo = getPropertyInfo(propKey);\n\n if (suppressHydrationWarning) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated\n // TODO: Only ignore them on controlled tags.\n propKey === 'value' || propKey === 'checked' || propKey === 'selected') ; else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n var serverHTML = domElement.innerHTML;\n var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n\n if (nextHtml != null) {\n var expectedHTML = normalizeHTML(domElement, nextHtml);\n\n if (expectedHTML !== serverHTML) {\n warnForPropDifference(propKey, serverHTML, expectedHTML);\n }\n }\n } else if (propKey === STYLE) {\n // $FlowFixMe - Should be inferred as not undefined.\n extraAttributeNames.delete(propKey);\n\n if (canDiffStyleForHydrationWarning) {\n var expectedStyle = createDangerousStringForStyles(nextProp);\n serverValue = domElement.getAttribute('style');\n\n if (expectedStyle !== serverValue) {\n warnForPropDifference(propKey, serverValue, expectedStyle);\n }\n }\n } else if (isCustomComponentTag) {\n // $FlowFixMe - Should be inferred as not undefined.\n extraAttributeNames.delete(propKey.toLowerCase());\n serverValue = getValueForAttribute(domElement, propKey, nextProp);\n\n if (nextProp !== serverValue) {\n warnForPropDifference(propKey, serverValue, nextProp);\n }\n } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) {\n var isMismatchDueToBadCasing = false;\n\n if (propertyInfo !== null) {\n // $FlowFixMe - Should be inferred as not undefined.\n extraAttributeNames.delete(propertyInfo.attributeName);\n serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);\n } else {\n var ownNamespace = parentNamespace;\n\n if (ownNamespace === HTML_NAMESPACE$1) {\n ownNamespace = getIntrinsicNamespace(tag);\n }\n\n if (ownNamespace === HTML_NAMESPACE$1) {\n // $FlowFixMe - Should be inferred as not undefined.\n extraAttributeNames.delete(propKey.toLowerCase());\n } else {\n var standardName = getPossibleStandardName(propKey);\n\n if (standardName !== null && standardName !== propKey) {\n // If an SVG prop is supplied with bad casing, it will\n // be successfully parsed from HTML, but will produce a mismatch\n // (and would be incorrectly rendered on the client).\n // However, we already warn about bad casing elsewhere.\n // So we'll skip the misleading extra mismatch warning in this case.\n isMismatchDueToBadCasing = true; // $FlowFixMe - Should be inferred as not undefined.\n\n extraAttributeNames.delete(standardName);\n } // $FlowFixMe - Should be inferred as not undefined.\n\n\n extraAttributeNames.delete(propKey);\n }\n\n serverValue = getValueForAttribute(domElement, propKey, nextProp);\n }\n\n if (nextProp !== serverValue && !isMismatchDueToBadCasing) {\n warnForPropDifference(propKey, serverValue, nextProp);\n }\n }\n }\n }\n\n {\n // $FlowFixMe - Should be inferred as not undefined.\n if (extraAttributeNames.size > 0 && !suppressHydrationWarning) {\n // $FlowFixMe - Should be inferred as not undefined.\n warnForExtraAttributes(extraAttributeNames);\n }\n }\n\n switch (tag) {\n case 'input':\n // TODO: Make sure we check if this is still unmounted or do any clean\n // up necessary since we never stop tracking anymore.\n track(domElement);\n postMountWrapper(domElement, rawProps, true);\n break;\n\n case 'textarea':\n // TODO: Make sure we check if this is still unmounted or do any clean\n // up necessary since we never stop tracking anymore.\n track(domElement);\n postMountWrapper$3(domElement);\n break;\n\n case 'select':\n case 'option':\n // For input and textarea we current always set the value property at\n // post mount to force it to diverge from attributes. However, for\n // option and select we don't quite do the same thing and select\n // is not resilient to the DOM state changing so we don't do that here.\n // TODO: Consider not doing this for input and textarea.\n break;\n\n default:\n if (typeof rawProps.onClick === 'function') {\n // TODO: This cast may not be sound for SVG, MathML or custom elements.\n trapClickOnNonInteractiveElement(domElement);\n }\n\n break;\n }\n\n return updatePayload;\n}\nfunction diffHydratedText(textNode, text) {\n var isDifferent = textNode.nodeValue !== text;\n return isDifferent;\n}\nfunction warnForUnmatchedText(textNode, text) {\n {\n warnForTextDifference(textNode.nodeValue, text);\n }\n}\nfunction warnForDeletedHydratableElement(parentNode, child) {\n {\n if (didWarnInvalidHydration) {\n return;\n }\n\n didWarnInvalidHydration = true;\n\n error('Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());\n }\n}\nfunction warnForDeletedHydratableText(parentNode, child) {\n {\n if (didWarnInvalidHydration) {\n return;\n }\n\n didWarnInvalidHydration = true;\n\n error('Did not expect server HTML to contain the text node \"%s\" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());\n }\n}\nfunction warnForInsertedHydratedElement(parentNode, tag, props) {\n {\n if (didWarnInvalidHydration) {\n return;\n }\n\n didWarnInvalidHydration = true;\n\n error('Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());\n }\n}\nfunction warnForInsertedHydratedText(parentNode, text) {\n {\n if (text === '') {\n // We expect to insert empty text nodes since they're not represented in\n // the HTML.\n // TODO: Remove this special case if we can just avoid inserting empty\n // text nodes.\n return;\n }\n\n if (didWarnInvalidHydration) {\n return;\n }\n\n didWarnInvalidHydration = true;\n\n error('Expected server HTML to contain a matching text node for \"%s\" in <%s>.', text, parentNode.nodeName.toLowerCase());\n }\n}\nfunction restoreControlledState$3(domElement, tag, props) {\n switch (tag) {\n case 'input':\n restoreControlledState(domElement, props);\n return;\n\n case 'textarea':\n restoreControlledState$2(domElement, props);\n return;\n\n case 'select':\n restoreControlledState$1(domElement, props);\n return;\n }\n}\n\nvar validateDOMNesting = function () {};\n\nvar updatedAncestorInfo = function () {};\n\n{\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example, <b><div></div></b> is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n // <p> tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for <title>, including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n\n var buttonScopeTags = inScopeTags.concat(['button']); // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n var emptyAncestorInfo = {\n current: null,\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n updatedAncestorInfo = function (oldInfo, tag) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n\n var info = {\n tag: tag\n };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n } // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n /**\n * Returns whether\n */\n\n\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n\n case 'option':\n return tag === '#text';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n\n case 'html':\n return tag === 'head' || tag === 'body' || tag === 'frameset';\n\n case 'frameset':\n return tag === 'frame';\n\n case '#document':\n return tag === 'html';\n } // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frameset':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n /**\n * Returns whether\n */\n\n\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n var didWarn$1 = {};\n\n validateDOMNesting = function (childTag, childText, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n if (childTag != null) {\n error('validateDOMNesting: when childText is passed, childTag should be null');\n }\n\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var invalidParentOrAncestor = invalidParent || invalidAncestor;\n\n if (!invalidParentOrAncestor) {\n return;\n }\n\n var ancestorTag = invalidParentOrAncestor.tag;\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag;\n\n if (didWarn$1[warnKey]) {\n return;\n }\n\n didWarn$1[warnKey] = true;\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n\n error('validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info);\n } else {\n error('validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.', tagDisplayName, ancestorTag);\n }\n };\n}\n\nvar SUPPRESS_HYDRATION_WARNING$1;\n\n{\n SUPPRESS_HYDRATION_WARNING$1 = 'suppressHydrationWarning';\n}\n\nvar SUSPENSE_START_DATA = '$';\nvar SUSPENSE_END_DATA = '/$';\nvar SUSPENSE_PENDING_START_DATA = '$?';\nvar SUSPENSE_FALLBACK_START_DATA = '$!';\nvar STYLE$1 = 'style';\nvar eventsEnabled = null;\nvar selectionInformation = null;\n\nfunction shouldAutoFocusHostComponent(type, props) {\n switch (type) {\n case 'button':\n case 'input':\n case 'select':\n case 'textarea':\n return !!props.autoFocus;\n }\n\n return false;\n}\nfunction getRootHostContext(rootContainerInstance) {\n var type;\n var namespace;\n var nodeType = rootContainerInstance.nodeType;\n\n switch (nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n {\n type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment';\n var root = rootContainerInstance.documentElement;\n namespace = root ? root.namespaceURI : getChildNamespace(null, '');\n break;\n }\n\n default:\n {\n var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;\n var ownNamespace = container.namespaceURI || null;\n type = container.tagName;\n namespace = getChildNamespace(ownNamespace, type);\n break;\n }\n }\n\n {\n var validatedTag = type.toLowerCase();\n var ancestorInfo = updatedAncestorInfo(null, validatedTag);\n return {\n namespace: namespace,\n ancestorInfo: ancestorInfo\n };\n }\n}\nfunction getChildHostContext(parentHostContext, type, rootContainerInstance) {\n {\n var parentHostContextDev = parentHostContext;\n var namespace = getChildNamespace(parentHostContextDev.namespace, type);\n var ancestorInfo = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type);\n return {\n namespace: namespace,\n ancestorInfo: ancestorInfo\n };\n }\n}\nfunction getPublicInstance(instance) {\n return instance;\n}\nfunction prepareForCommit(containerInfo) {\n eventsEnabled = isEnabled();\n selectionInformation = getSelectionInformation();\n var activeInstance = null;\n\n setEnabled(false);\n return activeInstance;\n}\nfunction resetAfterCommit(containerInfo) {\n restoreSelection(selectionInformation);\n setEnabled(eventsEnabled);\n eventsEnabled = null;\n selectionInformation = null;\n}\nfunction createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n var parentNamespace;\n\n {\n // TODO: take namespace into account when validating.\n var hostContextDev = hostContext;\n validateDOMNesting(type, null, hostContextDev.ancestorInfo);\n\n if (typeof props.children === 'string' || typeof props.children === 'number') {\n var string = '' + props.children;\n var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n validateDOMNesting(null, string, ownAncestorInfo);\n }\n\n parentNamespace = hostContextDev.namespace;\n }\n\n var domElement = createElement(type, props, rootContainerInstance, parentNamespace);\n precacheFiberNode(internalInstanceHandle, domElement);\n updateFiberProps(domElement, props);\n return domElement;\n}\nfunction appendInitialChild(parentInstance, child) {\n parentInstance.appendChild(child);\n}\nfunction finalizeInitialChildren(domElement, type, props, rootContainerInstance, hostContext) {\n setInitialProperties(domElement, type, props, rootContainerInstance);\n return shouldAutoFocusHostComponent(type, props);\n}\nfunction prepareUpdate(domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {\n {\n var hostContextDev = hostContext;\n\n if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === 'string' || typeof newProps.children === 'number')) {\n var string = '' + newProps.children;\n var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n validateDOMNesting(null, string, ownAncestorInfo);\n }\n }\n\n return diffProperties(domElement, type, oldProps, newProps);\n}\nfunction shouldSetTextContent(type, props) {\n return type === 'textarea' || type === 'option' || type === 'noscript' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null;\n}\nfunction createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) {\n {\n var hostContextDev = hostContext;\n validateDOMNesting(null, text, hostContextDev.ancestorInfo);\n }\n\n var textNode = createTextNode(text, rootContainerInstance);\n precacheFiberNode(internalInstanceHandle, textNode);\n return textNode;\n}\n// if a component just imports ReactDOM (e.g. for findDOMNode).\n// Some environments might not have setTimeout or clearTimeout.\n\nvar scheduleTimeout = typeof setTimeout === 'function' ? setTimeout : undefined;\nvar cancelTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined;\nvar noTimeout = -1; // -------------------\nfunction commitMount(domElement, type, newProps, internalInstanceHandle) {\n // Despite the naming that might imply otherwise, this method only\n // fires if there is an `Update` effect scheduled during mounting.\n // This happens if `finalizeInitialChildren` returns `true` (which it\n // does to implement the `autoFocus` attribute on the client). But\n // there are also other cases when this might happen (such as patching\n // up text content during hydration mismatch). So we'll check this again.\n if (shouldAutoFocusHostComponent(type, newProps)) {\n domElement.focus();\n }\n}\nfunction commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {\n // Update the props handle so that we know which props are the ones with\n // with current event handlers.\n updateFiberProps(domElement, newProps); // Apply the diff to the DOM node.\n\n updateProperties(domElement, updatePayload, type, oldProps, newProps);\n}\nfunction resetTextContent(domElement) {\n setTextContent(domElement, '');\n}\nfunction commitTextUpdate(textInstance, oldText, newText) {\n textInstance.nodeValue = newText;\n}\nfunction appendChild(parentInstance, child) {\n parentInstance.appendChild(child);\n}\nfunction appendChildToContainer(container, child) {\n var parentNode;\n\n if (container.nodeType === COMMENT_NODE) {\n parentNode = container.parentNode;\n parentNode.insertBefore(child, container);\n } else {\n parentNode = container;\n parentNode.appendChild(child);\n } // This container might be used for a portal.\n // If something inside a portal is clicked, that click should bubble\n // through the React tree. However, on Mobile Safari the click would\n // never bubble through the *DOM* tree unless an ancestor with onclick\n // event exists. So we wouldn't see it and dispatch it.\n // This is why we ensure that non React root containers have inline onclick\n // defined.\n // https://github.com/facebook/react/issues/11918\n\n\n var reactRootContainer = container._reactRootContainer;\n\n if ((reactRootContainer === null || reactRootContainer === undefined) && parentNode.onclick === null) {\n // TODO: This cast may not be sound for SVG, MathML or custom elements.\n trapClickOnNonInteractiveElement(parentNode);\n }\n}\nfunction insertBefore(parentInstance, child, beforeChild) {\n parentInstance.insertBefore(child, beforeChild);\n}\nfunction insertInContainerBefore(container, child, beforeChild) {\n if (container.nodeType === COMMENT_NODE) {\n container.parentNode.insertBefore(child, beforeChild);\n } else {\n container.insertBefore(child, beforeChild);\n }\n}\n\nfunction removeChild(parentInstance, child) {\n parentInstance.removeChild(child);\n}\nfunction removeChildFromContainer(container, child) {\n if (container.nodeType === COMMENT_NODE) {\n container.parentNode.removeChild(child);\n } else {\n container.removeChild(child);\n }\n}\nfunction hideInstance(instance) {\n // TODO: Does this work for all element types? What about MathML? Should we\n // pass host context to this method?\n instance = instance;\n var style = instance.style;\n\n if (typeof style.setProperty === 'function') {\n style.setProperty('display', 'none', 'important');\n } else {\n style.display = 'none';\n }\n}\nfunction hideTextInstance(textInstance) {\n textInstance.nodeValue = '';\n}\nfunction unhideInstance(instance, props) {\n instance = instance;\n var styleProp = props[STYLE$1];\n var display = styleProp !== undefined && styleProp !== null && styleProp.hasOwnProperty('display') ? styleProp.display : null;\n instance.style.display = dangerousStyleValue('display', display);\n}\nfunction unhideTextInstance(textInstance, text) {\n textInstance.nodeValue = text;\n}\nfunction clearContainer(container) {\n if (container.nodeType === ELEMENT_NODE) {\n container.textContent = '';\n } else if (container.nodeType === DOCUMENT_NODE) {\n var body = container.body;\n\n if (body != null) {\n body.textContent = '';\n }\n }\n} // -------------------\nfunction canHydrateInstance(instance, type, props) {\n if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {\n return null;\n } // This has now been refined to an element node.\n\n\n return instance;\n}\nfunction canHydrateTextInstance(instance, text) {\n if (text === '' || instance.nodeType !== TEXT_NODE) {\n // Empty strings are not parsed by HTML so there won't be a correct match here.\n return null;\n } // This has now been refined to a text node.\n\n\n return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n return instance.data === SUSPENSE_PENDING_START_DATA;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return instance.data === SUSPENSE_FALLBACK_START_DATA;\n}\n\nfunction getNextHydratable(node) {\n // Skip non-hydratable nodes.\n for (; node != null; node = node.nextSibling) {\n var nodeType = node.nodeType;\n\n if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) {\n break;\n }\n }\n\n return node;\n}\n\nfunction getNextHydratableSibling(instance) {\n return getNextHydratable(instance.nextSibling);\n}\nfunction getFirstHydratableChild(parentInstance) {\n return getNextHydratable(parentInstance.firstChild);\n}\nfunction hydrateInstance(instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n precacheFiberNode(internalInstanceHandle, instance); // TODO: Possibly defer this until the commit phase where all the events\n // get attached.\n\n updateFiberProps(instance, props);\n var parentNamespace;\n\n {\n var hostContextDev = hostContext;\n parentNamespace = hostContextDev.namespace;\n }\n\n return diffHydratedProperties(instance, type, props, parentNamespace);\n}\nfunction hydrateTextInstance(textInstance, text, internalInstanceHandle) {\n precacheFiberNode(internalInstanceHandle, textInstance);\n return diffHydratedText(textInstance, text);\n}\nfunction getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) {\n var node = suspenseInstance.nextSibling; // Skip past all nodes within this suspense boundary.\n // There might be nested nodes so we need to keep track of how\n // deep we are and only break out when we're back on top.\n\n var depth = 0;\n\n while (node) {\n if (node.nodeType === COMMENT_NODE) {\n var data = node.data;\n\n if (data === SUSPENSE_END_DATA) {\n if (depth === 0) {\n return getNextHydratableSibling(node);\n } else {\n depth--;\n }\n } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n depth++;\n }\n }\n\n node = node.nextSibling;\n } // TODO: Warn, we didn't find the end comment boundary.\n\n\n return null;\n} // Returns the SuspenseInstance if this node is a direct child of a\n// SuspenseInstance. I.e. if its previous sibling is a Comment with\n// SUSPENSE_x_START_DATA. Otherwise, null.\n\nfunction getParentSuspenseInstance(targetInstance) {\n var node = targetInstance.previousSibling; // Skip past all nodes within this suspense boundary.\n // There might be nested nodes so we need to keep track of how\n // deep we are and only break out when we're back on top.\n\n var depth = 0;\n\n while (node) {\n if (node.nodeType === COMMENT_NODE) {\n var data = node.data;\n\n if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n if (depth === 0) {\n return node;\n } else {\n depth--;\n }\n } else if (data === SUSPENSE_END_DATA) {\n depth++;\n }\n }\n\n node = node.previousSibling;\n }\n\n return null;\n}\nfunction commitHydratedContainer(container) {\n // Retry if any event replaying was blocked on this.\n retryIfBlockedOn(container);\n}\nfunction commitHydratedSuspenseInstance(suspenseInstance) {\n // Retry if any event replaying was blocked on this.\n retryIfBlockedOn(suspenseInstance);\n}\nfunction didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text) {\n {\n warnForUnmatchedText(textInstance, text);\n }\n}\nfunction didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text) {\n if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n warnForUnmatchedText(textInstance, text);\n }\n}\nfunction didNotHydrateContainerInstance(parentContainer, instance) {\n {\n if (instance.nodeType === ELEMENT_NODE) {\n warnForDeletedHydratableElement(parentContainer, instance);\n } else if (instance.nodeType === COMMENT_NODE) ; else {\n warnForDeletedHydratableText(parentContainer, instance);\n }\n }\n}\nfunction didNotHydrateInstance(parentType, parentProps, parentInstance, instance) {\n if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n if (instance.nodeType === ELEMENT_NODE) {\n warnForDeletedHydratableElement(parentInstance, instance);\n } else if (instance.nodeType === COMMENT_NODE) ; else {\n warnForDeletedHydratableText(parentInstance, instance);\n }\n }\n}\nfunction didNotFindHydratableContainerInstance(parentContainer, type, props) {\n {\n warnForInsertedHydratedElement(parentContainer, type);\n }\n}\nfunction didNotFindHydratableContainerTextInstance(parentContainer, text) {\n {\n warnForInsertedHydratedText(parentContainer, text);\n }\n}\nfunction didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props) {\n if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n warnForInsertedHydratedElement(parentInstance, type);\n }\n}\nfunction didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text) {\n if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n warnForInsertedHydratedText(parentInstance, text);\n }\n}\nfunction didNotFindHydratableSuspenseInstance(parentType, parentProps, parentInstance) {\n if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) ;\n}\nvar clientId = 0;\nfunction makeClientIdInDEV(warnOnAccessInDEV) {\n var id = 'r:' + (clientId++).toString(36);\n return {\n toString: function () {\n warnOnAccessInDEV();\n return id;\n },\n valueOf: function () {\n warnOnAccessInDEV();\n return id;\n }\n };\n}\nfunction isOpaqueHydratingObject(value) {\n return value !== null && typeof value === 'object' && value.$$typeof === REACT_OPAQUE_ID_TYPE;\n}\nfunction makeOpaqueHydratingObject(attemptToReadValue) {\n return {\n $$typeof: REACT_OPAQUE_ID_TYPE,\n toString: attemptToReadValue,\n valueOf: attemptToReadValue\n };\n}\nfunction preparePortalMount(portalInstance) {\n {\n listenToAllSupportedEvents(portalInstance);\n }\n}\n\nvar randomKey = Math.random().toString(36).slice(2);\nvar internalInstanceKey = '__reactFiber$' + randomKey;\nvar internalPropsKey = '__reactProps$' + randomKey;\nvar internalContainerInstanceKey = '__reactContainer$' + randomKey;\nvar internalEventHandlersKey = '__reactEvents$' + randomKey;\nfunction precacheFiberNode(hostInst, node) {\n node[internalInstanceKey] = hostInst;\n}\nfunction markContainerAsRoot(hostRoot, node) {\n node[internalContainerInstanceKey] = hostRoot;\n}\nfunction unmarkContainerAsRoot(node) {\n node[internalContainerInstanceKey] = null;\n}\nfunction isContainerMarkedAsRoot(node) {\n return !!node[internalContainerInstanceKey];\n} // Given a DOM node, return the closest HostComponent or HostText fiber ancestor.\n// If the target node is part of a hydrated or not yet rendered subtree, then\n// this may also return a SuspenseComponent or HostRoot to indicate that.\n// Conceptually the HostRoot fiber is a child of the Container node. So if you\n// pass the Container node as the targetNode, you will not actually get the\n// HostRoot back. To get to the HostRoot, you need to pass a child of it.\n// The same thing applies to Suspense boundaries.\n\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n\n if (targetInst) {\n // Don't return HostRoot or SuspenseComponent here.\n return targetInst;\n } // If the direct event target isn't a React owned DOM node, we need to look\n // to see if one of its parents is a React owned DOM node.\n\n\n var parentNode = targetNode.parentNode;\n\n while (parentNode) {\n // We'll check if this is a container root that could include\n // React nodes in the future. We need to check this first because\n // if we're a child of a dehydrated container, we need to first\n // find that inner container before moving on to finding the parent\n // instance. Note that we don't check this field on the targetNode\n // itself because the fibers are conceptually between the container\n // node and the first child. It isn't surrounding the container node.\n // If it's not a container, we check if it's an instance.\n targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey];\n\n if (targetInst) {\n // Since this wasn't the direct target of the event, we might have\n // stepped past dehydrated DOM nodes to get here. However they could\n // also have been non-React nodes. We need to answer which one.\n // If we the instance doesn't have any children, then there can't be\n // a nested suspense boundary within it. So we can use this as a fast\n // bailout. Most of the time, when people add non-React children to\n // the tree, it is using a ref to a child-less DOM node.\n // Normally we'd only need to check one of the fibers because if it\n // has ever gone from having children to deleting them or vice versa\n // it would have deleted the dehydrated boundary nested inside already.\n // However, since the HostRoot starts out with an alternate it might\n // have one on the alternate so we need to check in case this was a\n // root.\n var alternate = targetInst.alternate;\n\n if (targetInst.child !== null || alternate !== null && alternate.child !== null) {\n // Next we need to figure out if the node that skipped past is\n // nested within a dehydrated boundary and if so, which one.\n var suspenseInstance = getParentSuspenseInstance(targetNode);\n\n while (suspenseInstance !== null) {\n // We found a suspense instance. That means that we haven't\n // hydrated it yet. Even though we leave the comments in the\n // DOM after hydrating, and there are boundaries in the DOM\n // that could already be hydrated, we wouldn't have found them\n // through this pass since if the target is hydrated it would\n // have had an internalInstanceKey on it.\n // Let's get the fiber associated with the SuspenseComponent\n // as the deepest instance.\n var targetSuspenseInst = suspenseInstance[internalInstanceKey];\n\n if (targetSuspenseInst) {\n return targetSuspenseInst;\n } // If we don't find a Fiber on the comment, it might be because\n // we haven't gotten to hydrate it yet. There might still be a\n // parent boundary that hasn't above this one so we need to find\n // the outer most that is known.\n\n\n suspenseInstance = getParentSuspenseInstance(suspenseInstance); // If we don't find one, then that should mean that the parent\n // host component also hasn't hydrated yet. We can return it\n // below since it will bail out on the isMounted check later.\n }\n }\n\n return targetInst;\n }\n\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n\n return null;\n}\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\n\nfunction getInstanceFromNode(node) {\n var inst = node[internalInstanceKey] || node[internalContainerInstanceKey];\n\n if (inst) {\n if (inst.tag === HostComponent || inst.tag === HostText || inst.tag === SuspenseComponent || inst.tag === HostRoot) {\n return inst;\n } else {\n return null;\n }\n }\n\n return null;\n}\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\n\nfunction getNodeFromInstance(inst) {\n if (inst.tag === HostComponent || inst.tag === HostText) {\n // In Fiber this, is just the state node right now. We assume it will be\n // a host component or host text.\n return inst.stateNode;\n } // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n\n\n {\n {\n throw Error( \"getNodeFromInstance: Invalid argument.\" );\n }\n }\n}\nfunction getFiberCurrentPropsFromNode(node) {\n return node[internalPropsKey] || null;\n}\nfunction updateFiberProps(node, props) {\n node[internalPropsKey] = props;\n}\nfunction getEventListenerSet(node) {\n var elementListenerSet = node[internalEventHandlersKey];\n\n if (elementListenerSet === undefined) {\n elementListenerSet = node[internalEventHandlersKey] = new Set();\n }\n\n return elementListenerSet;\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar valueStack = [];\nvar fiberStack;\n\n{\n fiberStack = [];\n}\n\nvar index = -1;\n\nfunction createCursor(defaultValue) {\n return {\n current: defaultValue\n };\n}\n\nfunction pop(cursor, fiber) {\n if (index < 0) {\n {\n error('Unexpected pop.');\n }\n\n return;\n }\n\n {\n if (fiber !== fiberStack[index]) {\n error('Unexpected Fiber popped.');\n }\n }\n\n cursor.current = valueStack[index];\n valueStack[index] = null;\n\n {\n fiberStack[index] = null;\n }\n\n index--;\n}\n\nfunction push(cursor, value, fiber) {\n index++;\n valueStack[index] = cursor.current;\n\n {\n fiberStack[index] = fiber;\n }\n\n cursor.current = value;\n}\n\nvar warnedAboutMissingGetChildContext;\n\n{\n warnedAboutMissingGetChildContext = {};\n}\n\nvar emptyContextObject = {};\n\n{\n Object.freeze(emptyContextObject);\n} // A cursor to the current merged context object on the stack.\n\n\nvar contextStackCursor = createCursor(emptyContextObject); // A cursor to a boolean indicating whether the context has changed.\n\nvar didPerformWorkStackCursor = createCursor(false); // Keep track of the previous context object that was on the stack.\n// We use this to get access to the parent context after we have already\n// pushed the next context provider, and now need to merge their contexts.\n\nvar previousContext = emptyContextObject;\n\nfunction getUnmaskedContext(workInProgress, Component, didPushOwnContextIfProvider) {\n {\n if (didPushOwnContextIfProvider && isContextProvider(Component)) {\n // If the fiber is a context provider itself, when we read its context\n // we may have already pushed its own child context on the stack. A context\n // provider should not \"see\" its own child context. Therefore we read the\n // previous (parent) context instead for a context provider.\n return previousContext;\n }\n\n return contextStackCursor.current;\n }\n}\n\nfunction cacheContext(workInProgress, unmaskedContext, maskedContext) {\n {\n var instance = workInProgress.stateNode;\n instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;\n instance.__reactInternalMemoizedMaskedChildContext = maskedContext;\n }\n}\n\nfunction getMaskedContext(workInProgress, unmaskedContext) {\n {\n var type = workInProgress.type;\n var contextTypes = type.contextTypes;\n\n if (!contextTypes) {\n return emptyContextObject;\n } // Avoid recreating masked context unless unmasked context has changed.\n // Failing to do this will result in unnecessary calls to componentWillReceiveProps.\n // This may trigger infinite loops if componentWillReceiveProps calls setState.\n\n\n var instance = workInProgress.stateNode;\n\n if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {\n return instance.__reactInternalMemoizedMaskedChildContext;\n }\n\n var context = {};\n\n for (var key in contextTypes) {\n context[key] = unmaskedContext[key];\n }\n\n {\n var name = getComponentName(type) || 'Unknown';\n checkPropTypes(contextTypes, context, 'context', name);\n } // Cache unmasked context so we can avoid recreating masked context unless necessary.\n // Context is created before the class component is instantiated so check for instance.\n\n\n if (instance) {\n cacheContext(workInProgress, unmaskedContext, context);\n }\n\n return context;\n }\n}\n\nfunction hasContextChanged() {\n {\n return didPerformWorkStackCursor.current;\n }\n}\n\nfunction isContextProvider(type) {\n {\n var childContextTypes = type.childContextTypes;\n return childContextTypes !== null && childContextTypes !== undefined;\n }\n}\n\nfunction popContext(fiber) {\n {\n pop(didPerformWorkStackCursor, fiber);\n pop(contextStackCursor, fiber);\n }\n}\n\nfunction popTopLevelContextObject(fiber) {\n {\n pop(didPerformWorkStackCursor, fiber);\n pop(contextStackCursor, fiber);\n }\n}\n\nfunction pushTopLevelContextObject(fiber, context, didChange) {\n {\n if (!(contextStackCursor.current === emptyContextObject)) {\n {\n throw Error( \"Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n push(contextStackCursor, context, fiber);\n push(didPerformWorkStackCursor, didChange, fiber);\n }\n}\n\nfunction processChildContext(fiber, type, parentContext) {\n {\n var instance = fiber.stateNode;\n var childContextTypes = type.childContextTypes; // TODO (bvaughn) Replace this behavior with an invariant() in the future.\n // It has only been added in Fiber to match the (unintentional) behavior in Stack.\n\n if (typeof instance.getChildContext !== 'function') {\n {\n var componentName = getComponentName(type) || 'Unknown';\n\n if (!warnedAboutMissingGetChildContext[componentName]) {\n warnedAboutMissingGetChildContext[componentName] = true;\n\n error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);\n }\n }\n\n return parentContext;\n }\n\n var childContext = instance.getChildContext();\n\n for (var contextKey in childContext) {\n if (!(contextKey in childContextTypes)) {\n {\n throw Error( (getComponentName(type) || 'Unknown') + \".getChildContext(): key \\\"\" + contextKey + \"\\\" is not defined in childContextTypes.\" );\n }\n }\n }\n\n {\n var name = getComponentName(type) || 'Unknown';\n checkPropTypes(childContextTypes, childContext, 'child context', name);\n }\n\n return _assign({}, parentContext, childContext);\n }\n}\n\nfunction pushContextProvider(workInProgress) {\n {\n var instance = workInProgress.stateNode; // We push the context as early as possible to ensure stack integrity.\n // If the instance does not exist yet, we will push null at first,\n // and replace it on the stack later when invalidating the context.\n\n var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject; // Remember the parent context so we can merge with it later.\n // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates.\n\n previousContext = contextStackCursor.current;\n push(contextStackCursor, memoizedMergedChildContext, workInProgress);\n push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress);\n return true;\n }\n}\n\nfunction invalidateContextProvider(workInProgress, type, didChange) {\n {\n var instance = workInProgress.stateNode;\n\n if (!instance) {\n {\n throw Error( \"Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n if (didChange) {\n // Merge parent and own context.\n // Skip this if we're not updating due to sCU.\n // This avoids unnecessarily recomputing memoized values.\n var mergedContext = processChildContext(workInProgress, type, previousContext);\n instance.__reactInternalMemoizedMergedChildContext = mergedContext; // Replace the old (or empty) context with the new one.\n // It is important to unwind the context in the reverse order.\n\n pop(didPerformWorkStackCursor, workInProgress);\n pop(contextStackCursor, workInProgress); // Now push the new context and mark that it has changed.\n\n push(contextStackCursor, mergedContext, workInProgress);\n push(didPerformWorkStackCursor, didChange, workInProgress);\n } else {\n pop(didPerformWorkStackCursor, workInProgress);\n push(didPerformWorkStackCursor, didChange, workInProgress);\n }\n }\n}\n\nfunction findCurrentUnmaskedContext(fiber) {\n {\n // Currently this is only used with renderSubtreeIntoContainer; not sure if it\n // makes sense elsewhere\n if (!(isFiberMounted(fiber) && fiber.tag === ClassComponent)) {\n {\n throw Error( \"Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n var node = fiber;\n\n do {\n switch (node.tag) {\n case HostRoot:\n return node.stateNode.context;\n\n case ClassComponent:\n {\n var Component = node.type;\n\n if (isContextProvider(Component)) {\n return node.stateNode.__reactInternalMemoizedMergedChildContext;\n }\n\n break;\n }\n }\n\n node = node.return;\n } while (node !== null);\n\n {\n {\n throw Error( \"Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n }\n}\n\nvar LegacyRoot = 0;\nvar BlockingRoot = 1;\nvar ConcurrentRoot = 2;\n\nvar rendererID = null;\nvar injectedHook = null;\nvar hasLoggedError = false;\nvar isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined';\nfunction injectInternals(internals) {\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // No DevTools\n return false;\n }\n\n var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n\n if (hook.isDisabled) {\n // This isn't a real property on the hook, but it can be set to opt out\n // of DevTools integration and associated warnings and logs.\n // https://github.com/facebook/react/issues/3877\n return true;\n }\n\n if (!hook.supportsFiber) {\n {\n error('The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://reactjs.org/link/react-devtools');\n } // DevTools exists, even though it doesn't support Fiber.\n\n\n return true;\n }\n\n try {\n rendererID = hook.inject(internals); // We have successfully injected, so now it is safe to set up hooks.\n\n injectedHook = hook;\n } catch (err) {\n // Catch all errors because it is unsafe to throw during initialization.\n {\n error('React instrumentation encountered an error: %s.', err);\n }\n } // DevTools exists\n\n\n return true;\n}\nfunction onScheduleRoot(root, children) {\n {\n if (injectedHook && typeof injectedHook.onScheduleFiberRoot === 'function') {\n try {\n injectedHook.onScheduleFiberRoot(rendererID, root, children);\n } catch (err) {\n if ( !hasLoggedError) {\n hasLoggedError = true;\n\n error('React instrumentation encountered an error: %s', err);\n }\n }\n }\n }\n}\nfunction onCommitRoot(root, priorityLevel) {\n if (injectedHook && typeof injectedHook.onCommitFiberRoot === 'function') {\n try {\n var didError = (root.current.flags & DidCapture) === DidCapture;\n\n if (enableProfilerTimer) {\n injectedHook.onCommitFiberRoot(rendererID, root, priorityLevel, didError);\n } else {\n injectedHook.onCommitFiberRoot(rendererID, root, undefined, didError);\n }\n } catch (err) {\n {\n if (!hasLoggedError) {\n hasLoggedError = true;\n\n error('React instrumentation encountered an error: %s', err);\n }\n }\n }\n }\n}\nfunction onCommitUnmount(fiber) {\n if (injectedHook && typeof injectedHook.onCommitFiberUnmount === 'function') {\n try {\n injectedHook.onCommitFiberUnmount(rendererID, fiber);\n } catch (err) {\n {\n if (!hasLoggedError) {\n hasLoggedError = true;\n\n error('React instrumentation encountered an error: %s', err);\n }\n }\n }\n }\n}\n\nvar Scheduler_runWithPriority = Scheduler.unstable_runWithPriority,\n Scheduler_scheduleCallback = Scheduler.unstable_scheduleCallback,\n Scheduler_cancelCallback = Scheduler.unstable_cancelCallback,\n Scheduler_shouldYield = Scheduler.unstable_shouldYield,\n Scheduler_requestPaint = Scheduler.unstable_requestPaint,\n Scheduler_now$1 = Scheduler.unstable_now,\n Scheduler_getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n Scheduler_ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n Scheduler_UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n Scheduler_NormalPriority = Scheduler.unstable_NormalPriority,\n Scheduler_LowPriority = Scheduler.unstable_LowPriority,\n Scheduler_IdlePriority = Scheduler.unstable_IdlePriority;\n\n{\n // Provide explicit error message when production+profiling bundle of e.g.\n // react-dom is used with production (non-profiling) bundle of\n // scheduler/tracing\n if (!(tracing.__interactionsRef != null && tracing.__interactionsRef.current != null)) {\n {\n throw Error( \"It is not supported to run the profiling version of a renderer (for example, `react-dom/profiling`) without also replacing the `scheduler/tracing` module with `scheduler/tracing-profiling`. Your bundler might have a setting for aliasing both modules. Learn more at https://reactjs.org/link/profiling\" );\n }\n }\n}\n\nvar fakeCallbackNode = {}; // Except for NoPriority, these correspond to Scheduler priorities. We use\n// ascending numbers so we can compare them like numbers. They start at 90 to\n// avoid clashing with Scheduler's priorities.\n\nvar ImmediatePriority$1 = 99;\nvar UserBlockingPriority$2 = 98;\nvar NormalPriority$1 = 97;\nvar LowPriority$1 = 96;\nvar IdlePriority$1 = 95; // NoPriority is the absence of priority. Also React-only.\n\nvar NoPriority$1 = 90;\nvar shouldYield = Scheduler_shouldYield;\nvar requestPaint = // Fall back gracefully if we're running an older version of Scheduler.\nScheduler_requestPaint !== undefined ? Scheduler_requestPaint : function () {};\nvar syncQueue = null;\nvar immediateQueueCallbackNode = null;\nvar isFlushingSyncQueue = false;\nvar initialTimeMs$1 = Scheduler_now$1(); // If the initial timestamp is reasonably small, use Scheduler's `now` directly.\n// This will be the case for modern browsers that support `performance.now`. In\n// older browsers, Scheduler falls back to `Date.now`, which returns a Unix\n// timestamp. In that case, subtract the module initialization time to simulate\n// the behavior of performance.now and keep our times small enough to fit\n// within 32 bits.\n// TODO: Consider lifting this into Scheduler.\n\nvar now = initialTimeMs$1 < 10000 ? Scheduler_now$1 : function () {\n return Scheduler_now$1() - initialTimeMs$1;\n};\nfunction getCurrentPriorityLevel() {\n switch (Scheduler_getCurrentPriorityLevel()) {\n case Scheduler_ImmediatePriority:\n return ImmediatePriority$1;\n\n case Scheduler_UserBlockingPriority:\n return UserBlockingPriority$2;\n\n case Scheduler_NormalPriority:\n return NormalPriority$1;\n\n case Scheduler_LowPriority:\n return LowPriority$1;\n\n case Scheduler_IdlePriority:\n return IdlePriority$1;\n\n default:\n {\n {\n throw Error( \"Unknown priority level.\" );\n }\n }\n\n }\n}\n\nfunction reactPriorityToSchedulerPriority(reactPriorityLevel) {\n switch (reactPriorityLevel) {\n case ImmediatePriority$1:\n return Scheduler_ImmediatePriority;\n\n case UserBlockingPriority$2:\n return Scheduler_UserBlockingPriority;\n\n case NormalPriority$1:\n return Scheduler_NormalPriority;\n\n case LowPriority$1:\n return Scheduler_LowPriority;\n\n case IdlePriority$1:\n return Scheduler_IdlePriority;\n\n default:\n {\n {\n throw Error( \"Unknown priority level.\" );\n }\n }\n\n }\n}\n\nfunction runWithPriority$1(reactPriorityLevel, fn) {\n var priorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);\n return Scheduler_runWithPriority(priorityLevel, fn);\n}\nfunction scheduleCallback(reactPriorityLevel, callback, options) {\n var priorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);\n return Scheduler_scheduleCallback(priorityLevel, callback, options);\n}\nfunction scheduleSyncCallback(callback) {\n // Push this callback into an internal queue. We'll flush these either in\n // the next tick, or earlier if something calls `flushSyncCallbackQueue`.\n if (syncQueue === null) {\n syncQueue = [callback]; // Flush the queue in the next tick, at the earliest.\n\n immediateQueueCallbackNode = Scheduler_scheduleCallback(Scheduler_ImmediatePriority, flushSyncCallbackQueueImpl);\n } else {\n // Push onto existing queue. Don't need to schedule a callback because\n // we already scheduled one when we created the queue.\n syncQueue.push(callback);\n }\n\n return fakeCallbackNode;\n}\nfunction cancelCallback(callbackNode) {\n if (callbackNode !== fakeCallbackNode) {\n Scheduler_cancelCallback(callbackNode);\n }\n}\nfunction flushSyncCallbackQueue() {\n if (immediateQueueCallbackNode !== null) {\n var node = immediateQueueCallbackNode;\n immediateQueueCallbackNode = null;\n Scheduler_cancelCallback(node);\n }\n\n flushSyncCallbackQueueImpl();\n}\n\nfunction flushSyncCallbackQueueImpl() {\n if (!isFlushingSyncQueue && syncQueue !== null) {\n // Prevent re-entrancy.\n isFlushingSyncQueue = true;\n var i = 0;\n\n {\n try {\n var _isSync2 = true;\n var _queue = syncQueue;\n runWithPriority$1(ImmediatePriority$1, function () {\n for (; i < _queue.length; i++) {\n var callback = _queue[i];\n\n do {\n callback = callback(_isSync2);\n } while (callback !== null);\n }\n });\n syncQueue = null;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n if (syncQueue !== null) {\n syncQueue = syncQueue.slice(i + 1);\n } // Resume flushing in the next tick\n\n\n Scheduler_scheduleCallback(Scheduler_ImmediatePriority, flushSyncCallbackQueue);\n throw error;\n } finally {\n isFlushingSyncQueue = false;\n }\n }\n }\n}\n\n// TODO: this is special because it gets imported during build.\nvar ReactVersion = '17.0.2';\n\nvar NoMode = 0;\nvar StrictMode = 1; // TODO: Remove BlockingMode and ConcurrentMode by reading from the root\n// tag instead\n\nvar BlockingMode = 2;\nvar ConcurrentMode = 4;\nvar ProfileMode = 8;\nvar DebugTracingMode = 16;\n\nvar ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig;\nvar NoTransition = 0;\nfunction requestCurrentTransition() {\n return ReactCurrentBatchConfig.transition;\n}\n\nvar ReactStrictModeWarnings = {\n recordUnsafeLifecycleWarnings: function (fiber, instance) {},\n flushPendingUnsafeLifecycleWarnings: function () {},\n recordLegacyContextWarning: function (fiber, instance) {},\n flushLegacyContextWarning: function () {},\n discardPendingWarnings: function () {}\n};\n\n{\n var findStrictRoot = function (fiber) {\n var maybeStrictRoot = null;\n var node = fiber;\n\n while (node !== null) {\n if (node.mode & StrictMode) {\n maybeStrictRoot = node;\n }\n\n node = node.return;\n }\n\n return maybeStrictRoot;\n };\n\n var setToSortedString = function (set) {\n var array = [];\n set.forEach(function (value) {\n array.push(value);\n });\n return array.sort().join(', ');\n };\n\n var pendingComponentWillMountWarnings = [];\n var pendingUNSAFE_ComponentWillMountWarnings = [];\n var pendingComponentWillReceivePropsWarnings = [];\n var pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n var pendingComponentWillUpdateWarnings = [];\n var pendingUNSAFE_ComponentWillUpdateWarnings = []; // Tracks components we have already warned about.\n\n var didWarnAboutUnsafeLifecycles = new Set();\n\n ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function (fiber, instance) {\n // Dedup strategy: Warn once per component.\n if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {\n return;\n }\n\n if (typeof instance.componentWillMount === 'function' && // Don't warn about react-lifecycles-compat polyfilled components.\n instance.componentWillMount.__suppressDeprecationWarning !== true) {\n pendingComponentWillMountWarnings.push(fiber);\n }\n\n if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillMount === 'function') {\n pendingUNSAFE_ComponentWillMountWarnings.push(fiber);\n }\n\n if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n pendingComponentWillReceivePropsWarnings.push(fiber);\n }\n\n if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);\n }\n\n if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n pendingComponentWillUpdateWarnings.push(fiber);\n }\n\n if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillUpdate === 'function') {\n pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);\n }\n };\n\n ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function () {\n // We do an initial pass to gather component names\n var componentWillMountUniqueNames = new Set();\n\n if (pendingComponentWillMountWarnings.length > 0) {\n pendingComponentWillMountWarnings.forEach(function (fiber) {\n componentWillMountUniqueNames.add(getComponentName(fiber.type) || 'Component');\n didWarnAboutUnsafeLifecycles.add(fiber.type);\n });\n pendingComponentWillMountWarnings = [];\n }\n\n var UNSAFE_componentWillMountUniqueNames = new Set();\n\n if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) {\n pendingUNSAFE_ComponentWillMountWarnings.forEach(function (fiber) {\n UNSAFE_componentWillMountUniqueNames.add(getComponentName(fiber.type) || 'Component');\n didWarnAboutUnsafeLifecycles.add(fiber.type);\n });\n pendingUNSAFE_ComponentWillMountWarnings = [];\n }\n\n var componentWillReceivePropsUniqueNames = new Set();\n\n if (pendingComponentWillReceivePropsWarnings.length > 0) {\n pendingComponentWillReceivePropsWarnings.forEach(function (fiber) {\n componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type) || 'Component');\n didWarnAboutUnsafeLifecycles.add(fiber.type);\n });\n pendingComponentWillReceivePropsWarnings = [];\n }\n\n var UNSAFE_componentWillReceivePropsUniqueNames = new Set();\n\n if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) {\n pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function (fiber) {\n UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type) || 'Component');\n didWarnAboutUnsafeLifecycles.add(fiber.type);\n });\n pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n }\n\n var componentWillUpdateUniqueNames = new Set();\n\n if (pendingComponentWillUpdateWarnings.length > 0) {\n pendingComponentWillUpdateWarnings.forEach(function (fiber) {\n componentWillUpdateUniqueNames.add(getComponentName(fiber.type) || 'Component');\n didWarnAboutUnsafeLifecycles.add(fiber.type);\n });\n pendingComponentWillUpdateWarnings = [];\n }\n\n var UNSAFE_componentWillUpdateUniqueNames = new Set();\n\n if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) {\n pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function (fiber) {\n UNSAFE_componentWillUpdateUniqueNames.add(getComponentName(fiber.type) || 'Component');\n didWarnAboutUnsafeLifecycles.add(fiber.type);\n });\n pendingUNSAFE_ComponentWillUpdateWarnings = [];\n } // Finally, we flush all the warnings\n // UNSAFE_ ones before the deprecated ones, since they'll be 'louder'\n\n\n if (UNSAFE_componentWillMountUniqueNames.size > 0) {\n var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames);\n\n error('Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n' + '\\nPlease update the following components: %s', sortedNames);\n }\n\n if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) {\n var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);\n\n error('Using UNSAFE_componentWillReceiveProps in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + \"* If you're updating state whenever props change, \" + 'refactor your code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n' + '\\nPlease update the following components: %s', _sortedNames);\n }\n\n if (UNSAFE_componentWillUpdateUniqueNames.size > 0) {\n var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames);\n\n error('Using UNSAFE_componentWillUpdate in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + '\\nPlease update the following components: %s', _sortedNames2);\n }\n\n if (componentWillMountUniqueNames.size > 0) {\n var _sortedNames3 = setToSortedString(componentWillMountUniqueNames);\n\n warn('componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n' + '* Rename componentWillMount to UNSAFE_componentWillMount to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames3);\n }\n\n if (componentWillReceivePropsUniqueNames.size > 0) {\n var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames);\n\n warn('componentWillReceiveProps has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + \"* If you're updating state whenever props change, refactor your \" + 'code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n' + '* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames4);\n }\n\n if (componentWillUpdateUniqueNames.size > 0) {\n var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames);\n\n warn('componentWillUpdate has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + '* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames5);\n }\n };\n\n var pendingLegacyContextWarning = new Map(); // Tracks components we have already warned about.\n\n var didWarnAboutLegacyContext = new Set();\n\n ReactStrictModeWarnings.recordLegacyContextWarning = function (fiber, instance) {\n var strictRoot = findStrictRoot(fiber);\n\n if (strictRoot === null) {\n error('Expected to find a StrictMode component in a strict mode tree. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n\n return;\n } // Dedup strategy: Warn once per component.\n\n\n if (didWarnAboutLegacyContext.has(fiber.type)) {\n return;\n }\n\n var warningsForRoot = pendingLegacyContextWarning.get(strictRoot);\n\n if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === 'function') {\n if (warningsForRoot === undefined) {\n warningsForRoot = [];\n pendingLegacyContextWarning.set(strictRoot, warningsForRoot);\n }\n\n warningsForRoot.push(fiber);\n }\n };\n\n ReactStrictModeWarnings.flushLegacyContextWarning = function () {\n pendingLegacyContextWarning.forEach(function (fiberArray, strictRoot) {\n if (fiberArray.length === 0) {\n return;\n }\n\n var firstFiber = fiberArray[0];\n var uniqueNames = new Set();\n fiberArray.forEach(function (fiber) {\n uniqueNames.add(getComponentName(fiber.type) || 'Component');\n didWarnAboutLegacyContext.add(fiber.type);\n });\n var sortedNames = setToSortedString(uniqueNames);\n\n try {\n setCurrentFiber(firstFiber);\n\n error('Legacy context API has been detected within a strict-mode tree.' + '\\n\\nThe old API will be supported in all 16.x releases, but applications ' + 'using it should migrate to the new version.' + '\\n\\nPlease update the following components: %s' + '\\n\\nLearn more about this warning here: https://reactjs.org/link/legacy-context', sortedNames);\n } finally {\n resetCurrentFiber();\n }\n });\n };\n\n ReactStrictModeWarnings.discardPendingWarnings = function () {\n pendingComponentWillMountWarnings = [];\n pendingUNSAFE_ComponentWillMountWarnings = [];\n pendingComponentWillReceivePropsWarnings = [];\n pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n pendingComponentWillUpdateWarnings = [];\n pendingUNSAFE_ComponentWillUpdateWarnings = [];\n pendingLegacyContextWarning = new Map();\n };\n}\n\nfunction resolveDefaultProps(Component, baseProps) {\n if (Component && Component.defaultProps) {\n // Resolve default props. Taken from ReactElement\n var props = _assign({}, baseProps);\n\n var defaultProps = Component.defaultProps;\n\n for (var propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n\n return props;\n }\n\n return baseProps;\n}\n\n// Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\nvar valueCursor = createCursor(null);\nvar rendererSigil;\n\n{\n // Use this to detect multiple renderers using the same context\n rendererSigil = {};\n}\n\nvar currentlyRenderingFiber = null;\nvar lastContextDependency = null;\nvar lastContextWithAllBitsObserved = null;\nvar isDisallowedContextReadInDEV = false;\nfunction resetContextDependencies() {\n // This is called right before React yields execution, to ensure `readContext`\n // cannot be called outside the render phase.\n currentlyRenderingFiber = null;\n lastContextDependency = null;\n lastContextWithAllBitsObserved = null;\n\n {\n isDisallowedContextReadInDEV = false;\n }\n}\nfunction enterDisallowedContextReadInDEV() {\n {\n isDisallowedContextReadInDEV = true;\n }\n}\nfunction exitDisallowedContextReadInDEV() {\n {\n isDisallowedContextReadInDEV = false;\n }\n}\nfunction pushProvider(providerFiber, nextValue) {\n var context = providerFiber.type._context;\n\n {\n push(valueCursor, context._currentValue, providerFiber);\n context._currentValue = nextValue;\n\n {\n if (context._currentRenderer !== undefined && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {\n error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n }\n\n context._currentRenderer = rendererSigil;\n }\n }\n}\nfunction popProvider(providerFiber) {\n var currentValue = valueCursor.current;\n pop(valueCursor, providerFiber);\n var context = providerFiber.type._context;\n\n {\n context._currentValue = currentValue;\n }\n}\nfunction calculateChangedBits(context, newValue, oldValue) {\n if (objectIs(oldValue, newValue)) {\n // No change\n return 0;\n } else {\n var changedBits = typeof context._calculateChangedBits === 'function' ? context._calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n {\n if ((changedBits & MAX_SIGNED_31_BIT_INT) !== changedBits) {\n error('calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n }\n\n return changedBits | 0;\n }\n}\nfunction scheduleWorkOnParentPath(parent, renderLanes) {\n // Update the child lanes of all the ancestors, including the alternates.\n var node = parent;\n\n while (node !== null) {\n var alternate = node.alternate;\n\n if (!isSubsetOfLanes(node.childLanes, renderLanes)) {\n node.childLanes = mergeLanes(node.childLanes, renderLanes);\n\n if (alternate !== null) {\n alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n }\n } else if (alternate !== null && !isSubsetOfLanes(alternate.childLanes, renderLanes)) {\n alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n } else {\n // Neither alternate was updated, which means the rest of the\n // ancestor path already has sufficient priority.\n break;\n }\n\n node = node.return;\n }\n}\nfunction propagateContextChange(workInProgress, context, changedBits, renderLanes) {\n var fiber = workInProgress.child;\n\n if (fiber !== null) {\n // Set the return pointer of the child to the work-in-progress fiber.\n fiber.return = workInProgress;\n }\n\n while (fiber !== null) {\n var nextFiber = void 0; // Visit this fiber.\n\n var list = fiber.dependencies;\n\n if (list !== null) {\n nextFiber = fiber.child;\n var dependency = list.firstContext;\n\n while (dependency !== null) {\n // Check if the context matches.\n if (dependency.context === context && (dependency.observedBits & changedBits) !== 0) {\n // Match! Schedule an update on this fiber.\n if (fiber.tag === ClassComponent) {\n // Schedule a force update on the work-in-progress.\n var update = createUpdate(NoTimestamp, pickArbitraryLane(renderLanes));\n update.tag = ForceUpdate; // TODO: Because we don't have a work-in-progress, this will add the\n // update to the current fiber, too, which means it will persist even if\n // this render is thrown away. Since it's a race condition, not sure it's\n // worth fixing.\n\n enqueueUpdate(fiber, update);\n }\n\n fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n var alternate = fiber.alternate;\n\n if (alternate !== null) {\n alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n }\n\n scheduleWorkOnParentPath(fiber.return, renderLanes); // Mark the updated lanes on the list, too.\n\n list.lanes = mergeLanes(list.lanes, renderLanes); // Since we already found a match, we can stop traversing the\n // dependency list.\n\n break;\n }\n\n dependency = dependency.next;\n }\n } else if (fiber.tag === ContextProvider) {\n // Don't scan deeper if this is a matching provider\n nextFiber = fiber.type === workInProgress.type ? null : fiber.child;\n } else {\n // Traverse down.\n nextFiber = fiber.child;\n }\n\n if (nextFiber !== null) {\n // Set the return pointer of the child to the work-in-progress fiber.\n nextFiber.return = fiber;\n } else {\n // No child. Traverse to next sibling.\n nextFiber = fiber;\n\n while (nextFiber !== null) {\n if (nextFiber === workInProgress) {\n // We're back to the root of this subtree. Exit.\n nextFiber = null;\n break;\n }\n\n var sibling = nextFiber.sibling;\n\n if (sibling !== null) {\n // Set the return pointer of the sibling to the work-in-progress fiber.\n sibling.return = nextFiber.return;\n nextFiber = sibling;\n break;\n } // No more siblings. Traverse up.\n\n\n nextFiber = nextFiber.return;\n }\n }\n\n fiber = nextFiber;\n }\n}\nfunction prepareToReadContext(workInProgress, renderLanes) {\n currentlyRenderingFiber = workInProgress;\n lastContextDependency = null;\n lastContextWithAllBitsObserved = null;\n var dependencies = workInProgress.dependencies;\n\n if (dependencies !== null) {\n var firstContext = dependencies.firstContext;\n\n if (firstContext !== null) {\n if (includesSomeLane(dependencies.lanes, renderLanes)) {\n // Context list has a pending update. Mark that this fiber performed work.\n markWorkInProgressReceivedUpdate();\n } // Reset the work-in-progress list\n\n\n dependencies.firstContext = null;\n }\n }\n}\nfunction readContext(context, observedBits) {\n {\n // This warning would fire if you read context inside a Hook like useMemo.\n // Unlike the class check below, it's not enforced in production for perf.\n if (isDisallowedContextReadInDEV) {\n error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n }\n }\n\n if (lastContextWithAllBitsObserved === context) ; else if (observedBits === false || observedBits === 0) ; else {\n var resolvedObservedBits; // Avoid deopting on observable arguments or heterogeneous types.\n\n if (typeof observedBits !== 'number' || observedBits === MAX_SIGNED_31_BIT_INT) {\n // Observe all updates.\n lastContextWithAllBitsObserved = context;\n resolvedObservedBits = MAX_SIGNED_31_BIT_INT;\n } else {\n resolvedObservedBits = observedBits;\n }\n\n var contextItem = {\n context: context,\n observedBits: resolvedObservedBits,\n next: null\n };\n\n if (lastContextDependency === null) {\n if (!(currentlyRenderingFiber !== null)) {\n {\n throw Error( \"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\" );\n }\n } // This is the first dependency for this component. Create a new list.\n\n\n lastContextDependency = contextItem;\n currentlyRenderingFiber.dependencies = {\n lanes: NoLanes,\n firstContext: contextItem,\n responders: null\n };\n } else {\n // Append a new context item.\n lastContextDependency = lastContextDependency.next = contextItem;\n }\n }\n\n return context._currentValue ;\n}\n\nvar UpdateState = 0;\nvar ReplaceState = 1;\nvar ForceUpdate = 2;\nvar CaptureUpdate = 3; // Global state that is reset at the beginning of calling `processUpdateQueue`.\n// It should only be read right after calling `processUpdateQueue`, via\n// `checkHasForceUpdateAfterProcessing`.\n\nvar hasForceUpdate = false;\nvar didWarnUpdateInsideUpdate;\nvar currentlyProcessingQueue;\n\n{\n didWarnUpdateInsideUpdate = false;\n currentlyProcessingQueue = null;\n}\n\nfunction initializeUpdateQueue(fiber) {\n var queue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: {\n pending: null\n },\n effects: null\n };\n fiber.updateQueue = queue;\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n // Clone the update queue from current. Unless it's already a clone.\n var queue = workInProgress.updateQueue;\n var currentQueue = current.updateQueue;\n\n if (queue === currentQueue) {\n var clone = {\n baseState: currentQueue.baseState,\n firstBaseUpdate: currentQueue.firstBaseUpdate,\n lastBaseUpdate: currentQueue.lastBaseUpdate,\n shared: currentQueue.shared,\n effects: currentQueue.effects\n };\n workInProgress.updateQueue = clone;\n }\n}\nfunction createUpdate(eventTime, lane) {\n var update = {\n eventTime: eventTime,\n lane: lane,\n tag: UpdateState,\n payload: null,\n callback: null,\n next: null\n };\n return update;\n}\nfunction enqueueUpdate(fiber, update) {\n var updateQueue = fiber.updateQueue;\n\n if (updateQueue === null) {\n // Only occurs if the fiber has been unmounted.\n return;\n }\n\n var sharedQueue = updateQueue.shared;\n var pending = sharedQueue.pending;\n\n if (pending === null) {\n // This is the first update. Create a circular list.\n update.next = update;\n } else {\n update.next = pending.next;\n pending.next = update;\n }\n\n sharedQueue.pending = update;\n\n {\n if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) {\n error('An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');\n\n didWarnUpdateInsideUpdate = true;\n }\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n // Captured updates are updates that are thrown by a child during the render\n // phase. They should be discarded if the render is aborted. Therefore,\n // we should only put them on the work-in-progress queue, not the current one.\n var queue = workInProgress.updateQueue; // Check if the work-in-progress queue is a clone.\n\n var current = workInProgress.alternate;\n\n if (current !== null) {\n var currentQueue = current.updateQueue;\n\n if (queue === currentQueue) {\n // The work-in-progress queue is the same as current. This happens when\n // we bail out on a parent fiber that then captures an error thrown by\n // a child. Since we want to append the update only to the work-in\n // -progress queue, we need to clone the updates. We usually clone during\n // processUpdateQueue, but that didn't happen in this case because we\n // skipped over the parent when we bailed out.\n var newFirst = null;\n var newLast = null;\n var firstBaseUpdate = queue.firstBaseUpdate;\n\n if (firstBaseUpdate !== null) {\n // Loop through the updates and clone them.\n var update = firstBaseUpdate;\n\n do {\n var clone = {\n eventTime: update.eventTime,\n lane: update.lane,\n tag: update.tag,\n payload: update.payload,\n callback: update.callback,\n next: null\n };\n\n if (newLast === null) {\n newFirst = newLast = clone;\n } else {\n newLast.next = clone;\n newLast = clone;\n }\n\n update = update.next;\n } while (update !== null); // Append the captured update the end of the cloned list.\n\n\n if (newLast === null) {\n newFirst = newLast = capturedUpdate;\n } else {\n newLast.next = capturedUpdate;\n newLast = capturedUpdate;\n }\n } else {\n // There are no base updates.\n newFirst = newLast = capturedUpdate;\n }\n\n queue = {\n baseState: currentQueue.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: currentQueue.shared,\n effects: currentQueue.effects\n };\n workInProgress.updateQueue = queue;\n return;\n }\n } // Append the update to the end of the list.\n\n\n var lastBaseUpdate = queue.lastBaseUpdate;\n\n if (lastBaseUpdate === null) {\n queue.firstBaseUpdate = capturedUpdate;\n } else {\n lastBaseUpdate.next = capturedUpdate;\n }\n\n queue.lastBaseUpdate = capturedUpdate;\n}\n\nfunction getStateFromUpdate(workInProgress, queue, update, prevState, nextProps, instance) {\n switch (update.tag) {\n case ReplaceState:\n {\n var payload = update.payload;\n\n if (typeof payload === 'function') {\n // Updater function\n {\n enterDisallowedContextReadInDEV();\n }\n\n var nextState = payload.call(instance, prevState, nextProps);\n\n {\n if ( workInProgress.mode & StrictMode) {\n disableLogs();\n\n try {\n payload.call(instance, prevState, nextProps);\n } finally {\n reenableLogs();\n }\n }\n\n exitDisallowedContextReadInDEV();\n }\n\n return nextState;\n } // State object\n\n\n return payload;\n }\n\n case CaptureUpdate:\n {\n workInProgress.flags = workInProgress.flags & ~ShouldCapture | DidCapture;\n }\n // Intentional fallthrough\n\n case UpdateState:\n {\n var _payload = update.payload;\n var partialState;\n\n if (typeof _payload === 'function') {\n // Updater function\n {\n enterDisallowedContextReadInDEV();\n }\n\n partialState = _payload.call(instance, prevState, nextProps);\n\n {\n if ( workInProgress.mode & StrictMode) {\n disableLogs();\n\n try {\n _payload.call(instance, prevState, nextProps);\n } finally {\n reenableLogs();\n }\n }\n\n exitDisallowedContextReadInDEV();\n }\n } else {\n // Partial state object\n partialState = _payload;\n }\n\n if (partialState === null || partialState === undefined) {\n // Null and undefined are treated as no-ops.\n return prevState;\n } // Merge the partial state and the previous state.\n\n\n return _assign({}, prevState, partialState);\n }\n\n case ForceUpdate:\n {\n hasForceUpdate = true;\n return prevState;\n }\n }\n\n return prevState;\n}\n\nfunction processUpdateQueue(workInProgress, props, instance, renderLanes) {\n // This is always non-null on a ClassComponent or HostRoot\n var queue = workInProgress.updateQueue;\n hasForceUpdate = false;\n\n {\n currentlyProcessingQueue = queue.shared;\n }\n\n var firstBaseUpdate = queue.firstBaseUpdate;\n var lastBaseUpdate = queue.lastBaseUpdate; // Check if there are pending updates. If so, transfer them to the base queue.\n\n var pendingQueue = queue.shared.pending;\n\n if (pendingQueue !== null) {\n queue.shared.pending = null; // The pending queue is circular. Disconnect the pointer between first\n // and last so that it's non-circular.\n\n var lastPendingUpdate = pendingQueue;\n var firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null; // Append pending updates to base queue\n\n if (lastBaseUpdate === null) {\n firstBaseUpdate = firstPendingUpdate;\n } else {\n lastBaseUpdate.next = firstPendingUpdate;\n }\n\n lastBaseUpdate = lastPendingUpdate; // If there's a current queue, and it's different from the base queue, then\n // we need to transfer the updates to that queue, too. Because the base\n // queue is a singly-linked list with no cycles, we can append to both\n // lists and take advantage of structural sharing.\n // TODO: Pass `current` as argument\n\n var current = workInProgress.alternate;\n\n if (current !== null) {\n // This is always non-null on a ClassComponent or HostRoot\n var currentQueue = current.updateQueue;\n var currentLastBaseUpdate = currentQueue.lastBaseUpdate;\n\n if (currentLastBaseUpdate !== lastBaseUpdate) {\n if (currentLastBaseUpdate === null) {\n currentQueue.firstBaseUpdate = firstPendingUpdate;\n } else {\n currentLastBaseUpdate.next = firstPendingUpdate;\n }\n\n currentQueue.lastBaseUpdate = lastPendingUpdate;\n }\n }\n } // These values may change as we process the queue.\n\n\n if (firstBaseUpdate !== null) {\n // Iterate through the list of updates to compute the result.\n var newState = queue.baseState; // TODO: Don't need to accumulate this. Instead, we can remove renderLanes\n // from the original lanes.\n\n var newLanes = NoLanes;\n var newBaseState = null;\n var newFirstBaseUpdate = null;\n var newLastBaseUpdate = null;\n var update = firstBaseUpdate;\n\n do {\n var updateLane = update.lane;\n var updateEventTime = update.eventTime;\n\n if (!isSubsetOfLanes(renderLanes, updateLane)) {\n // Priority is insufficient. Skip this update. If this is the first\n // skipped update, the previous update/state is the new base\n // update/state.\n var clone = {\n eventTime: updateEventTime,\n lane: updateLane,\n tag: update.tag,\n payload: update.payload,\n callback: update.callback,\n next: null\n };\n\n if (newLastBaseUpdate === null) {\n newFirstBaseUpdate = newLastBaseUpdate = clone;\n newBaseState = newState;\n } else {\n newLastBaseUpdate = newLastBaseUpdate.next = clone;\n } // Update the remaining priority in the queue.\n\n\n newLanes = mergeLanes(newLanes, updateLane);\n } else {\n // This update does have sufficient priority.\n if (newLastBaseUpdate !== null) {\n var _clone = {\n eventTime: updateEventTime,\n // This update is going to be committed so we never want uncommit\n // it. Using NoLane works because 0 is a subset of all bitmasks, so\n // this will never be skipped by the check above.\n lane: NoLane,\n tag: update.tag,\n payload: update.payload,\n callback: update.callback,\n next: null\n };\n newLastBaseUpdate = newLastBaseUpdate.next = _clone;\n } // Process this update.\n\n\n newState = getStateFromUpdate(workInProgress, queue, update, newState, props, instance);\n var callback = update.callback;\n\n if (callback !== null) {\n workInProgress.flags |= Callback;\n var effects = queue.effects;\n\n if (effects === null) {\n queue.effects = [update];\n } else {\n effects.push(update);\n }\n }\n }\n\n update = update.next;\n\n if (update === null) {\n pendingQueue = queue.shared.pending;\n\n if (pendingQueue === null) {\n break;\n } else {\n // An update was scheduled from inside a reducer. Add the new\n // pending updates to the end of the list and keep processing.\n var _lastPendingUpdate = pendingQueue; // Intentionally unsound. Pending updates form a circular list, but we\n // unravel them when transferring them to the base queue.\n\n var _firstPendingUpdate = _lastPendingUpdate.next;\n _lastPendingUpdate.next = null;\n update = _firstPendingUpdate;\n queue.lastBaseUpdate = _lastPendingUpdate;\n queue.shared.pending = null;\n }\n }\n } while (true);\n\n if (newLastBaseUpdate === null) {\n newBaseState = newState;\n }\n\n queue.baseState = newBaseState;\n queue.firstBaseUpdate = newFirstBaseUpdate;\n queue.lastBaseUpdate = newLastBaseUpdate; // Set the remaining expiration time to be whatever is remaining in the queue.\n // This should be fine because the only two other things that contribute to\n // expiration time are props and context. We're already in the middle of the\n // begin phase by the time we start processing the queue, so we've already\n // dealt with the props. Context in components that specify\n // shouldComponentUpdate is tricky; but we'll have to account for\n // that regardless.\n\n markSkippedUpdateLanes(newLanes);\n workInProgress.lanes = newLanes;\n workInProgress.memoizedState = newState;\n }\n\n {\n currentlyProcessingQueue = null;\n }\n}\n\nfunction callCallback(callback, context) {\n if (!(typeof callback === 'function')) {\n {\n throw Error( \"Invalid argument passed as callback. Expected a function. Instead received: \" + callback );\n }\n }\n\n callback.call(context);\n}\n\nfunction resetHasForceUpdateBeforeProcessing() {\n hasForceUpdate = false;\n}\nfunction checkHasForceUpdateAfterProcessing() {\n return hasForceUpdate;\n}\nfunction commitUpdateQueue(finishedWork, finishedQueue, instance) {\n // Commit the effects\n var effects = finishedQueue.effects;\n finishedQueue.effects = null;\n\n if (effects !== null) {\n for (var i = 0; i < effects.length; i++) {\n var effect = effects[i];\n var callback = effect.callback;\n\n if (callback !== null) {\n effect.callback = null;\n callCallback(callback, instance);\n }\n }\n }\n}\n\nvar fakeInternalInstance = {};\nvar isArray = Array.isArray; // React.Component uses a shared frozen object by default.\n// We'll use it to determine whether we need to initialize legacy refs.\n\nvar emptyRefsObject = new React.Component().refs;\nvar didWarnAboutStateAssignmentForComponent;\nvar didWarnAboutUninitializedState;\nvar didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\nvar didWarnAboutLegacyLifecyclesAndDerivedState;\nvar didWarnAboutUndefinedDerivedState;\nvar warnOnUndefinedDerivedState;\nvar warnOnInvalidCallback;\nvar didWarnAboutDirectlyAssigningPropsToState;\nvar didWarnAboutContextTypeAndContextTypes;\nvar didWarnAboutInvalidateContextType;\n\n{\n didWarnAboutStateAssignmentForComponent = new Set();\n didWarnAboutUninitializedState = new Set();\n didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();\n didWarnAboutLegacyLifecyclesAndDerivedState = new Set();\n didWarnAboutDirectlyAssigningPropsToState = new Set();\n didWarnAboutUndefinedDerivedState = new Set();\n didWarnAboutContextTypeAndContextTypes = new Set();\n didWarnAboutInvalidateContextType = new Set();\n var didWarnOnInvalidCallback = new Set();\n\n warnOnInvalidCallback = function (callback, callerName) {\n if (callback === null || typeof callback === 'function') {\n return;\n }\n\n var key = callerName + '_' + callback;\n\n if (!didWarnOnInvalidCallback.has(key)) {\n didWarnOnInvalidCallback.add(key);\n\n error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n }\n };\n\n warnOnUndefinedDerivedState = function (type, partialState) {\n if (partialState === undefined) {\n var componentName = getComponentName(type) || 'Component';\n\n if (!didWarnAboutUndefinedDerivedState.has(componentName)) {\n didWarnAboutUndefinedDerivedState.add(componentName);\n\n error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);\n }\n }\n }; // This is so gross but it's at least non-critical and can be removed if\n // it causes problems. This is meant to give a nicer error message for\n // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component,\n // ...)) which otherwise throws a \"_processChildContext is not a function\"\n // exception.\n\n\n Object.defineProperty(fakeInternalInstance, '_processChildContext', {\n enumerable: false,\n value: function () {\n {\n {\n throw Error( \"_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn't supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal).\" );\n }\n }\n }\n });\n Object.freeze(fakeInternalInstance);\n}\n\nfunction applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, nextProps) {\n var prevState = workInProgress.memoizedState;\n\n {\n if ( workInProgress.mode & StrictMode) {\n disableLogs();\n\n try {\n // Invoke the function an extra time to help detect side-effects.\n getDerivedStateFromProps(nextProps, prevState);\n } finally {\n reenableLogs();\n }\n }\n }\n\n var partialState = getDerivedStateFromProps(nextProps, prevState);\n\n {\n warnOnUndefinedDerivedState(ctor, partialState);\n } // Merge the partial state and the previous state.\n\n\n var memoizedState = partialState === null || partialState === undefined ? prevState : _assign({}, prevState, partialState);\n workInProgress.memoizedState = memoizedState; // Once the update queue is empty, persist the derived state onto the\n // base state.\n\n if (workInProgress.lanes === NoLanes) {\n // Queue is always non-null for classes\n var updateQueue = workInProgress.updateQueue;\n updateQueue.baseState = memoizedState;\n }\n}\nvar classComponentUpdater = {\n isMounted: isMounted,\n enqueueSetState: function (inst, payload, callback) {\n var fiber = get(inst);\n var eventTime = requestEventTime();\n var lane = requestUpdateLane(fiber);\n var update = createUpdate(eventTime, lane);\n update.payload = payload;\n\n if (callback !== undefined && callback !== null) {\n {\n warnOnInvalidCallback(callback, 'setState');\n }\n\n update.callback = callback;\n }\n\n enqueueUpdate(fiber, update);\n scheduleUpdateOnFiber(fiber, lane, eventTime);\n },\n enqueueReplaceState: function (inst, payload, callback) {\n var fiber = get(inst);\n var eventTime = requestEventTime();\n var lane = requestUpdateLane(fiber);\n var update = createUpdate(eventTime, lane);\n update.tag = ReplaceState;\n update.payload = payload;\n\n if (callback !== undefined && callback !== null) {\n {\n warnOnInvalidCallback(callback, 'replaceState');\n }\n\n update.callback = callback;\n }\n\n enqueueUpdate(fiber, update);\n scheduleUpdateOnFiber(fiber, lane, eventTime);\n },\n enqueueForceUpdate: function (inst, callback) {\n var fiber = get(inst);\n var eventTime = requestEventTime();\n var lane = requestUpdateLane(fiber);\n var update = createUpdate(eventTime, lane);\n update.tag = ForceUpdate;\n\n if (callback !== undefined && callback !== null) {\n {\n warnOnInvalidCallback(callback, 'forceUpdate');\n }\n\n update.callback = callback;\n }\n\n enqueueUpdate(fiber, update);\n scheduleUpdateOnFiber(fiber, lane, eventTime);\n }\n};\n\nfunction checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) {\n var instance = workInProgress.stateNode;\n\n if (typeof instance.shouldComponentUpdate === 'function') {\n {\n if ( workInProgress.mode & StrictMode) {\n disableLogs();\n\n try {\n // Invoke the function an extra time to help detect side-effects.\n instance.shouldComponentUpdate(newProps, newState, nextContext);\n } finally {\n reenableLogs();\n }\n }\n }\n\n var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n\n {\n if (shouldUpdate === undefined) {\n error('%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentName(ctor) || 'Component');\n }\n }\n\n return shouldUpdate;\n }\n\n if (ctor.prototype && ctor.prototype.isPureReactComponent) {\n return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);\n }\n\n return true;\n}\n\nfunction checkClassInstance(workInProgress, ctor, newProps) {\n var instance = workInProgress.stateNode;\n\n {\n var name = getComponentName(ctor) || 'Component';\n var renderPresent = instance.render;\n\n if (!renderPresent) {\n if (ctor.prototype && typeof ctor.prototype.render === 'function') {\n error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);\n } else {\n error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);\n }\n }\n\n if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {\n error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);\n }\n\n if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);\n }\n\n if (instance.propTypes) {\n error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);\n }\n\n if (instance.contextType) {\n error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name);\n }\n\n {\n if (instance.contextTypes) {\n error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);\n }\n\n if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {\n didWarnAboutContextTypeAndContextTypes.add(ctor);\n\n error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name);\n }\n }\n\n if (typeof instance.componentShouldUpdate === 'function') {\n error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);\n }\n\n if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {\n error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentName(ctor) || 'A pure component');\n }\n\n if (typeof instance.componentDidUnmount === 'function') {\n error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);\n }\n\n if (typeof instance.componentDidReceiveProps === 'function') {\n error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);\n }\n\n if (typeof instance.componentWillRecieveProps === 'function') {\n error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);\n }\n\n if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') {\n error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name);\n }\n\n var hasMutatedProps = instance.props !== newProps;\n\n if (instance.props !== undefined && hasMutatedProps) {\n error('%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", name, name);\n }\n\n if (instance.defaultProps) {\n error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);\n }\n\n if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {\n didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);\n\n error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentName(ctor));\n }\n\n if (typeof instance.getDerivedStateFromProps === 'function') {\n error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n }\n\n if (typeof instance.getDerivedStateFromError === 'function') {\n error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n }\n\n if (typeof ctor.getSnapshotBeforeUpdate === 'function') {\n error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name);\n }\n\n var _state = instance.state;\n\n if (_state && (typeof _state !== 'object' || isArray(_state))) {\n error('%s.state: must be set to an object or null', name);\n }\n\n if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') {\n error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name);\n }\n }\n}\n\nfunction adoptClassInstance(workInProgress, instance) {\n instance.updater = classComponentUpdater;\n workInProgress.stateNode = instance; // The instance needs access to the fiber so that it can schedule updates\n\n set(instance, workInProgress);\n\n {\n instance._reactInternalInstance = fakeInternalInstance;\n }\n}\n\nfunction constructClassInstance(workInProgress, ctor, props) {\n var isLegacyContextConsumer = false;\n var unmaskedContext = emptyContextObject;\n var context = emptyContextObject;\n var contextType = ctor.contextType;\n\n {\n if ('contextType' in ctor) {\n var isValid = // Allow null for conditional declaration\n contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>\n\n if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {\n didWarnAboutInvalidateContextType.add(ctor);\n var addendum = '';\n\n if (contextType === undefined) {\n addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';\n } else if (typeof contextType !== 'object') {\n addendum = ' However, it is set to a ' + typeof contextType + '.';\n } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {\n addendum = ' Did you accidentally pass the Context.Provider instead?';\n } else if (contextType._context !== undefined) {\n // <Context.Consumer>\n addendum = ' Did you accidentally pass the Context.Consumer instead?';\n } else {\n addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';\n }\n\n error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(ctor) || 'Component', addendum);\n }\n }\n }\n\n if (typeof contextType === 'object' && contextType !== null) {\n context = readContext(contextType);\n } else {\n unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n var contextTypes = ctor.contextTypes;\n isLegacyContextConsumer = contextTypes !== null && contextTypes !== undefined;\n context = isLegacyContextConsumer ? getMaskedContext(workInProgress, unmaskedContext) : emptyContextObject;\n } // Instantiate twice to help detect side-effects.\n\n\n {\n if ( workInProgress.mode & StrictMode) {\n disableLogs();\n\n try {\n new ctor(props, context); // eslint-disable-line no-new\n } finally {\n reenableLogs();\n }\n }\n }\n\n var instance = new ctor(props, context);\n var state = workInProgress.memoizedState = instance.state !== null && instance.state !== undefined ? instance.state : null;\n adoptClassInstance(workInProgress, instance);\n\n {\n if (typeof ctor.getDerivedStateFromProps === 'function' && state === null) {\n var componentName = getComponentName(ctor) || 'Component';\n\n if (!didWarnAboutUninitializedState.has(componentName)) {\n didWarnAboutUninitializedState.add(componentName);\n\n error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName);\n }\n } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Warn about these lifecycles if they are present.\n // Don't warn about react-lifecycles-compat polyfilled methods though.\n\n\n if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') {\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n\n if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n foundWillMountName = 'componentWillMount';\n } else if (typeof instance.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n\n if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n\n if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n\n if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n var _componentName = getComponentName(ctor) || 'Component';\n\n var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n\n if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {\n didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);\n\n error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\n' + 'The above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://reactjs.org/link/unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? \"\\n \" + foundWillMountName : '', foundWillReceivePropsName !== null ? \"\\n \" + foundWillReceivePropsName : '', foundWillUpdateName !== null ? \"\\n \" + foundWillUpdateName : '');\n }\n }\n }\n } // Cache unmasked context so we can avoid recreating masked context unless necessary.\n // ReactFiberContext usually updates this cache but can't for newly-created instances.\n\n\n if (isLegacyContextConsumer) {\n cacheContext(workInProgress, unmaskedContext, context);\n }\n\n return instance;\n}\n\nfunction callComponentWillMount(workInProgress, instance) {\n var oldState = instance.state;\n\n if (typeof instance.componentWillMount === 'function') {\n instance.componentWillMount();\n }\n\n if (typeof instance.UNSAFE_componentWillMount === 'function') {\n instance.UNSAFE_componentWillMount();\n }\n\n if (oldState !== instance.state) {\n {\n error('%s.componentWillMount(): Assigning directly to this.state is ' + \"deprecated (except inside a component's \" + 'constructor). Use setState instead.', getComponentName(workInProgress.type) || 'Component');\n }\n\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n }\n}\n\nfunction callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext) {\n var oldState = instance.state;\n\n if (typeof instance.componentWillReceiveProps === 'function') {\n instance.componentWillReceiveProps(newProps, nextContext);\n }\n\n if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n }\n\n if (instance.state !== oldState) {\n {\n var componentName = getComponentName(workInProgress.type) || 'Component';\n\n if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {\n didWarnAboutStateAssignmentForComponent.add(componentName);\n\n error('%s.componentWillReceiveProps(): Assigning directly to ' + \"this.state is deprecated (except inside a component's \" + 'constructor). Use setState instead.', componentName);\n }\n }\n\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n }\n} // Invokes the mount life-cycles on a previously never rendered instance.\n\n\nfunction mountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n {\n checkClassInstance(workInProgress, ctor, newProps);\n }\n\n var instance = workInProgress.stateNode;\n instance.props = newProps;\n instance.state = workInProgress.memoizedState;\n instance.refs = emptyRefsObject;\n initializeUpdateQueue(workInProgress);\n var contextType = ctor.contextType;\n\n if (typeof contextType === 'object' && contextType !== null) {\n instance.context = readContext(contextType);\n } else {\n var unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n instance.context = getMaskedContext(workInProgress, unmaskedContext);\n }\n\n {\n if (instance.state === newProps) {\n var componentName = getComponentName(ctor) || 'Component';\n\n if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {\n didWarnAboutDirectlyAssigningPropsToState.add(componentName);\n\n error('%s: It is not recommended to assign props directly to state ' + \"because updates to props won't be reflected in state. \" + 'In most cases, it is better to use props directly.', componentName);\n }\n }\n\n if (workInProgress.mode & StrictMode) {\n ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, instance);\n }\n\n {\n ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress, instance);\n }\n }\n\n processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n instance.state = workInProgress.memoizedState;\n var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n\n if (typeof getDerivedStateFromProps === 'function') {\n applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n instance.state = workInProgress.memoizedState;\n } // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n\n if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n callComponentWillMount(workInProgress, instance); // If we had additional state updates during this life-cycle, let's\n // process them now.\n\n processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n instance.state = workInProgress.memoizedState;\n }\n\n if (typeof instance.componentDidMount === 'function') {\n workInProgress.flags |= Update;\n }\n}\n\nfunction resumeMountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n var instance = workInProgress.stateNode;\n var oldProps = workInProgress.memoizedProps;\n instance.props = oldProps;\n var oldContext = instance.context;\n var contextType = ctor.contextType;\n var nextContext = emptyContextObject;\n\n if (typeof contextType === 'object' && contextType !== null) {\n nextContext = readContext(contextType);\n } else {\n var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n nextContext = getMaskedContext(workInProgress, nextLegacyUnmaskedContext);\n }\n\n var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n // ever the previously attempted to render - not the \"current\". However,\n // during componentDidUpdate we pass the \"current\" props.\n // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n if (oldProps !== newProps || oldContext !== nextContext) {\n callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n }\n }\n\n resetHasForceUpdateBeforeProcessing();\n var oldState = workInProgress.memoizedState;\n var newState = instance.state = oldState;\n processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n newState = workInProgress.memoizedState;\n\n if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {\n // If an update was already in progress, we should schedule an Update\n // effect even though we're bailing out, so that cWU/cDU are called.\n if (typeof instance.componentDidMount === 'function') {\n workInProgress.flags |= Update;\n }\n\n return false;\n }\n\n if (typeof getDerivedStateFromProps === 'function') {\n applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n newState = workInProgress.memoizedState;\n }\n\n var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);\n\n if (shouldUpdate) {\n // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n if (typeof instance.componentWillMount === 'function') {\n instance.componentWillMount();\n }\n\n if (typeof instance.UNSAFE_componentWillMount === 'function') {\n instance.UNSAFE_componentWillMount();\n }\n }\n\n if (typeof instance.componentDidMount === 'function') {\n workInProgress.flags |= Update;\n }\n } else {\n // If an update was already in progress, we should schedule an Update\n // effect even though we're bailing out, so that cWU/cDU are called.\n if (typeof instance.componentDidMount === 'function') {\n workInProgress.flags |= Update;\n } // If shouldComponentUpdate returned false, we should still update the\n // memoized state to indicate that this work can be reused.\n\n\n workInProgress.memoizedProps = newProps;\n workInProgress.memoizedState = newState;\n } // Update the existing instance's state, props, and context pointers even\n // if shouldComponentUpdate returns false.\n\n\n instance.props = newProps;\n instance.state = newState;\n instance.context = nextContext;\n return shouldUpdate;\n} // Invokes the update life-cycles and returns false if it shouldn't rerender.\n\n\nfunction updateClassInstance(current, workInProgress, ctor, newProps, renderLanes) {\n var instance = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n var unresolvedOldProps = workInProgress.memoizedProps;\n var oldProps = workInProgress.type === workInProgress.elementType ? unresolvedOldProps : resolveDefaultProps(workInProgress.type, unresolvedOldProps);\n instance.props = oldProps;\n var unresolvedNewProps = workInProgress.pendingProps;\n var oldContext = instance.context;\n var contextType = ctor.contextType;\n var nextContext = emptyContextObject;\n\n if (typeof contextType === 'object' && contextType !== null) {\n nextContext = readContext(contextType);\n } else {\n var nextUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n nextContext = getMaskedContext(workInProgress, nextUnmaskedContext);\n }\n\n var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n // ever the previously attempted to render - not the \"current\". However,\n // during componentDidUpdate we pass the \"current\" props.\n // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n if (unresolvedOldProps !== unresolvedNewProps || oldContext !== nextContext) {\n callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n }\n }\n\n resetHasForceUpdateBeforeProcessing();\n var oldState = workInProgress.memoizedState;\n var newState = instance.state = oldState;\n processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n newState = workInProgress.memoizedState;\n\n if (unresolvedOldProps === unresolvedNewProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {\n // If an update was already in progress, we should schedule an Update\n // effect even though we're bailing out, so that cWU/cDU are called.\n if (typeof instance.componentDidUpdate === 'function') {\n if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n workInProgress.flags |= Update;\n }\n }\n\n if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n workInProgress.flags |= Snapshot;\n }\n }\n\n return false;\n }\n\n if (typeof getDerivedStateFromProps === 'function') {\n applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n newState = workInProgress.memoizedState;\n }\n\n var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);\n\n if (shouldUpdate) {\n // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === 'function' || typeof instance.componentWillUpdate === 'function')) {\n if (typeof instance.componentWillUpdate === 'function') {\n instance.componentWillUpdate(newProps, newState, nextContext);\n }\n\n if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);\n }\n }\n\n if (typeof instance.componentDidUpdate === 'function') {\n workInProgress.flags |= Update;\n }\n\n if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n workInProgress.flags |= Snapshot;\n }\n } else {\n // If an update was already in progress, we should schedule an Update\n // effect even though we're bailing out, so that cWU/cDU are called.\n if (typeof instance.componentDidUpdate === 'function') {\n if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n workInProgress.flags |= Update;\n }\n }\n\n if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n workInProgress.flags |= Snapshot;\n }\n } // If shouldComponentUpdate returned false, we should still update the\n // memoized props/state to indicate that this work can be reused.\n\n\n workInProgress.memoizedProps = newProps;\n workInProgress.memoizedState = newState;\n } // Update the existing instance's state, props, and context pointers even\n // if shouldComponentUpdate returns false.\n\n\n instance.props = newProps;\n instance.state = newState;\n instance.context = nextContext;\n return shouldUpdate;\n}\n\nvar didWarnAboutMaps;\nvar didWarnAboutGenerators;\nvar didWarnAboutStringRefs;\nvar ownerHasKeyUseWarning;\nvar ownerHasFunctionTypeWarning;\n\nvar warnForMissingKey = function (child, returnFiber) {};\n\n{\n didWarnAboutMaps = false;\n didWarnAboutGenerators = false;\n didWarnAboutStringRefs = {};\n /**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n ownerHasKeyUseWarning = {};\n ownerHasFunctionTypeWarning = {};\n\n warnForMissingKey = function (child, returnFiber) {\n if (child === null || typeof child !== 'object') {\n return;\n }\n\n if (!child._store || child._store.validated || child.key != null) {\n return;\n }\n\n if (!(typeof child._store === 'object')) {\n {\n throw Error( \"React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n child._store.validated = true;\n var componentName = getComponentName(returnFiber.type) || 'Component';\n\n if (ownerHasKeyUseWarning[componentName]) {\n return;\n }\n\n ownerHasKeyUseWarning[componentName] = true;\n\n error('Each child in a list should have a unique ' + '\"key\" prop. See https://reactjs.org/link/warning-keys for ' + 'more information.');\n };\n}\n\nvar isArray$1 = Array.isArray;\n\nfunction coerceRef(returnFiber, current, element) {\n var mixedRef = element.ref;\n\n if (mixedRef !== null && typeof mixedRef !== 'function' && typeof mixedRef !== 'object') {\n {\n // TODO: Clean this up once we turn on the string ref warning for\n // everyone, because the strict mode case will no longer be relevant\n if ((returnFiber.mode & StrictMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs\n // because these cannot be automatically converted to an arrow function\n // using a codemod. Therefore, we don't have to warn about string refs again.\n !(element._owner && element._self && element._owner.stateNode !== element._self)) {\n var componentName = getComponentName(returnFiber.type) || 'Component';\n\n if (!didWarnAboutStringRefs[componentName]) {\n {\n error('A string ref, \"%s\", has been found within a strict mode tree. ' + 'String refs are a source of potential bugs and should be avoided. ' + 'We recommend using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', mixedRef);\n }\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n\n if (element._owner) {\n var owner = element._owner;\n var inst;\n\n if (owner) {\n var ownerFiber = owner;\n\n if (!(ownerFiber.tag === ClassComponent)) {\n {\n throw Error( \"Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref\" );\n }\n }\n\n inst = ownerFiber.stateNode;\n }\n\n if (!inst) {\n {\n throw Error( \"Missing owner for string ref \" + mixedRef + \". This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n var stringRef = '' + mixedRef; // Check if previous string ref matches new string ref\n\n if (current !== null && current.ref !== null && typeof current.ref === 'function' && current.ref._stringRef === stringRef) {\n return current.ref;\n }\n\n var ref = function (value) {\n var refs = inst.refs;\n\n if (refs === emptyRefsObject) {\n // This is a lazy pooled frozen object, so we need to initialize.\n refs = inst.refs = {};\n }\n\n if (value === null) {\n delete refs[stringRef];\n } else {\n refs[stringRef] = value;\n }\n };\n\n ref._stringRef = stringRef;\n return ref;\n } else {\n if (!(typeof mixedRef === 'string')) {\n {\n throw Error( \"Expected ref to be a function, a string, an object returned by React.createRef(), or null.\" );\n }\n }\n\n if (!element._owner) {\n {\n throw Error( \"Element ref was specified as a string (\" + mixedRef + \") but no owner was set. This could happen for one of the following reasons:\\n1. You may be adding a ref to a function component\\n2. You may be adding a ref to a component that was not created inside a component's render method\\n3. You have multiple copies of React loaded\\nSee https://reactjs.org/link/refs-must-have-owner for more information.\" );\n }\n }\n }\n }\n\n return mixedRef;\n}\n\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n if (returnFiber.type !== 'textarea') {\n {\n {\n throw Error( \"Objects are not valid as a React child (found: \" + (Object.prototype.toString.call(newChild) === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : newChild) + \"). If you meant to render a collection of children, use an array instead.\" );\n }\n }\n }\n}\n\nfunction warnOnFunctionType(returnFiber) {\n {\n var componentName = getComponentName(returnFiber.type) || 'Component';\n\n if (ownerHasFunctionTypeWarning[componentName]) {\n return;\n }\n\n ownerHasFunctionTypeWarning[componentName] = true;\n\n error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.');\n }\n} // We avoid inlining this to avoid potential deopts from using try/catch.\n// to be able to optimize each path individually by branching early. This needs\n// a compiler or we can do it manually. Helpers that don't need this branching\n// live outside of this function.\n\n\nfunction ChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (!shouldTrackSideEffects) {\n // Noop.\n return;\n } // Deletions are added in reversed order so we add it to the front.\n // At this point, the return fiber's effect list is empty except for\n // deletions, so we can just append the deletion to the list. The remaining\n // effects aren't added until the complete phase. Once we implement\n // resuming, this may not be true.\n\n\n var last = returnFiber.lastEffect;\n\n if (last !== null) {\n last.nextEffect = childToDelete;\n returnFiber.lastEffect = childToDelete;\n } else {\n returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;\n }\n\n childToDelete.nextEffect = null;\n childToDelete.flags = Deletion;\n }\n\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) {\n // Noop.\n return null;\n } // TODO: For the shouldClone case, this could be micro-optimized a bit by\n // assuming that after the first child we've already added everything.\n\n\n var childToDelete = currentFirstChild;\n\n while (childToDelete !== null) {\n deleteChild(returnFiber, childToDelete);\n childToDelete = childToDelete.sibling;\n }\n\n return null;\n }\n\n function mapRemainingChildren(returnFiber, currentFirstChild) {\n // Add the remaining children to a temporary map so that we can find them by\n // keys quickly. Implicit (null) keys get added to this set with their index\n // instead.\n var existingChildren = new Map();\n var existingChild = currentFirstChild;\n\n while (existingChild !== null) {\n if (existingChild.key !== null) {\n existingChildren.set(existingChild.key, existingChild);\n } else {\n existingChildren.set(existingChild.index, existingChild);\n }\n\n existingChild = existingChild.sibling;\n }\n\n return existingChildren;\n }\n\n function useFiber(fiber, pendingProps) {\n // We currently set sibling to null and index to 0 here because it is easy\n // to forget to do before returning it. E.g. for the single child case.\n var clone = createWorkInProgress(fiber, pendingProps);\n clone.index = 0;\n clone.sibling = null;\n return clone;\n }\n\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n\n if (!shouldTrackSideEffects) {\n // Noop.\n return lastPlacedIndex;\n }\n\n var current = newFiber.alternate;\n\n if (current !== null) {\n var oldIndex = current.index;\n\n if (oldIndex < lastPlacedIndex) {\n // This is a move.\n newFiber.flags = Placement;\n return lastPlacedIndex;\n } else {\n // This item can stay in place.\n return oldIndex;\n }\n } else {\n // This is an insertion.\n newFiber.flags = Placement;\n return lastPlacedIndex;\n }\n }\n\n function placeSingleChild(newFiber) {\n // This is simpler for the single child case. We only need to do a\n // placement for inserting new children.\n if (shouldTrackSideEffects && newFiber.alternate === null) {\n newFiber.flags = Placement;\n }\n\n return newFiber;\n }\n\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (current === null || current.tag !== HostText) {\n // Insert\n var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n created.return = returnFiber;\n return created;\n } else {\n // Update\n var existing = useFiber(current, textContent);\n existing.return = returnFiber;\n return existing;\n }\n }\n\n function updateElement(returnFiber, current, element, lanes) {\n if (current !== null) {\n if (current.elementType === element.type || ( // Keep this check inline so it only runs on the false path:\n isCompatibleFamilyForHotReloading(current, element) )) {\n // Move based on index\n var existing = useFiber(current, element.props);\n existing.ref = coerceRef(returnFiber, current, element);\n existing.return = returnFiber;\n\n {\n existing._debugSource = element._source;\n existing._debugOwner = element._owner;\n }\n\n return existing;\n }\n } // Insert\n\n\n var created = createFiberFromElement(element, returnFiber.mode, lanes);\n created.ref = coerceRef(returnFiber, current, element);\n created.return = returnFiber;\n return created;\n }\n\n function updatePortal(returnFiber, current, portal, lanes) {\n if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) {\n // Insert\n var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n created.return = returnFiber;\n return created;\n } else {\n // Update\n var existing = useFiber(current, portal.children || []);\n existing.return = returnFiber;\n return existing;\n }\n }\n\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (current === null || current.tag !== Fragment) {\n // Insert\n var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);\n created.return = returnFiber;\n return created;\n } else {\n // Update\n var existing = useFiber(current, fragment);\n existing.return = returnFiber;\n return existing;\n }\n }\n\n function createChild(returnFiber, newChild, lanes) {\n if (typeof newChild === 'string' || typeof newChild === 'number') {\n // Text nodes don't have keys. If the previous node is implicitly keyed\n // we can continue to replace it without aborting even if it is not a text\n // node.\n var created = createFiberFromText('' + newChild, returnFiber.mode, lanes);\n created.return = returnFiber;\n return created;\n }\n\n if (typeof newChild === 'object' && newChild !== null) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n {\n var _created = createFiberFromElement(newChild, returnFiber.mode, lanes);\n\n _created.ref = coerceRef(returnFiber, null, newChild);\n _created.return = returnFiber;\n return _created;\n }\n\n case REACT_PORTAL_TYPE:\n {\n var _created2 = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n\n _created2.return = returnFiber;\n return _created2;\n }\n }\n\n if (isArray$1(newChild) || getIteratorFn(newChild)) {\n var _created3 = createFiberFromFragment(newChild, returnFiber.mode, lanes, null);\n\n _created3.return = returnFiber;\n return _created3;\n }\n\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n\n {\n if (typeof newChild === 'function') {\n warnOnFunctionType(returnFiber);\n }\n }\n\n return null;\n }\n\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n // Update the fiber if the keys match, otherwise return null.\n var key = oldFiber !== null ? oldFiber.key : null;\n\n if (typeof newChild === 'string' || typeof newChild === 'number') {\n // Text nodes don't have keys. If the previous node is implicitly keyed\n // we can continue to replace it without aborting even if it is not a text\n // node.\n if (key !== null) {\n return null;\n }\n\n return updateTextNode(returnFiber, oldFiber, '' + newChild, lanes);\n }\n\n if (typeof newChild === 'object' && newChild !== null) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n {\n if (newChild.key === key) {\n if (newChild.type === REACT_FRAGMENT_TYPE) {\n return updateFragment(returnFiber, oldFiber, newChild.props.children, lanes, key);\n }\n\n return updateElement(returnFiber, oldFiber, newChild, lanes);\n } else {\n return null;\n }\n }\n\n case REACT_PORTAL_TYPE:\n {\n if (newChild.key === key) {\n return updatePortal(returnFiber, oldFiber, newChild, lanes);\n } else {\n return null;\n }\n }\n }\n\n if (isArray$1(newChild) || getIteratorFn(newChild)) {\n if (key !== null) {\n return null;\n }\n\n return updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n }\n\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n\n {\n if (typeof newChild === 'function') {\n warnOnFunctionType(returnFiber);\n }\n }\n\n return null;\n }\n\n function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {\n if (typeof newChild === 'string' || typeof newChild === 'number') {\n // Text nodes don't have keys, so we neither have to check the old nor\n // new node for the key. If both are text nodes, they match.\n var matchedFiber = existingChildren.get(newIdx) || null;\n return updateTextNode(returnFiber, matchedFiber, '' + newChild, lanes);\n }\n\n if (typeof newChild === 'object' && newChild !== null) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n {\n var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n\n if (newChild.type === REACT_FRAGMENT_TYPE) {\n return updateFragment(returnFiber, _matchedFiber, newChild.props.children, lanes, newChild.key);\n }\n\n return updateElement(returnFiber, _matchedFiber, newChild, lanes);\n }\n\n case REACT_PORTAL_TYPE:\n {\n var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n\n return updatePortal(returnFiber, _matchedFiber2, newChild, lanes);\n }\n\n }\n\n if (isArray$1(newChild) || getIteratorFn(newChild)) {\n var _matchedFiber3 = existingChildren.get(newIdx) || null;\n\n return updateFragment(returnFiber, _matchedFiber3, newChild, lanes, null);\n }\n\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n\n {\n if (typeof newChild === 'function') {\n warnOnFunctionType(returnFiber);\n }\n }\n\n return null;\n }\n /**\n * Warns if there is a duplicate or missing key\n */\n\n\n function warnOnInvalidKey(child, knownKeys, returnFiber) {\n {\n if (typeof child !== 'object' || child === null) {\n return knownKeys;\n }\n\n switch (child.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n warnForMissingKey(child, returnFiber);\n var key = child.key;\n\n if (typeof key !== 'string') {\n break;\n }\n\n if (knownKeys === null) {\n knownKeys = new Set();\n knownKeys.add(key);\n break;\n }\n\n if (!knownKeys.has(key)) {\n knownKeys.add(key);\n break;\n }\n\n error('Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted \u2014 the behavior is unsupported and ' + 'could change in a future version.', key);\n\n break;\n }\n }\n\n return knownKeys;\n }\n\n function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {\n // This algorithm can't optimize by searching from both ends since we\n // don't have backpointers on fibers. I'm trying to see how far we can get\n // with that model. If it ends up not being worth the tradeoffs, we can\n // add it later.\n // Even with a two ended optimization, we'd want to optimize for the case\n // where there are few changes and brute force the comparison instead of\n // going for the Map. It'd like to explore hitting that path first in\n // forward-only mode and only go for the Map once we notice that we need\n // lots of look ahead. This doesn't handle reversal as well as two ended\n // search but that's unusual. Besides, for the two ended optimization to\n // work on Iterables, we'd need to copy the whole set.\n // In this first iteration, we'll just live with hitting the bad case\n // (adding everything to a Map) in for every insert/move.\n // If you change this code, also update reconcileChildrenIterator() which\n // uses the same algorithm.\n {\n // First, validate keys.\n var knownKeys = null;\n\n for (var i = 0; i < newChildren.length; i++) {\n var child = newChildren[i];\n knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n }\n }\n\n var resultingFirstChild = null;\n var previousNewFiber = null;\n var oldFiber = currentFirstChild;\n var lastPlacedIndex = 0;\n var newIdx = 0;\n var nextOldFiber = null;\n\n for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n if (oldFiber.index > newIdx) {\n nextOldFiber = oldFiber;\n oldFiber = null;\n } else {\n nextOldFiber = oldFiber.sibling;\n }\n\n var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], lanes);\n\n if (newFiber === null) {\n // TODO: This breaks on empty slots like null children. That's\n // unfortunate because it triggers the slow path all the time. We need\n // a better way to communicate whether this was a miss or null,\n // boolean, undefined, etc.\n if (oldFiber === null) {\n oldFiber = nextOldFiber;\n }\n\n break;\n }\n\n if (shouldTrackSideEffects) {\n if (oldFiber && newFiber.alternate === null) {\n // We matched the slot, but we didn't reuse the existing fiber, so we\n // need to delete the existing child.\n deleteChild(returnFiber, oldFiber);\n }\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n // TODO: Move out of the loop. This only happens for the first run.\n resultingFirstChild = newFiber;\n } else {\n // TODO: Defer siblings if we're not at the right index for this slot.\n // I.e. if we had null values before, then we want to defer this\n // for each null value. However, we also don't want to call updateSlot\n // with the previous one.\n previousNewFiber.sibling = newFiber;\n }\n\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n\n if (newIdx === newChildren.length) {\n // We've reached the end of the new children. We can delete the rest.\n deleteRemainingChildren(returnFiber, oldFiber);\n return resultingFirstChild;\n }\n\n if (oldFiber === null) {\n // If we don't have any more existing children we can choose a fast path\n // since the rest will all be insertions.\n for (; newIdx < newChildren.length; newIdx++) {\n var _newFiber = createChild(returnFiber, newChildren[newIdx], lanes);\n\n if (_newFiber === null) {\n continue;\n }\n\n lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n // TODO: Move out of the loop. This only happens for the first run.\n resultingFirstChild = _newFiber;\n } else {\n previousNewFiber.sibling = _newFiber;\n }\n\n previousNewFiber = _newFiber;\n }\n\n return resultingFirstChild;\n } // Add all children to a key map for quick lookups.\n\n\n var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n for (; newIdx < newChildren.length; newIdx++) {\n var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], lanes);\n\n if (_newFiber2 !== null) {\n if (shouldTrackSideEffects) {\n if (_newFiber2.alternate !== null) {\n // The new fiber is a work in progress, but if there exists a\n // current, that means that we reused the fiber. We need to delete\n // it from the child list so that we don't add it to the deletion\n // list.\n existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key);\n }\n }\n\n lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n resultingFirstChild = _newFiber2;\n } else {\n previousNewFiber.sibling = _newFiber2;\n }\n\n previousNewFiber = _newFiber2;\n }\n }\n\n if (shouldTrackSideEffects) {\n // Any existing children that weren't consumed above were deleted. We need\n // to add them to the deletion list.\n existingChildren.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n }\n\n return resultingFirstChild;\n }\n\n function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, lanes) {\n // This is the same implementation as reconcileChildrenArray(),\n // but using the iterator instead.\n var iteratorFn = getIteratorFn(newChildrenIterable);\n\n if (!(typeof iteratorFn === 'function')) {\n {\n throw Error( \"An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n {\n // We don't support rendering Generators because it's a mutation.\n // See https://github.com/facebook/react/issues/12995\n if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag\n newChildrenIterable[Symbol.toStringTag] === 'Generator') {\n if (!didWarnAboutGenerators) {\n error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.');\n }\n\n didWarnAboutGenerators = true;\n } // Warn about using Maps as children\n\n\n if (newChildrenIterable.entries === iteratorFn) {\n if (!didWarnAboutMaps) {\n error('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n } // First, validate keys.\n // We'll get a different iterator later for the main pass.\n\n\n var _newChildren = iteratorFn.call(newChildrenIterable);\n\n if (_newChildren) {\n var knownKeys = null;\n\n var _step = _newChildren.next();\n\n for (; !_step.done; _step = _newChildren.next()) {\n var child = _step.value;\n knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n }\n }\n }\n\n var newChildren = iteratorFn.call(newChildrenIterable);\n\n if (!(newChildren != null)) {\n {\n throw Error( \"An iterable object provided no iterator.\" );\n }\n }\n\n var resultingFirstChild = null;\n var previousNewFiber = null;\n var oldFiber = currentFirstChild;\n var lastPlacedIndex = 0;\n var newIdx = 0;\n var nextOldFiber = null;\n var step = newChildren.next();\n\n for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {\n if (oldFiber.index > newIdx) {\n nextOldFiber = oldFiber;\n oldFiber = null;\n } else {\n nextOldFiber = oldFiber.sibling;\n }\n\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n\n if (newFiber === null) {\n // TODO: This breaks on empty slots like null children. That's\n // unfortunate because it triggers the slow path all the time. We need\n // a better way to communicate whether this was a miss or null,\n // boolean, undefined, etc.\n if (oldFiber === null) {\n oldFiber = nextOldFiber;\n }\n\n break;\n }\n\n if (shouldTrackSideEffects) {\n if (oldFiber && newFiber.alternate === null) {\n // We matched the slot, but we didn't reuse the existing fiber, so we\n // need to delete the existing child.\n deleteChild(returnFiber, oldFiber);\n }\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n // TODO: Move out of the loop. This only happens for the first run.\n resultingFirstChild = newFiber;\n } else {\n // TODO: Defer siblings if we're not at the right index for this slot.\n // I.e. if we had null values before, then we want to defer this\n // for each null value. However, we also don't want to call updateSlot\n // with the previous one.\n previousNewFiber.sibling = newFiber;\n }\n\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n\n if (step.done) {\n // We've reached the end of the new children. We can delete the rest.\n deleteRemainingChildren(returnFiber, oldFiber);\n return resultingFirstChild;\n }\n\n if (oldFiber === null) {\n // If we don't have any more existing children we can choose a fast path\n // since the rest will all be insertions.\n for (; !step.done; newIdx++, step = newChildren.next()) {\n var _newFiber3 = createChild(returnFiber, step.value, lanes);\n\n if (_newFiber3 === null) {\n continue;\n }\n\n lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n // TODO: Move out of the loop. This only happens for the first run.\n resultingFirstChild = _newFiber3;\n } else {\n previousNewFiber.sibling = _newFiber3;\n }\n\n previousNewFiber = _newFiber3;\n }\n\n return resultingFirstChild;\n } // Add all children to a key map for quick lookups.\n\n\n var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n for (; !step.done; newIdx++, step = newChildren.next()) {\n var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, lanes);\n\n if (_newFiber4 !== null) {\n if (shouldTrackSideEffects) {\n if (_newFiber4.alternate !== null) {\n // The new fiber is a work in progress, but if there exists a\n // current, that means that we reused the fiber. We need to delete\n // it from the child list so that we don't add it to the deletion\n // list.\n existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key);\n }\n }\n\n lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n resultingFirstChild = _newFiber4;\n } else {\n previousNewFiber.sibling = _newFiber4;\n }\n\n previousNewFiber = _newFiber4;\n }\n }\n\n if (shouldTrackSideEffects) {\n // Any existing children that weren't consumed above were deleted. We need\n // to add them to the deletion list.\n existingChildren.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n }\n\n return resultingFirstChild;\n }\n\n function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) {\n // There's no need to check for keys on text nodes since we don't have a\n // way to define them.\n if (currentFirstChild !== null && currentFirstChild.tag === HostText) {\n // We already have an existing node so let's just update it and delete\n // the rest.\n deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n var existing = useFiber(currentFirstChild, textContent);\n existing.return = returnFiber;\n return existing;\n } // The existing first child is not a text node so we need to create one\n // and delete the existing ones.\n\n\n deleteRemainingChildren(returnFiber, currentFirstChild);\n var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n created.return = returnFiber;\n return created;\n }\n\n function reconcileSingleElement(returnFiber, currentFirstChild, element, lanes) {\n var key = element.key;\n var child = currentFirstChild;\n\n while (child !== null) {\n // TODO: If key === null and child.key === null, then this only applies to\n // the first item in the list.\n if (child.key === key) {\n switch (child.tag) {\n case Fragment:\n {\n if (element.type === REACT_FRAGMENT_TYPE) {\n deleteRemainingChildren(returnFiber, child.sibling);\n var existing = useFiber(child, element.props.children);\n existing.return = returnFiber;\n\n {\n existing._debugSource = element._source;\n existing._debugOwner = element._owner;\n }\n\n return existing;\n }\n\n break;\n }\n\n case Block:\n\n // We intentionally fallthrough here if enableBlocksAPI is not on.\n // eslint-disable-next-lined no-fallthrough\n\n default:\n {\n if (child.elementType === element.type || ( // Keep this check inline so it only runs on the false path:\n isCompatibleFamilyForHotReloading(child, element) )) {\n deleteRemainingChildren(returnFiber, child.sibling);\n\n var _existing3 = useFiber(child, element.props);\n\n _existing3.ref = coerceRef(returnFiber, child, element);\n _existing3.return = returnFiber;\n\n {\n _existing3._debugSource = element._source;\n _existing3._debugOwner = element._owner;\n }\n\n return _existing3;\n }\n\n break;\n }\n } // Didn't match.\n\n\n deleteRemainingChildren(returnFiber, child);\n break;\n } else {\n deleteChild(returnFiber, child);\n }\n\n child = child.sibling;\n }\n\n if (element.type === REACT_FRAGMENT_TYPE) {\n var created = createFiberFromFragment(element.props.children, returnFiber.mode, lanes, element.key);\n created.return = returnFiber;\n return created;\n } else {\n var _created4 = createFiberFromElement(element, returnFiber.mode, lanes);\n\n _created4.ref = coerceRef(returnFiber, currentFirstChild, element);\n _created4.return = returnFiber;\n return _created4;\n }\n }\n\n function reconcileSinglePortal(returnFiber, currentFirstChild, portal, lanes) {\n var key = portal.key;\n var child = currentFirstChild;\n\n while (child !== null) {\n // TODO: If key === null and child.key === null, then this only applies to\n // the first item in the list.\n if (child.key === key) {\n if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {\n deleteRemainingChildren(returnFiber, child.sibling);\n var existing = useFiber(child, portal.children || []);\n existing.return = returnFiber;\n return existing;\n } else {\n deleteRemainingChildren(returnFiber, child);\n break;\n }\n } else {\n deleteChild(returnFiber, child);\n }\n\n child = child.sibling;\n }\n\n var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n created.return = returnFiber;\n return created;\n } // This API will tag the children with the side-effect of the reconciliation\n // itself. They will be added to the side-effect list as we pass through the\n // children and the parent.\n\n\n function reconcileChildFibers(returnFiber, currentFirstChild, newChild, lanes) {\n // This function is not recursive.\n // If the top level item is an array, we treat it as a set of children,\n // not as a fragment. Nested arrays on the other hand will be treated as\n // fragment nodes. Recursion happens at the normal flow.\n // Handle top level unkeyed fragments as if they were arrays.\n // This leads to an ambiguity between <>{[...]}</> and <>...</>.\n // We treat the ambiguous cases above the same.\n var isUnkeyedTopLevelFragment = typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;\n\n if (isUnkeyedTopLevelFragment) {\n newChild = newChild.props.children;\n } // Handle object types\n\n\n var isObject = typeof newChild === 'object' && newChild !== null;\n\n if (isObject) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, lanes));\n\n case REACT_PORTAL_TYPE:\n return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes));\n\n }\n }\n\n if (typeof newChild === 'string' || typeof newChild === 'number') {\n return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, lanes));\n }\n\n if (isArray$1(newChild)) {\n return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes);\n }\n\n if (getIteratorFn(newChild)) {\n return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, lanes);\n }\n\n if (isObject) {\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n\n {\n if (typeof newChild === 'function') {\n warnOnFunctionType(returnFiber);\n }\n }\n\n if (typeof newChild === 'undefined' && !isUnkeyedTopLevelFragment) {\n // If the new child is undefined, and the return fiber is a composite\n // component, throw an error. If Fiber return types are disabled,\n // we already threw above.\n switch (returnFiber.tag) {\n case ClassComponent:\n {\n {\n var instance = returnFiber.stateNode;\n\n if (instance.render._isMockFunction) {\n // We allow auto-mocks to proceed as if they're returning null.\n break;\n }\n }\n }\n // Intentionally fall through to the next case, which handles both\n // functions and classes\n // eslint-disable-next-lined no-fallthrough\n\n case Block:\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n {\n {\n {\n throw Error( (getComponentName(returnFiber.type) || 'Component') + \"(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.\" );\n }\n }\n }\n }\n } // Remaining cases are all treated as empty.\n\n\n return deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n\n return reconcileChildFibers;\n}\n\nvar reconcileChildFibers = ChildReconciler(true);\nvar mountChildFibers = ChildReconciler(false);\nfunction cloneChildFibers(current, workInProgress) {\n if (!(current === null || workInProgress.child === current.child)) {\n {\n throw Error( \"Resuming work not yet implemented.\" );\n }\n }\n\n if (workInProgress.child === null) {\n return;\n }\n\n var currentChild = workInProgress.child;\n var newChild = createWorkInProgress(currentChild, currentChild.pendingProps);\n workInProgress.child = newChild;\n newChild.return = workInProgress;\n\n while (currentChild.sibling !== null) {\n currentChild = currentChild.sibling;\n newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);\n newChild.return = workInProgress;\n }\n\n newChild.sibling = null;\n} // Reset a workInProgress child set to prepare it for a second pass.\n\nfunction resetChildFibers(workInProgress, lanes) {\n var child = workInProgress.child;\n\n while (child !== null) {\n resetWorkInProgress(child, lanes);\n child = child.sibling;\n }\n}\n\nvar NO_CONTEXT = {};\nvar contextStackCursor$1 = createCursor(NO_CONTEXT);\nvar contextFiberStackCursor = createCursor(NO_CONTEXT);\nvar rootInstanceStackCursor = createCursor(NO_CONTEXT);\n\nfunction requiredContext(c) {\n if (!(c !== NO_CONTEXT)) {\n {\n throw Error( \"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n return c;\n}\n\nfunction getRootHostContainer() {\n var rootInstance = requiredContext(rootInstanceStackCursor.current);\n return rootInstance;\n}\n\nfunction pushHostContainer(fiber, nextRootInstance) {\n // Push current root instance onto the stack;\n // This allows us to reset root when portals are popped.\n push(rootInstanceStackCursor, nextRootInstance, fiber); // Track the context and the Fiber that provided it.\n // This enables us to pop only Fibers that provide unique contexts.\n\n push(contextFiberStackCursor, fiber, fiber); // Finally, we need to push the host context to the stack.\n // However, we can't just call getRootHostContext() and push it because\n // we'd have a different number of entries on the stack depending on\n // whether getRootHostContext() throws somewhere in renderer code or not.\n // So we push an empty value first. This lets us safely unwind on errors.\n\n push(contextStackCursor$1, NO_CONTEXT, fiber);\n var nextRootContext = getRootHostContext(nextRootInstance); // Now that we know this function doesn't throw, replace it.\n\n pop(contextStackCursor$1, fiber);\n push(contextStackCursor$1, nextRootContext, fiber);\n}\n\nfunction popHostContainer(fiber) {\n pop(contextStackCursor$1, fiber);\n pop(contextFiberStackCursor, fiber);\n pop(rootInstanceStackCursor, fiber);\n}\n\nfunction getHostContext() {\n var context = requiredContext(contextStackCursor$1.current);\n return context;\n}\n\nfunction pushHostContext(fiber) {\n var rootInstance = requiredContext(rootInstanceStackCursor.current);\n var context = requiredContext(contextStackCursor$1.current);\n var nextContext = getChildHostContext(context, fiber.type); // Don't push this Fiber's context unless it's unique.\n\n if (context === nextContext) {\n return;\n } // Track the context and the Fiber that provided it.\n // This enables us to pop only Fibers that provide unique contexts.\n\n\n push(contextFiberStackCursor, fiber, fiber);\n push(contextStackCursor$1, nextContext, fiber);\n}\n\nfunction popHostContext(fiber) {\n // Do not pop unless this Fiber provided the current context.\n // pushHostContext() only pushes Fibers that provide unique contexts.\n if (contextFiberStackCursor.current !== fiber) {\n return;\n }\n\n pop(contextStackCursor$1, fiber);\n pop(contextFiberStackCursor, fiber);\n}\n\nvar DefaultSuspenseContext = 0; // The Suspense Context is split into two parts. The lower bits is\n// inherited deeply down the subtree. The upper bits only affect\n// this immediate suspense boundary and gets reset each new\n// boundary or suspense list.\n\nvar SubtreeSuspenseContextMask = 1; // Subtree Flags:\n// InvisibleParentSuspenseContext indicates that one of our parent Suspense\n// boundaries is not currently showing visible main content.\n// Either because it is already showing a fallback or is not mounted at all.\n// We can use this to determine if it is desirable to trigger a fallback at\n// the parent. If not, then we might need to trigger undesirable boundaries\n// and/or suspend the commit to avoid hiding the parent content.\n\nvar InvisibleParentSuspenseContext = 1; // Shallow Flags:\n// ForceSuspenseFallback can be used by SuspenseList to force newly added\n// items into their fallback state during one of the render passes.\n\nvar ForceSuspenseFallback = 2;\nvar suspenseStackCursor = createCursor(DefaultSuspenseContext);\nfunction hasSuspenseContext(parentContext, flag) {\n return (parentContext & flag) !== 0;\n}\nfunction setDefaultShallowSuspenseContext(parentContext) {\n return parentContext & SubtreeSuspenseContextMask;\n}\nfunction setShallowSuspenseContext(parentContext, shallowContext) {\n return parentContext & SubtreeSuspenseContextMask | shallowContext;\n}\nfunction addSubtreeSuspenseContext(parentContext, subtreeContext) {\n return parentContext | subtreeContext;\n}\nfunction pushSuspenseContext(fiber, newContext) {\n push(suspenseStackCursor, newContext, fiber);\n}\nfunction popSuspenseContext(fiber) {\n pop(suspenseStackCursor, fiber);\n}\n\nfunction shouldCaptureSuspense(workInProgress, hasInvisibleParent) {\n // If it was the primary children that just suspended, capture and render the\n // fallback. Otherwise, don't capture and bubble to the next boundary.\n var nextState = workInProgress.memoizedState;\n\n if (nextState !== null) {\n if (nextState.dehydrated !== null) {\n // A dehydrated boundary always captures.\n return true;\n }\n\n return false;\n }\n\n var props = workInProgress.memoizedProps; // In order to capture, the Suspense component must have a fallback prop.\n\n if (props.fallback === undefined) {\n return false;\n } // Regular boundaries always capture.\n\n\n if (props.unstable_avoidThisFallback !== true) {\n return true;\n } // If it's a boundary we should avoid, then we prefer to bubble up to the\n // parent boundary if it is currently invisible.\n\n\n if (hasInvisibleParent) {\n return false;\n } // If the parent is not able to handle it, we must handle it.\n\n\n return true;\n}\nfunction findFirstSuspended(row) {\n var node = row;\n\n while (node !== null) {\n if (node.tag === SuspenseComponent) {\n var state = node.memoizedState;\n\n if (state !== null) {\n var dehydrated = state.dehydrated;\n\n if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {\n return node;\n }\n }\n } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't\n // keep track of whether it suspended or not.\n node.memoizedProps.revealOrder !== undefined) {\n var didSuspend = (node.flags & DidCapture) !== NoFlags;\n\n if (didSuspend) {\n return node;\n }\n } else if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === row) {\n return null;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === row) {\n return null;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n\n return null;\n}\n\nvar NoFlags$1 =\n/* */\n0; // Represents whether effect should fire.\n\nvar HasEffect =\n/* */\n1; // Represents the phase in which the effect (not the clean-up) fires.\n\nvar Layout =\n/* */\n2;\nvar Passive$1 =\n/* */\n4;\n\n// This may have been an insertion or a hydration.\n\nvar hydrationParentFiber = null;\nvar nextHydratableInstance = null;\nvar isHydrating = false;\n\nfunction enterHydrationState(fiber) {\n\n var parentInstance = fiber.stateNode.containerInfo;\n nextHydratableInstance = getFirstHydratableChild(parentInstance);\n hydrationParentFiber = fiber;\n isHydrating = true;\n return true;\n}\n\nfunction deleteHydratableInstance(returnFiber, instance) {\n {\n switch (returnFiber.tag) {\n case HostRoot:\n didNotHydrateContainerInstance(returnFiber.stateNode.containerInfo, instance);\n break;\n\n case HostComponent:\n didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance);\n break;\n }\n }\n\n var childToDelete = createFiberFromHostInstanceForDeletion();\n childToDelete.stateNode = instance;\n childToDelete.return = returnFiber;\n childToDelete.flags = Deletion; // This might seem like it belongs on progressedFirstDeletion. However,\n // these children are not part of the reconciliation list of children.\n // Even if we abort and rereconcile the children, that will try to hydrate\n // again and the nodes are still in the host tree so these will be\n // recreated.\n\n if (returnFiber.lastEffect !== null) {\n returnFiber.lastEffect.nextEffect = childToDelete;\n returnFiber.lastEffect = childToDelete;\n } else {\n returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;\n }\n}\n\nfunction insertNonHydratedInstance(returnFiber, fiber) {\n fiber.flags = fiber.flags & ~Hydrating | Placement;\n\n {\n switch (returnFiber.tag) {\n case HostRoot:\n {\n var parentContainer = returnFiber.stateNode.containerInfo;\n\n switch (fiber.tag) {\n case HostComponent:\n var type = fiber.type;\n var props = fiber.pendingProps;\n didNotFindHydratableContainerInstance(parentContainer, type);\n break;\n\n case HostText:\n var text = fiber.pendingProps;\n didNotFindHydratableContainerTextInstance(parentContainer, text);\n break;\n }\n\n break;\n }\n\n case HostComponent:\n {\n var parentType = returnFiber.type;\n var parentProps = returnFiber.memoizedProps;\n var parentInstance = returnFiber.stateNode;\n\n switch (fiber.tag) {\n case HostComponent:\n var _type = fiber.type;\n var _props = fiber.pendingProps;\n didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type);\n break;\n\n case HostText:\n var _text = fiber.pendingProps;\n didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text);\n break;\n\n case SuspenseComponent:\n didNotFindHydratableSuspenseInstance(parentType, parentProps);\n break;\n }\n\n break;\n }\n\n default:\n return;\n }\n }\n}\n\nfunction tryHydrate(fiber, nextInstance) {\n switch (fiber.tag) {\n case HostComponent:\n {\n var type = fiber.type;\n var props = fiber.pendingProps;\n var instance = canHydrateInstance(nextInstance, type);\n\n if (instance !== null) {\n fiber.stateNode = instance;\n return true;\n }\n\n return false;\n }\n\n case HostText:\n {\n var text = fiber.pendingProps;\n var textInstance = canHydrateTextInstance(nextInstance, text);\n\n if (textInstance !== null) {\n fiber.stateNode = textInstance;\n return true;\n }\n\n return false;\n }\n\n case SuspenseComponent:\n {\n\n return false;\n }\n\n default:\n return false;\n }\n}\n\nfunction tryToClaimNextHydratableInstance(fiber) {\n if (!isHydrating) {\n return;\n }\n\n var nextInstance = nextHydratableInstance;\n\n if (!nextInstance) {\n // Nothing to hydrate. Make it an insertion.\n insertNonHydratedInstance(hydrationParentFiber, fiber);\n isHydrating = false;\n hydrationParentFiber = fiber;\n return;\n }\n\n var firstAttemptedInstance = nextInstance;\n\n if (!tryHydrate(fiber, nextInstance)) {\n // If we can't hydrate this instance let's try the next one.\n // We use this as a heuristic. It's based on intuition and not data so it\n // might be flawed or unnecessary.\n nextInstance = getNextHydratableSibling(firstAttemptedInstance);\n\n if (!nextInstance || !tryHydrate(fiber, nextInstance)) {\n // Nothing to hydrate. Make it an insertion.\n insertNonHydratedInstance(hydrationParentFiber, fiber);\n isHydrating = false;\n hydrationParentFiber = fiber;\n return;\n } // We matched the next one, we'll now assume that the first one was\n // superfluous and we'll delete it. Since we can't eagerly delete it\n // we'll have to schedule a deletion. To do that, this node needs a dummy\n // fiber associated with it.\n\n\n deleteHydratableInstance(hydrationParentFiber, firstAttemptedInstance);\n }\n\n hydrationParentFiber = fiber;\n nextHydratableInstance = getFirstHydratableChild(nextInstance);\n}\n\nfunction prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {\n\n var instance = fiber.stateNode;\n var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber); // TODO: Type this specific to this type of component.\n\n fiber.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there\n // is a new ref we mark this as an update.\n\n if (updatePayload !== null) {\n return true;\n }\n\n return false;\n}\n\nfunction prepareToHydrateHostTextInstance(fiber) {\n\n var textInstance = fiber.stateNode;\n var textContent = fiber.memoizedProps;\n var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);\n\n {\n if (shouldUpdate) {\n // We assume that prepareToHydrateHostTextInstance is called in a context where the\n // hydration parent is the parent host component of this host text.\n var returnFiber = hydrationParentFiber;\n\n if (returnFiber !== null) {\n switch (returnFiber.tag) {\n case HostRoot:\n {\n var parentContainer = returnFiber.stateNode.containerInfo;\n didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent);\n break;\n }\n\n case HostComponent:\n {\n var parentType = returnFiber.type;\n var parentProps = returnFiber.memoizedProps;\n var parentInstance = returnFiber.stateNode;\n didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent);\n break;\n }\n }\n }\n }\n }\n\n return shouldUpdate;\n}\n\nfunction skipPastDehydratedSuspenseInstance(fiber) {\n\n var suspenseState = fiber.memoizedState;\n var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n\n if (!suspenseInstance) {\n {\n throw Error( \"Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);\n}\n\nfunction popToNextHostParent(fiber) {\n var parent = fiber.return;\n\n while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) {\n parent = parent.return;\n }\n\n hydrationParentFiber = parent;\n}\n\nfunction popHydrationState(fiber) {\n\n if (fiber !== hydrationParentFiber) {\n // We're deeper than the current hydration context, inside an inserted\n // tree.\n return false;\n }\n\n if (!isHydrating) {\n // If we're not currently hydrating but we're in a hydration context, then\n // we were an insertion and now need to pop up reenter hydration of our\n // siblings.\n popToNextHostParent(fiber);\n isHydrating = true;\n return false;\n }\n\n var type = fiber.type; // If we have any remaining hydratable nodes, we need to delete them now.\n // We only do this deeper than head and body since they tend to have random\n // other nodes in them. We also ignore components with pure text content in\n // side of them.\n // TODO: Better heuristic.\n\n if (fiber.tag !== HostComponent || type !== 'head' && type !== 'body' && !shouldSetTextContent(type, fiber.memoizedProps)) {\n var nextInstance = nextHydratableInstance;\n\n while (nextInstance) {\n deleteHydratableInstance(fiber, nextInstance);\n nextInstance = getNextHydratableSibling(nextInstance);\n }\n }\n\n popToNextHostParent(fiber);\n\n if (fiber.tag === SuspenseComponent) {\n nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);\n } else {\n nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;\n }\n\n return true;\n}\n\nfunction resetHydrationState() {\n\n hydrationParentFiber = null;\n nextHydratableInstance = null;\n isHydrating = false;\n}\n\nfunction getIsHydrating() {\n return isHydrating;\n}\n\n// and should be reset before starting a new render.\n// This tracks which mutable sources need to be reset after a render.\n\nvar workInProgressSources = [];\nvar rendererSigil$1;\n\n{\n // Used to detect multiple renderers using the same mutable source.\n rendererSigil$1 = {};\n}\n\nfunction markSourceAsDirty(mutableSource) {\n workInProgressSources.push(mutableSource);\n}\nfunction resetWorkInProgressVersions() {\n for (var i = 0; i < workInProgressSources.length; i++) {\n var mutableSource = workInProgressSources[i];\n\n {\n mutableSource._workInProgressVersionPrimary = null;\n }\n }\n\n workInProgressSources.length = 0;\n}\nfunction getWorkInProgressVersion(mutableSource) {\n {\n return mutableSource._workInProgressVersionPrimary;\n }\n}\nfunction setWorkInProgressVersion(mutableSource, version) {\n {\n mutableSource._workInProgressVersionPrimary = version;\n }\n\n workInProgressSources.push(mutableSource);\n}\nfunction warnAboutMultipleRenderersDEV(mutableSource) {\n {\n {\n if (mutableSource._currentPrimaryRenderer == null) {\n mutableSource._currentPrimaryRenderer = rendererSigil$1;\n } else if (mutableSource._currentPrimaryRenderer !== rendererSigil$1) {\n error('Detected multiple renderers concurrently rendering the ' + 'same mutable source. This is currently unsupported.');\n }\n }\n }\n} // Eager reads the version of a mutable source and stores it on the root.\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher,\n ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig;\nvar didWarnAboutMismatchedHooksForComponent;\nvar didWarnAboutUseOpaqueIdentifier;\n\n{\n didWarnAboutUseOpaqueIdentifier = {};\n didWarnAboutMismatchedHooksForComponent = new Set();\n}\n\n// These are set right before calling the component.\nvar renderLanes = NoLanes; // The work-in-progress fiber. I've named it differently to distinguish it from\n// the work-in-progress hook.\n\nvar currentlyRenderingFiber$1 = null; // Hooks are stored as a linked list on the fiber's memoizedState field. The\n// current hook list is the list that belongs to the current fiber. The\n// work-in-progress hook list is a new list that will be added to the\n// work-in-progress fiber.\n\nvar currentHook = null;\nvar workInProgressHook = null; // Whether an update was scheduled at any point during the render phase. This\n// does not get reset if we do another render pass; only when we're completely\n// finished evaluating this component. This is an optimization so we know\n// whether we need to clear render phase updates after a throw.\n\nvar didScheduleRenderPhaseUpdate = false; // Where an update was scheduled only during the current render pass. This\n// gets reset after each attempt.\n// TODO: Maybe there's some way to consolidate this with\n// `didScheduleRenderPhaseUpdate`. Or with `numberOfReRenders`.\n\nvar didScheduleRenderPhaseUpdateDuringThisPass = false;\nvar RE_RENDER_LIMIT = 25; // In DEV, this is the name of the currently executing primitive hook\n\nvar currentHookNameInDev = null; // In DEV, this list ensures that hooks are called in the same order between renders.\n// The list stores the order of hooks used during the initial render (mount).\n// Subsequent renders (updates) reference this list.\n\nvar hookTypesDev = null;\nvar hookTypesUpdateIndexDev = -1; // In DEV, this tracks whether currently rendering component needs to ignore\n// the dependencies for Hooks that need them (e.g. useEffect or useMemo).\n// When true, such Hooks will always be \"remounted\". Only used during hot reload.\n\nvar ignorePreviousDependencies = false;\n\nfunction mountHookTypesDev() {\n {\n var hookName = currentHookNameInDev;\n\n if (hookTypesDev === null) {\n hookTypesDev = [hookName];\n } else {\n hookTypesDev.push(hookName);\n }\n }\n}\n\nfunction updateHookTypesDev() {\n {\n var hookName = currentHookNameInDev;\n\n if (hookTypesDev !== null) {\n hookTypesUpdateIndexDev++;\n\n if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {\n warnOnHookMismatchInDev(hookName);\n }\n }\n }\n}\n\nfunction checkDepsAreArrayDev(deps) {\n {\n if (deps !== undefined && deps !== null && !Array.isArray(deps)) {\n // Verify deps, but only on mount to avoid extra checks.\n // It's unlikely their type would change as usually you define them inline.\n error('%s received a final argument that is not an array (instead, received `%s`). When ' + 'specified, the final argument must be an array.', currentHookNameInDev, typeof deps);\n }\n }\n}\n\nfunction warnOnHookMismatchInDev(currentHookName) {\n {\n var componentName = getComponentName(currentlyRenderingFiber$1.type);\n\n if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {\n didWarnAboutMismatchedHooksForComponent.add(componentName);\n\n if (hookTypesDev !== null) {\n var table = '';\n var secondColumnStart = 30;\n\n for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {\n var oldHookName = hookTypesDev[i];\n var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;\n var row = i + 1 + \". \" + oldHookName; // Extra space so second column lines up\n // lol @ IE not supporting String#repeat\n\n while (row.length < secondColumnStart) {\n row += ' ';\n }\n\n row += newHookName + '\\n';\n table += row;\n }\n\n error('React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks\\n\\n' + ' Previous render Next render\\n' + ' ------------------------------------------------------\\n' + '%s' + ' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n', componentName, table);\n }\n }\n }\n}\n\nfunction throwInvalidHookError() {\n {\n {\n throw Error( \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\" );\n }\n }\n}\n\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n {\n if (ignorePreviousDependencies) {\n // Only true when this component is being hot reloaded.\n return false;\n }\n }\n\n if (prevDeps === null) {\n {\n error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev);\n }\n\n return false;\n }\n\n {\n // Don't bother comparing lengths in prod because these arrays should be\n // passed inline.\n if (nextDeps.length !== prevDeps.length) {\n error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\\n\\n' + 'Previous: %s\\n' + 'Incoming: %s', currentHookNameInDev, \"[\" + prevDeps.join(', ') + \"]\", \"[\" + nextDeps.join(', ') + \"]\");\n }\n }\n\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {\n if (objectIs(nextDeps[i], prevDeps[i])) {\n continue;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction renderWithHooks(current, workInProgress, Component, props, secondArg, nextRenderLanes) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber$1 = workInProgress;\n\n {\n hookTypesDev = current !== null ? current._debugHookTypes : null;\n hookTypesUpdateIndexDev = -1; // Used for hot reloading:\n\n ignorePreviousDependencies = current !== null && current.type !== workInProgress.type;\n }\n\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = NoLanes; // The following should have already been reset\n // currentHook = null;\n // workInProgressHook = null;\n // didScheduleRenderPhaseUpdate = false;\n // TODO Warn if no hooks are used at all during mount, then some are used during update.\n // Currently we will identify the update render as a mount because memoizedState === null.\n // This is tricky because it's valid for certain types of components (e.g. React.lazy)\n // Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used.\n // Non-stateful hooks (e.g. context) don't get added to memoizedState,\n // so memoizedState would be null during updates and mounts.\n\n {\n if (current !== null && current.memoizedState !== null) {\n ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;\n } else if (hookTypesDev !== null) {\n // This dispatcher handles an edge case where a component is updating,\n // but no stateful hooks have been used.\n // We want to match the production code behavior (which will use HooksDispatcherOnMount),\n // but with the extra DEV validation to ensure hooks ordering hasn't changed.\n // This dispatcher does that.\n ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;\n } else {\n ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;\n }\n }\n\n var children = Component(props, secondArg); // Check if there was a render phase update\n\n if (didScheduleRenderPhaseUpdateDuringThisPass) {\n // Keep rendering in a loop for as long as render phase updates continue to\n // be scheduled. Use a counter to prevent infinite loops.\n var numberOfReRenders = 0;\n\n do {\n didScheduleRenderPhaseUpdateDuringThisPass = false;\n\n if (!(numberOfReRenders < RE_RENDER_LIMIT)) {\n {\n throw Error( \"Too many re-renders. React limits the number of renders to prevent an infinite loop.\" );\n }\n }\n\n numberOfReRenders += 1;\n\n {\n // Even when hot reloading, allow dependencies to stabilize\n // after first render to prevent infinite render phase updates.\n ignorePreviousDependencies = false;\n } // Start over from the beginning of the list\n\n\n currentHook = null;\n workInProgressHook = null;\n workInProgress.updateQueue = null;\n\n {\n // Also validate hook order for cascading updates.\n hookTypesUpdateIndexDev = -1;\n }\n\n ReactCurrentDispatcher$1.current = HooksDispatcherOnRerenderInDEV ;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n } // We can assume the previous dispatcher is always this one, since we set it\n // at the beginning of the render phase and there's no re-entrancy.\n\n\n ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n\n {\n workInProgress._debugHookTypes = hookTypesDev;\n } // This check uses currentHook so that it works the same in DEV and prod bundles.\n // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.\n\n\n var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;\n renderLanes = NoLanes;\n currentlyRenderingFiber$1 = null;\n currentHook = null;\n workInProgressHook = null;\n\n {\n currentHookNameInDev = null;\n hookTypesDev = null;\n hookTypesUpdateIndexDev = -1;\n }\n\n didScheduleRenderPhaseUpdate = false;\n\n if (!!didRenderTooFewHooks) {\n {\n throw Error( \"Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\" );\n }\n }\n\n return children;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= ~(Passive | Update);\n current.lanes = removeLanes(current.lanes, lanes);\n}\nfunction resetHooksAfterThrow() {\n // We can assume the previous dispatcher is always this one, since we set it\n // at the beginning of the render phase and there's no re-entrancy.\n ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n\n if (didScheduleRenderPhaseUpdate) {\n // There were render phase updates. These are only valid for this render\n // phase, which we are now aborting. Remove the updates from the queues so\n // they do not persist to the next render. Do not remove updates from hooks\n // that weren't processed.\n //\n // Only reset the updates from the queue if it has a clone. If it does\n // not have a clone, that means it wasn't processed, and the updates were\n // scheduled before we entered the render phase.\n var hook = currentlyRenderingFiber$1.memoizedState;\n\n while (hook !== null) {\n var queue = hook.queue;\n\n if (queue !== null) {\n queue.pending = null;\n }\n\n hook = hook.next;\n }\n\n didScheduleRenderPhaseUpdate = false;\n }\n\n renderLanes = NoLanes;\n currentlyRenderingFiber$1 = null;\n currentHook = null;\n workInProgressHook = null;\n\n {\n hookTypesDev = null;\n hookTypesUpdateIndexDev = -1;\n currentHookNameInDev = null;\n isUpdatingOpaqueValueInRenderPhase = false;\n }\n\n didScheduleRenderPhaseUpdateDuringThisPass = false;\n}\n\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n\n if (workInProgressHook === null) {\n // This is the first hook in the list\n currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;\n } else {\n // Append to the end of the list\n workInProgressHook = workInProgressHook.next = hook;\n }\n\n return workInProgressHook;\n}\n\nfunction updateWorkInProgressHook() {\n // This function is used both for updates and for re-renders triggered by a\n // render phase update. It assumes there is either a current hook we can\n // clone, or a work-in-progress hook from a previous render pass that we can\n // use as a base. When we reach the end of the base list, we must switch to\n // the dispatcher used for mounts.\n var nextCurrentHook;\n\n if (currentHook === null) {\n var current = currentlyRenderingFiber$1.alternate;\n\n if (current !== null) {\n nextCurrentHook = current.memoizedState;\n } else {\n nextCurrentHook = null;\n }\n } else {\n nextCurrentHook = currentHook.next;\n }\n\n var nextWorkInProgressHook;\n\n if (workInProgressHook === null) {\n nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;\n } else {\n nextWorkInProgressHook = workInProgressHook.next;\n }\n\n if (nextWorkInProgressHook !== null) {\n // There's already a work-in-progress. Reuse it.\n workInProgressHook = nextWorkInProgressHook;\n nextWorkInProgressHook = workInProgressHook.next;\n currentHook = nextCurrentHook;\n } else {\n // Clone from the current hook.\n if (!(nextCurrentHook !== null)) {\n {\n throw Error( \"Rendered more hooks than during the previous render.\" );\n }\n }\n\n currentHook = nextCurrentHook;\n var newHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n\n if (workInProgressHook === null) {\n // This is the first hook in the list.\n currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;\n } else {\n // Append to the end of the list.\n workInProgressHook = workInProgressHook.next = newHook;\n }\n }\n\n return workInProgressHook;\n}\n\nfunction createFunctionComponentUpdateQueue() {\n return {\n lastEffect: null\n };\n}\n\nfunction basicStateReducer(state, action) {\n // $FlowFixMe: Flow doesn't like mixed types\n return typeof action === 'function' ? action(state) : action;\n}\n\nfunction mountReducer(reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n var initialState;\n\n if (init !== undefined) {\n initialState = init(initialArg);\n } else {\n initialState = initialArg;\n }\n\n hook.memoizedState = hook.baseState = initialState;\n var queue = hook.queue = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n var dispatch = queue.dispatch = dispatchAction.bind(null, currentlyRenderingFiber$1, queue);\n return [hook.memoizedState, dispatch];\n}\n\nfunction updateReducer(reducer, initialArg, init) {\n var hook = updateWorkInProgressHook();\n var queue = hook.queue;\n\n if (!(queue !== null)) {\n {\n throw Error( \"Should have a queue. This is likely a bug in React. Please file an issue.\" );\n }\n }\n\n queue.lastRenderedReducer = reducer;\n var current = currentHook; // The last rebase update that is NOT part of the base state.\n\n var baseQueue = current.baseQueue; // The last pending update that hasn't been processed yet.\n\n var pendingQueue = queue.pending;\n\n if (pendingQueue !== null) {\n // We have new updates that haven't been processed yet.\n // We'll add them to the base queue.\n if (baseQueue !== null) {\n // Merge the pending queue and the base queue.\n var baseFirst = baseQueue.next;\n var pendingFirst = pendingQueue.next;\n baseQueue.next = pendingFirst;\n pendingQueue.next = baseFirst;\n }\n\n {\n if (current.baseQueue !== baseQueue) {\n // Internal invariant that should never happen, but feasibly could in\n // the future if we implement resuming, or some form of that.\n error('Internal error: Expected work-in-progress queue to be a clone. ' + 'This is a bug in React.');\n }\n }\n\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n\n if (baseQueue !== null) {\n // We have a queue to process.\n var first = baseQueue.next;\n var newState = current.baseState;\n var newBaseState = null;\n var newBaseQueueFirst = null;\n var newBaseQueueLast = null;\n var update = first;\n\n do {\n var updateLane = update.lane;\n\n if (!isSubsetOfLanes(renderLanes, updateLane)) {\n // Priority is insufficient. Skip this update. If this is the first\n // skipped update, the previous update/state is the new base\n // update/state.\n var clone = {\n lane: updateLane,\n action: update.action,\n eagerReducer: update.eagerReducer,\n eagerState: update.eagerState,\n next: null\n };\n\n if (newBaseQueueLast === null) {\n newBaseQueueFirst = newBaseQueueLast = clone;\n newBaseState = newState;\n } else {\n newBaseQueueLast = newBaseQueueLast.next = clone;\n } // Update the remaining priority in the queue.\n // TODO: Don't need to accumulate this. Instead, we can remove\n // renderLanes from the original lanes.\n\n\n currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane);\n markSkippedUpdateLanes(updateLane);\n } else {\n // This update does have sufficient priority.\n if (newBaseQueueLast !== null) {\n var _clone = {\n // This update is going to be committed so we never want uncommit\n // it. Using NoLane works because 0 is a subset of all bitmasks, so\n // this will never be skipped by the check above.\n lane: NoLane,\n action: update.action,\n eagerReducer: update.eagerReducer,\n eagerState: update.eagerState,\n next: null\n };\n newBaseQueueLast = newBaseQueueLast.next = _clone;\n } // Process this update.\n\n\n if (update.eagerReducer === reducer) {\n // If this update was processed eagerly, and its reducer matches the\n // current reducer, we can use the eagerly computed state.\n newState = update.eagerState;\n } else {\n var action = update.action;\n newState = reducer(newState, action);\n }\n }\n\n update = update.next;\n } while (update !== null && update !== first);\n\n if (newBaseQueueLast === null) {\n newBaseState = newState;\n } else {\n newBaseQueueLast.next = newBaseQueueFirst;\n } // Mark that the fiber performed work, but only if the new state is\n // different from the current state.\n\n\n if (!objectIs(newState, hook.memoizedState)) {\n markWorkInProgressReceivedUpdate();\n }\n\n hook.memoizedState = newState;\n hook.baseState = newBaseState;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = newState;\n }\n\n var dispatch = queue.dispatch;\n return [hook.memoizedState, dispatch];\n}\n\nfunction rerenderReducer(reducer, initialArg, init) {\n var hook = updateWorkInProgressHook();\n var queue = hook.queue;\n\n if (!(queue !== null)) {\n {\n throw Error( \"Should have a queue. This is likely a bug in React. Please file an issue.\" );\n }\n }\n\n queue.lastRenderedReducer = reducer; // This is a re-render. Apply the new render phase updates to the previous\n // work-in-progress hook.\n\n var dispatch = queue.dispatch;\n var lastRenderPhaseUpdate = queue.pending;\n var newState = hook.memoizedState;\n\n if (lastRenderPhaseUpdate !== null) {\n // The queue doesn't persist past this render pass.\n queue.pending = null;\n var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n var update = firstRenderPhaseUpdate;\n\n do {\n // Process this render phase update. We don't have to check the\n // priority because it will always be the same as the current\n // render's.\n var action = update.action;\n newState = reducer(newState, action);\n update = update.next;\n } while (update !== firstRenderPhaseUpdate); // Mark that the fiber performed work, but only if the new state is\n // different from the current state.\n\n\n if (!objectIs(newState, hook.memoizedState)) {\n markWorkInProgressReceivedUpdate();\n }\n\n hook.memoizedState = newState; // Don't persist the state accumulated from the render phase updates to\n // the base state unless the queue is empty.\n // TODO: Not sure if this is the desired semantics, but it's what we\n // do for gDSFP. I can't remember why.\n\n if (hook.baseQueue === null) {\n hook.baseState = newState;\n }\n\n queue.lastRenderedState = newState;\n }\n\n return [newState, dispatch];\n}\n\nfunction readFromUnsubcribedMutableSource(root, source, getSnapshot) {\n {\n warnAboutMultipleRenderersDEV(source);\n }\n\n var getVersion = source._getVersion;\n var version = getVersion(source._source); // Is it safe for this component to read from this source during the current render?\n\n var isSafeToReadFromSource = false; // Check the version first.\n // If this render has already been started with a specific version,\n // we can use it alone to determine if we can safely read from the source.\n\n var currentRenderVersion = getWorkInProgressVersion(source);\n\n if (currentRenderVersion !== null) {\n // It's safe to read if the store hasn't been mutated since the last time\n // we read something.\n isSafeToReadFromSource = currentRenderVersion === version;\n } else {\n // If there's no version, then this is the first time we've read from the\n // source during the current render pass, so we need to do a bit more work.\n // What we need to determine is if there are any hooks that already\n // subscribed to the source, and if so, whether there are any pending\n // mutations that haven't been synchronized yet.\n //\n // If there are no pending mutations, then `root.mutableReadLanes` will be\n // empty, and we know we can safely read.\n //\n // If there *are* pending mutations, we may still be able to safely read\n // if the currently rendering lanes are inclusive of the pending mutation\n // lanes, since that guarantees that the value we're about to read from\n // the source is consistent with the values that we read during the most\n // recent mutation.\n isSafeToReadFromSource = isSubsetOfLanes(renderLanes, root.mutableReadLanes);\n\n if (isSafeToReadFromSource) {\n // If it's safe to read from this source during the current render,\n // store the version in case other components read from it.\n // A changed version number will let those components know to throw and restart the render.\n setWorkInProgressVersion(source, version);\n }\n }\n\n if (isSafeToReadFromSource) {\n var snapshot = getSnapshot(source._source);\n\n {\n if (typeof snapshot === 'function') {\n error('Mutable source should not return a function as the snapshot value. ' + 'Functions may close over mutable values and cause tearing.');\n }\n }\n\n return snapshot;\n } else {\n // This handles the special case of a mutable source being shared between renderers.\n // In that case, if the source is mutated between the first and second renderer,\n // The second renderer don't know that it needs to reset the WIP version during unwind,\n // (because the hook only marks sources as dirty if it's written to their WIP version).\n // That would cause this tear check to throw again and eventually be visible to the user.\n // We can avoid this infinite loop by explicitly marking the source as dirty.\n //\n // This can lead to tearing in the first renderer when it resumes,\n // but there's nothing we can do about that (short of throwing here and refusing to continue the render).\n markSourceAsDirty(source);\n\n {\n {\n throw Error( \"Cannot read from mutable source during the current render without tearing. This is a bug in React. Please file an issue.\" );\n }\n }\n }\n}\n\nfunction useMutableSource(hook, source, getSnapshot, subscribe) {\n var root = getWorkInProgressRoot();\n\n if (!(root !== null)) {\n {\n throw Error( \"Expected a work-in-progress root. This is a bug in React. Please file an issue.\" );\n }\n }\n\n var getVersion = source._getVersion;\n var version = getVersion(source._source);\n var dispatcher = ReactCurrentDispatcher$1.current; // eslint-disable-next-line prefer-const\n\n var _dispatcher$useState = dispatcher.useState(function () {\n return readFromUnsubcribedMutableSource(root, source, getSnapshot);\n }),\n currentSnapshot = _dispatcher$useState[0],\n setSnapshot = _dispatcher$useState[1];\n\n var snapshot = currentSnapshot; // Grab a handle to the state hook as well.\n // We use it to clear the pending update queue if we have a new source.\n\n var stateHook = workInProgressHook;\n var memoizedState = hook.memoizedState;\n var refs = memoizedState.refs;\n var prevGetSnapshot = refs.getSnapshot;\n var prevSource = memoizedState.source;\n var prevSubscribe = memoizedState.subscribe;\n var fiber = currentlyRenderingFiber$1;\n hook.memoizedState = {\n refs: refs,\n source: source,\n subscribe: subscribe\n }; // Sync the values needed by our subscription handler after each commit.\n\n dispatcher.useEffect(function () {\n refs.getSnapshot = getSnapshot; // Normally the dispatch function for a state hook never changes,\n // but this hook recreates the queue in certain cases to avoid updates from stale sources.\n // handleChange() below needs to reference the dispatch function without re-subscribing,\n // so we use a ref to ensure that it always has the latest version.\n\n refs.setSnapshot = setSnapshot; // Check for a possible change between when we last rendered now.\n\n var maybeNewVersion = getVersion(source._source);\n\n if (!objectIs(version, maybeNewVersion)) {\n var maybeNewSnapshot = getSnapshot(source._source);\n\n {\n if (typeof maybeNewSnapshot === 'function') {\n error('Mutable source should not return a function as the snapshot value. ' + 'Functions may close over mutable values and cause tearing.');\n }\n }\n\n if (!objectIs(snapshot, maybeNewSnapshot)) {\n setSnapshot(maybeNewSnapshot);\n var lane = requestUpdateLane(fiber);\n markRootMutableRead(root, lane);\n } // If the source mutated between render and now,\n // there may be state updates already scheduled from the old source.\n // Entangle the updates so that they render in the same batch.\n\n\n markRootEntangled(root, root.mutableReadLanes);\n }\n }, [getSnapshot, source, subscribe]); // If we got a new source or subscribe function, re-subscribe in a passive effect.\n\n dispatcher.useEffect(function () {\n var handleChange = function () {\n var latestGetSnapshot = refs.getSnapshot;\n var latestSetSnapshot = refs.setSnapshot;\n\n try {\n latestSetSnapshot(latestGetSnapshot(source._source)); // Record a pending mutable source update with the same expiration time.\n\n var lane = requestUpdateLane(fiber);\n markRootMutableRead(root, lane);\n } catch (error) {\n // A selector might throw after a source mutation.\n // e.g. it might try to read from a part of the store that no longer exists.\n // In this case we should still schedule an update with React.\n // Worst case the selector will throw again and then an error boundary will handle it.\n latestSetSnapshot(function () {\n throw error;\n });\n }\n };\n\n var unsubscribe = subscribe(source._source, handleChange);\n\n {\n if (typeof unsubscribe !== 'function') {\n error('Mutable source subscribe function must return an unsubscribe function.');\n }\n }\n\n return unsubscribe;\n }, [source, subscribe]); // If any of the inputs to useMutableSource change, reading is potentially unsafe.\n //\n // If either the source or the subscription have changed we can't can't trust the update queue.\n // Maybe the source changed in a way that the old subscription ignored but the new one depends on.\n //\n // If the getSnapshot function changed, we also shouldn't rely on the update queue.\n // It's possible that the underlying source was mutated between the when the last \"change\" event fired,\n // and when the current render (with the new getSnapshot function) is processed.\n //\n // In both cases, we need to throw away pending updates (since they are no longer relevant)\n // and treat reading from the source as we do in the mount case.\n\n if (!objectIs(prevGetSnapshot, getSnapshot) || !objectIs(prevSource, source) || !objectIs(prevSubscribe, subscribe)) {\n // Create a new queue and setState method,\n // So if there are interleaved updates, they get pushed to the older queue.\n // When this becomes current, the previous queue and dispatch method will be discarded,\n // including any interleaving updates that occur.\n var newQueue = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: snapshot\n };\n newQueue.dispatch = setSnapshot = dispatchAction.bind(null, currentlyRenderingFiber$1, newQueue);\n stateHook.queue = newQueue;\n stateHook.baseQueue = null;\n snapshot = readFromUnsubcribedMutableSource(root, source, getSnapshot);\n stateHook.memoizedState = stateHook.baseState = snapshot;\n }\n\n return snapshot;\n}\n\nfunction mountMutableSource(source, getSnapshot, subscribe) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = {\n refs: {\n getSnapshot: getSnapshot,\n setSnapshot: null\n },\n source: source,\n subscribe: subscribe\n };\n return useMutableSource(hook, source, getSnapshot, subscribe);\n}\n\nfunction updateMutableSource(source, getSnapshot, subscribe) {\n var hook = updateWorkInProgressHook();\n return useMutableSource(hook, source, getSnapshot, subscribe);\n}\n\nfunction mountState(initialState) {\n var hook = mountWorkInProgressHook();\n\n if (typeof initialState === 'function') {\n // $FlowFixMe: Flow doesn't like mixed types\n initialState = initialState();\n }\n\n hook.memoizedState = hook.baseState = initialState;\n var queue = hook.queue = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n var dispatch = queue.dispatch = dispatchAction.bind(null, currentlyRenderingFiber$1, queue);\n return [hook.memoizedState, dispatch];\n}\n\nfunction updateState(initialState) {\n return updateReducer(basicStateReducer);\n}\n\nfunction rerenderState(initialState) {\n return rerenderReducer(basicStateReducer);\n}\n\nfunction pushEffect(tag, create, destroy, deps) {\n var effect = {\n tag: tag,\n create: create,\n destroy: destroy,\n deps: deps,\n // Circular\n next: null\n };\n var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n\n if (componentUpdateQueue === null) {\n componentUpdateQueue = createFunctionComponentUpdateQueue();\n currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n componentUpdateQueue.lastEffect = effect.next = effect;\n } else {\n var lastEffect = componentUpdateQueue.lastEffect;\n\n if (lastEffect === null) {\n componentUpdateQueue.lastEffect = effect.next = effect;\n } else {\n var firstEffect = lastEffect.next;\n lastEffect.next = effect;\n effect.next = firstEffect;\n componentUpdateQueue.lastEffect = effect;\n }\n }\n\n return effect;\n}\n\nfunction mountRef(initialValue) {\n var hook = mountWorkInProgressHook();\n var ref = {\n current: initialValue\n };\n\n {\n Object.seal(ref);\n }\n\n hook.memoizedState = ref;\n return ref;\n}\n\nfunction updateRef(initialValue) {\n var hook = updateWorkInProgressHook();\n return hook.memoizedState;\n}\n\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n var nextDeps = deps === undefined ? null : deps;\n currentlyRenderingFiber$1.flags |= fiberFlags;\n hook.memoizedState = pushEffect(HasEffect | hookFlags, create, undefined, nextDeps);\n}\n\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n var nextDeps = deps === undefined ? null : deps;\n var destroy = undefined;\n\n if (currentHook !== null) {\n var prevEffect = currentHook.memoizedState;\n destroy = prevEffect.destroy;\n\n if (nextDeps !== null) {\n var prevDeps = prevEffect.deps;\n\n if (areHookInputsEqual(nextDeps, prevDeps)) {\n pushEffect(hookFlags, create, destroy, nextDeps);\n return;\n }\n }\n }\n\n currentlyRenderingFiber$1.flags |= fiberFlags;\n hook.memoizedState = pushEffect(HasEffect | hookFlags, create, destroy, nextDeps);\n}\n\nfunction mountEffect(create, deps) {\n {\n // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests\n if ('undefined' !== typeof jest) {\n warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);\n }\n }\n\n return mountEffectImpl(Update | Passive, Passive$1, create, deps);\n}\n\nfunction updateEffect(create, deps) {\n {\n // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests\n if ('undefined' !== typeof jest) {\n warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);\n }\n }\n\n return updateEffectImpl(Update | Passive, Passive$1, create, deps);\n}\n\nfunction mountLayoutEffect(create, deps) {\n return mountEffectImpl(Update, Layout, create, deps);\n}\n\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(Update, Layout, create, deps);\n}\n\nfunction imperativeHandleEffect(create, ref) {\n if (typeof ref === 'function') {\n var refCallback = ref;\n\n var _inst = create();\n\n refCallback(_inst);\n return function () {\n refCallback(null);\n };\n } else if (ref !== null && ref !== undefined) {\n var refObject = ref;\n\n {\n if (!refObject.hasOwnProperty('current')) {\n error('Expected useImperativeHandle() first argument to either be a ' + 'ref callback or React.createRef() object. Instead received: %s.', 'an object with keys {' + Object.keys(refObject).join(', ') + '}');\n }\n }\n\n var _inst2 = create();\n\n refObject.current = _inst2;\n return function () {\n refObject.current = null;\n };\n }\n}\n\nfunction mountImperativeHandle(ref, create, deps) {\n {\n if (typeof create !== 'function') {\n error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');\n }\n } // TODO: If deps are provided, should we skip comparing the ref itself?\n\n\n var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n return mountEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction updateImperativeHandle(ref, create, deps) {\n {\n if (typeof create !== 'function') {\n error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');\n }\n } // TODO: If deps are provided, should we skip comparing the ref itself?\n\n\n var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction mountDebugValue(value, formatterFn) {// This hook is normally a no-op.\n // The react-debug-hooks package injects its own implementation\n // so that e.g. DevTools can display custom hook values.\n}\n\nvar updateDebugValue = mountDebugValue;\n\nfunction mountCallback(callback, deps) {\n var hook = mountWorkInProgressHook();\n var nextDeps = deps === undefined ? null : deps;\n hook.memoizedState = [callback, nextDeps];\n return callback;\n}\n\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n var nextDeps = deps === undefined ? null : deps;\n var prevState = hook.memoizedState;\n\n if (prevState !== null) {\n if (nextDeps !== null) {\n var prevDeps = prevState[1];\n\n if (areHookInputsEqual(nextDeps, prevDeps)) {\n return prevState[0];\n }\n }\n }\n\n hook.memoizedState = [callback, nextDeps];\n return callback;\n}\n\nfunction mountMemo(nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n var nextDeps = deps === undefined ? null : deps;\n var nextValue = nextCreate();\n hook.memoizedState = [nextValue, nextDeps];\n return nextValue;\n}\n\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n var nextDeps = deps === undefined ? null : deps;\n var prevState = hook.memoizedState;\n\n if (prevState !== null) {\n // Assume these are defined. If they're not, areHookInputsEqual will warn.\n if (nextDeps !== null) {\n var prevDeps = prevState[1];\n\n if (areHookInputsEqual(nextDeps, prevDeps)) {\n return prevState[0];\n }\n }\n }\n\n var nextValue = nextCreate();\n hook.memoizedState = [nextValue, nextDeps];\n return nextValue;\n}\n\nfunction mountDeferredValue(value) {\n var _mountState = mountState(value),\n prevValue = _mountState[0],\n setValue = _mountState[1];\n\n mountEffect(function () {\n var prevTransition = ReactCurrentBatchConfig$1.transition;\n ReactCurrentBatchConfig$1.transition = 1;\n\n try {\n setValue(value);\n } finally {\n ReactCurrentBatchConfig$1.transition = prevTransition;\n }\n }, [value]);\n return prevValue;\n}\n\nfunction updateDeferredValue(value) {\n var _updateState = updateState(),\n prevValue = _updateState[0],\n setValue = _updateState[1];\n\n updateEffect(function () {\n var prevTransition = ReactCurrentBatchConfig$1.transition;\n ReactCurrentBatchConfig$1.transition = 1;\n\n try {\n setValue(value);\n } finally {\n ReactCurrentBatchConfig$1.transition = prevTransition;\n }\n }, [value]);\n return prevValue;\n}\n\nfunction rerenderDeferredValue(value) {\n var _rerenderState = rerenderState(),\n prevValue = _rerenderState[0],\n setValue = _rerenderState[1];\n\n updateEffect(function () {\n var prevTransition = ReactCurrentBatchConfig$1.transition;\n ReactCurrentBatchConfig$1.transition = 1;\n\n try {\n setValue(value);\n } finally {\n ReactCurrentBatchConfig$1.transition = prevTransition;\n }\n }, [value]);\n return prevValue;\n}\n\nfunction startTransition(setPending, callback) {\n var priorityLevel = getCurrentPriorityLevel();\n\n {\n runWithPriority$1(priorityLevel < UserBlockingPriority$2 ? UserBlockingPriority$2 : priorityLevel, function () {\n setPending(true);\n });\n runWithPriority$1(priorityLevel > NormalPriority$1 ? NormalPriority$1 : priorityLevel, function () {\n var prevTransition = ReactCurrentBatchConfig$1.transition;\n ReactCurrentBatchConfig$1.transition = 1;\n\n try {\n setPending(false);\n callback();\n } finally {\n ReactCurrentBatchConfig$1.transition = prevTransition;\n }\n });\n }\n}\n\nfunction mountTransition() {\n var _mountState2 = mountState(false),\n isPending = _mountState2[0],\n setPending = _mountState2[1]; // The `start` method can be stored on a ref, since `setPending`\n // never changes.\n\n\n var start = startTransition.bind(null, setPending);\n mountRef(start);\n return [start, isPending];\n}\n\nfunction updateTransition() {\n var _updateState2 = updateState(),\n isPending = _updateState2[0];\n\n var startRef = updateRef();\n var start = startRef.current;\n return [start, isPending];\n}\n\nfunction rerenderTransition() {\n var _rerenderState2 = rerenderState(),\n isPending = _rerenderState2[0];\n\n var startRef = updateRef();\n var start = startRef.current;\n return [start, isPending];\n}\n\nvar isUpdatingOpaqueValueInRenderPhase = false;\nfunction getIsUpdatingOpaqueValueInRenderPhaseInDEV() {\n {\n return isUpdatingOpaqueValueInRenderPhase;\n }\n}\n\nfunction warnOnOpaqueIdentifierAccessInDEV(fiber) {\n {\n // TODO: Should warn in effects and callbacks, too\n var name = getComponentName(fiber.type) || 'Unknown';\n\n if (getIsRendering() && !didWarnAboutUseOpaqueIdentifier[name]) {\n error('The object passed back from useOpaqueIdentifier is meant to be ' + 'passed through to attributes only. Do not read the ' + 'value directly.');\n\n didWarnAboutUseOpaqueIdentifier[name] = true;\n }\n }\n}\n\nfunction mountOpaqueIdentifier() {\n var makeId = makeClientIdInDEV.bind(null, warnOnOpaqueIdentifierAccessInDEV.bind(null, currentlyRenderingFiber$1)) ;\n\n if (getIsHydrating()) {\n var didUpgrade = false;\n var fiber = currentlyRenderingFiber$1;\n\n var readValue = function () {\n if (!didUpgrade) {\n // Only upgrade once. This works even inside the render phase because\n // the update is added to a shared queue, which outlasts the\n // in-progress render.\n didUpgrade = true;\n\n {\n isUpdatingOpaqueValueInRenderPhase = true;\n setId(makeId());\n isUpdatingOpaqueValueInRenderPhase = false;\n warnOnOpaqueIdentifierAccessInDEV(fiber);\n }\n }\n\n {\n {\n throw Error( \"The object passed back from useOpaqueIdentifier is meant to be passed through to attributes only. Do not read the value directly.\" );\n }\n }\n };\n\n var id = makeOpaqueHydratingObject(readValue);\n var setId = mountState(id)[1];\n\n if ((currentlyRenderingFiber$1.mode & BlockingMode) === NoMode) {\n currentlyRenderingFiber$1.flags |= Update | Passive;\n pushEffect(HasEffect | Passive$1, function () {\n setId(makeId());\n }, undefined, null);\n }\n\n return id;\n } else {\n var _id = makeId();\n\n mountState(_id);\n return _id;\n }\n}\n\nfunction updateOpaqueIdentifier() {\n var id = updateState()[0];\n return id;\n}\n\nfunction rerenderOpaqueIdentifier() {\n var id = rerenderState()[0];\n return id;\n}\n\nfunction dispatchAction(fiber, queue, action) {\n {\n if (typeof arguments[3] === 'function') {\n error(\"State updates from the useState() and useReducer() Hooks don't support the \" + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');\n }\n }\n\n var eventTime = requestEventTime();\n var lane = requestUpdateLane(fiber);\n var update = {\n lane: lane,\n action: action,\n eagerReducer: null,\n eagerState: null,\n next: null\n }; // Append the update to the end of the list.\n\n var pending = queue.pending;\n\n if (pending === null) {\n // This is the first update. Create a circular list.\n update.next = update;\n } else {\n update.next = pending.next;\n pending.next = update;\n }\n\n queue.pending = update;\n var alternate = fiber.alternate;\n\n if (fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1) {\n // This is a render phase update. Stash it in a lazily-created map of\n // queue -> linked list of updates. After this render pass, we'll restart\n // and apply the stashed updates on top of the work-in-progress hook.\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;\n } else {\n if (fiber.lanes === NoLanes && (alternate === null || alternate.lanes === NoLanes)) {\n // The queue is currently empty, which means we can eagerly compute the\n // next state before entering the render phase. If the new state is the\n // same as the current state, we may be able to bail out entirely.\n var lastRenderedReducer = queue.lastRenderedReducer;\n\n if (lastRenderedReducer !== null) {\n var prevDispatcher;\n\n {\n prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n }\n\n try {\n var currentState = queue.lastRenderedState;\n var eagerState = lastRenderedReducer(currentState, action); // Stash the eagerly computed state, and the reducer used to compute\n // it, on the update object. If the reducer hasn't changed by the\n // time we enter the render phase, then the eager state can be used\n // without calling the reducer again.\n\n update.eagerReducer = lastRenderedReducer;\n update.eagerState = eagerState;\n\n if (objectIs(eagerState, currentState)) {\n // Fast path. We can bail out without scheduling React to re-render.\n // It's still possible that we'll need to rebase this update later,\n // if the component re-renders for a different reason and by that\n // time the reducer has changed.\n return;\n }\n } catch (error) {// Suppress the error. It will throw again in the render phase.\n } finally {\n {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n }\n }\n }\n\n {\n // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests\n if ('undefined' !== typeof jest) {\n warnIfNotScopedWithMatchingAct(fiber);\n warnIfNotCurrentlyActingUpdatesInDev(fiber);\n }\n }\n\n scheduleUpdateOnFiber(fiber, lane, eventTime);\n }\n}\n\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useMutableSource: throwInvalidHookError,\n useOpaqueIdentifier: throwInvalidHookError,\n unstable_isNewReconciler: enableNewReconciler\n};\nvar HooksDispatcherOnMountInDEV = null;\nvar HooksDispatcherOnMountWithHookTypesInDEV = null;\nvar HooksDispatcherOnUpdateInDEV = null;\nvar HooksDispatcherOnRerenderInDEV = null;\nvar InvalidNestedHooksDispatcherOnMountInDEV = null;\nvar InvalidNestedHooksDispatcherOnUpdateInDEV = null;\nvar InvalidNestedHooksDispatcherOnRerenderInDEV = null;\n\n{\n var warnInvalidContextAccess = function () {\n error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n };\n\n var warnInvalidHookAccess = function () {\n error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://reactjs.org/link/rules-of-hooks');\n };\n\n HooksDispatcherOnMountInDEV = {\n readContext: function (context, observedBits) {\n return readContext(context, observedBits);\n },\n useCallback: function (callback, deps) {\n currentHookNameInDev = 'useCallback';\n mountHookTypesDev();\n checkDepsAreArrayDev(deps);\n return mountCallback(callback, deps);\n },\n useContext: function (context, observedBits) {\n currentHookNameInDev = 'useContext';\n mountHookTypesDev();\n return readContext(context, observedBits);\n },\n useEffect: function (create, deps) {\n currentHookNameInDev = 'useEffect';\n mountHookTypesDev();\n checkDepsAreArrayDev(deps);\n return mountEffect(create, deps);\n },\n useImperativeHandle: function (ref, create, deps) {\n currentHookNameInDev = 'useImperativeHandle';\n mountHookTypesDev();\n checkDepsAreArrayDev(deps);\n return mountImperativeHandle(ref, create, deps);\n },\n useLayoutEffect: function (create, deps) {\n currentHookNameInDev = 'useLayoutEffect';\n mountHookTypesDev();\n checkDepsAreArrayDev(deps);\n return mountLayoutEffect(create, deps);\n },\n useMemo: function (create, deps) {\n currentHookNameInDev = 'useMemo';\n mountHookTypesDev();\n checkDepsAreArrayDev(deps);\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n try {\n return mountMemo(create, deps);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useReducer: function (reducer, initialArg, init) {\n currentHookNameInDev = 'useReducer';\n mountHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n try {\n return mountReducer(reducer, initialArg, init);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useRef: function (initialValue) {\n currentHookNameInDev = 'useRef';\n mountHookTypesDev();\n return mountRef(initialValue);\n },\n useState: function (initialState) {\n currentHookNameInDev = 'useState';\n mountHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n try {\n return mountState(initialState);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useDebugValue: function (value, formatterFn) {\n currentHookNameInDev = 'useDebugValue';\n mountHookTypesDev();\n return mountDebugValue();\n },\n useDeferredValue: function (value) {\n currentHookNameInDev = 'useDeferredValue';\n mountHookTypesDev();\n return mountDeferredValue(value);\n },\n useTransition: function () {\n currentHookNameInDev = 'useTransition';\n mountHookTypesDev();\n return mountTransition();\n },\n useMutableSource: function (source, getSnapshot, subscribe) {\n currentHookNameInDev = 'useMutableSource';\n mountHookTypesDev();\n return mountMutableSource(source, getSnapshot, subscribe);\n },\n useOpaqueIdentifier: function () {\n currentHookNameInDev = 'useOpaqueIdentifier';\n mountHookTypesDev();\n return mountOpaqueIdentifier();\n },\n unstable_isNewReconciler: enableNewReconciler\n };\n HooksDispatcherOnMountWithHookTypesInDEV = {\n readContext: function (context, observedBits) {\n return readContext(context, observedBits);\n },\n useCallback: function (callback, deps) {\n currentHookNameInDev = 'useCallback';\n updateHookTypesDev();\n return mountCallback(callback, deps);\n },\n useContext: function (context, observedBits) {\n currentHookNameInDev = 'useContext';\n updateHookTypesDev();\n return readContext(context, observedBits);\n },\n useEffect: function (create, deps) {\n currentHookNameInDev = 'useEffect';\n updateHookTypesDev();\n return mountEffect(create, deps);\n },\n useImperativeHandle: function (ref, create, deps) {\n currentHookNameInDev = 'useImperativeHandle';\n updateHookTypesDev();\n return mountImperativeHandle(ref, create, deps);\n },\n useLayoutEffect: function (create, deps) {\n currentHookNameInDev = 'useLayoutEffect';\n updateHookTypesDev();\n return mountLayoutEffect(create, deps);\n },\n useMemo: function (create, deps) {\n currentHookNameInDev = 'useMemo';\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n try {\n return mountMemo(create, deps);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useReducer: function (reducer, initialArg, init) {\n currentHookNameInDev = 'useReducer';\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n try {\n return mountReducer(reducer, initialArg, init);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useRef: function (initialValue) {\n currentHookNameInDev = 'useRef';\n updateHookTypesDev();\n return mountRef(initialValue);\n },\n useState: function (initialState) {\n currentHookNameInDev = 'useState';\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n try {\n return mountState(initialState);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useDebugValue: function (value, formatterFn) {\n currentHookNameInDev = 'useDebugValue';\n updateHookTypesDev();\n return mountDebugValue();\n },\n useDeferredValue: function (value) {\n currentHookNameInDev = 'useDeferredValue';\n updateHookTypesDev();\n return mountDeferredValue(value);\n },\n useTransition: function () {\n currentHookNameInDev = 'useTransition';\n updateHookTypesDev();\n return mountTransition();\n },\n useMutableSource: function (source, getSnapshot, subscribe) {\n currentHookNameInDev = 'useMutableSource';\n updateHookTypesDev();\n return mountMutableSource(source, getSnapshot, subscribe);\n },\n useOpaqueIdentifier: function () {\n currentHookNameInDev = 'useOpaqueIdentifier';\n updateHookTypesDev();\n return mountOpaqueIdentifier();\n },\n unstable_isNewReconciler: enableNewReconciler\n };\n HooksDispatcherOnUpdateInDEV = {\n readContext: function (context, observedBits) {\n return readContext(context, observedBits);\n },\n useCallback: function (callback, deps) {\n currentHookNameInDev = 'useCallback';\n updateHookTypesDev();\n return updateCallback(callback, deps);\n },\n useContext: function (context, observedBits) {\n currentHookNameInDev = 'useContext';\n updateHookTypesDev();\n return readContext(context, observedBits);\n },\n useEffect: function (create, deps) {\n currentHookNameInDev = 'useEffect';\n updateHookTypesDev();\n return updateEffect(create, deps);\n },\n useImperativeHandle: function (ref, create, deps) {\n currentHookNameInDev = 'useImperativeHandle';\n updateHookTypesDev();\n return updateImperativeHandle(ref, create, deps);\n },\n useLayoutEffect: function (create, deps) {\n currentHookNameInDev = 'useLayoutEffect';\n updateHookTypesDev();\n return updateLayoutEffect(create, deps);\n },\n useMemo: function (create, deps) {\n currentHookNameInDev = 'useMemo';\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n try {\n return updateMemo(create, deps);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useReducer: function (reducer, initialArg, init) {\n currentHookNameInDev = 'useReducer';\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n try {\n return updateReducer(reducer, initialArg, init);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useRef: function (initialValue) {\n currentHookNameInDev = 'useRef';\n updateHookTypesDev();\n return updateRef();\n },\n useState: function (initialState) {\n currentHookNameInDev = 'useState';\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n try {\n return updateState(initialState);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useDebugValue: function (value, formatterFn) {\n currentHookNameInDev = 'useDebugValue';\n updateHookTypesDev();\n return updateDebugValue();\n },\n useDeferredValue: function (value) {\n currentHookNameInDev = 'useDeferredValue';\n updateHookTypesDev();\n return updateDeferredValue(value);\n },\n useTransition: function () {\n currentHookNameInDev = 'useTransition';\n updateHookTypesDev();\n return updateTransition();\n },\n useMutableSource: function (source, getSnapshot, subscribe) {\n currentHookNameInDev = 'useMutableSource';\n updateHookTypesDev();\n return updateMutableSource(source, getSnapshot, subscribe);\n },\n useOpaqueIdentifier: function () {\n currentHookNameInDev = 'useOpaqueIdentifier';\n updateHookTypesDev();\n return updateOpaqueIdentifier();\n },\n unstable_isNewReconciler: enableNewReconciler\n };\n HooksDispatcherOnRerenderInDEV = {\n readContext: function (context, observedBits) {\n return readContext(context, observedBits);\n },\n useCallback: function (callback, deps) {\n currentHookNameInDev = 'useCallback';\n updateHookTypesDev();\n return updateCallback(callback, deps);\n },\n useContext: function (context, observedBits) {\n currentHookNameInDev = 'useContext';\n updateHookTypesDev();\n return readContext(context, observedBits);\n },\n useEffect: function (create, deps) {\n currentHookNameInDev = 'useEffect';\n updateHookTypesDev();\n return updateEffect(create, deps);\n },\n useImperativeHandle: function (ref, create, deps) {\n currentHookNameInDev = 'useImperativeHandle';\n updateHookTypesDev();\n return updateImperativeHandle(ref, create, deps);\n },\n useLayoutEffect: function (create, deps) {\n currentHookNameInDev = 'useLayoutEffect';\n updateHookTypesDev();\n return updateLayoutEffect(create, deps);\n },\n useMemo: function (create, deps) {\n currentHookNameInDev = 'useMemo';\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n try {\n return updateMemo(create, deps);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useReducer: function (reducer, initialArg, init) {\n currentHookNameInDev = 'useReducer';\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n try {\n return rerenderReducer(reducer, initialArg, init);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useRef: function (initialValue) {\n currentHookNameInDev = 'useRef';\n updateHookTypesDev();\n return updateRef();\n },\n useState: function (initialState) {\n currentHookNameInDev = 'useState';\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n try {\n return rerenderState(initialState);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useDebugValue: function (value, formatterFn) {\n currentHookNameInDev = 'useDebugValue';\n updateHookTypesDev();\n return updateDebugValue();\n },\n useDeferredValue: function (value) {\n currentHookNameInDev = 'useDeferredValue';\n updateHookTypesDev();\n return rerenderDeferredValue(value);\n },\n useTransition: function () {\n currentHookNameInDev = 'useTransition';\n updateHookTypesDev();\n return rerenderTransition();\n },\n useMutableSource: function (source, getSnapshot, subscribe) {\n currentHookNameInDev = 'useMutableSource';\n updateHookTypesDev();\n return updateMutableSource(source, getSnapshot, subscribe);\n },\n useOpaqueIdentifier: function () {\n currentHookNameInDev = 'useOpaqueIdentifier';\n updateHookTypesDev();\n return rerenderOpaqueIdentifier();\n },\n unstable_isNewReconciler: enableNewReconciler\n };\n InvalidNestedHooksDispatcherOnMountInDEV = {\n readContext: function (context, observedBits) {\n warnInvalidContextAccess();\n return readContext(context, observedBits);\n },\n useCallback: function (callback, deps) {\n currentHookNameInDev = 'useCallback';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountCallback(callback, deps);\n },\n useContext: function (context, observedBits) {\n currentHookNameInDev = 'useContext';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return readContext(context, observedBits);\n },\n useEffect: function (create, deps) {\n currentHookNameInDev = 'useEffect';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountEffect(create, deps);\n },\n useImperativeHandle: function (ref, create, deps) {\n currentHookNameInDev = 'useImperativeHandle';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountImperativeHandle(ref, create, deps);\n },\n useLayoutEffect: function (create, deps) {\n currentHookNameInDev = 'useLayoutEffect';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountLayoutEffect(create, deps);\n },\n useMemo: function (create, deps) {\n currentHookNameInDev = 'useMemo';\n warnInvalidHookAccess();\n mountHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n try {\n return mountMemo(create, deps);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useReducer: function (reducer, initialArg, init) {\n currentHookNameInDev = 'useReducer';\n warnInvalidHookAccess();\n mountHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n try {\n return mountReducer(reducer, initialArg, init);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useRef: function (initialValue) {\n currentHookNameInDev = 'useRef';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountRef(initialValue);\n },\n useState: function (initialState) {\n currentHookNameInDev = 'useState';\n warnInvalidHookAccess();\n mountHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n try {\n return mountState(initialState);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useDebugValue: function (value, formatterFn) {\n currentHookNameInDev = 'useDebugValue';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountDebugValue();\n },\n useDeferredValue: function (value) {\n currentHookNameInDev = 'useDeferredValue';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountDeferredValue(value);\n },\n useTransition: function () {\n currentHookNameInDev = 'useTransition';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountTransition();\n },\n useMutableSource: function (source, getSnapshot, subscribe) {\n currentHookNameInDev = 'useMutableSource';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountMutableSource(source, getSnapshot, subscribe);\n },\n useOpaqueIdentifier: function () {\n currentHookNameInDev = 'useOpaqueIdentifier';\n warnInvalidHookAccess();\n mountHookTypesDev();\n return mountOpaqueIdentifier();\n },\n unstable_isNewReconciler: enableNewReconciler\n };\n InvalidNestedHooksDispatcherOnUpdateInDEV = {\n readContext: function (context, observedBits) {\n warnInvalidContextAccess();\n return readContext(context, observedBits);\n },\n useCallback: function (callback, deps) {\n currentHookNameInDev = 'useCallback';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateCallback(callback, deps);\n },\n useContext: function (context, observedBits) {\n currentHookNameInDev = 'useContext';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return readContext(context, observedBits);\n },\n useEffect: function (create, deps) {\n currentHookNameInDev = 'useEffect';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateEffect(create, deps);\n },\n useImperativeHandle: function (ref, create, deps) {\n currentHookNameInDev = 'useImperativeHandle';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateImperativeHandle(ref, create, deps);\n },\n useLayoutEffect: function (create, deps) {\n currentHookNameInDev = 'useLayoutEffect';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateLayoutEffect(create, deps);\n },\n useMemo: function (create, deps) {\n currentHookNameInDev = 'useMemo';\n warnInvalidHookAccess();\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n try {\n return updateMemo(create, deps);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useReducer: function (reducer, initialArg, init) {\n currentHookNameInDev = 'useReducer';\n warnInvalidHookAccess();\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n try {\n return updateReducer(reducer, initialArg, init);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useRef: function (initialValue) {\n currentHookNameInDev = 'useRef';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateRef();\n },\n useState: function (initialState) {\n currentHookNameInDev = 'useState';\n warnInvalidHookAccess();\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n try {\n return updateState(initialState);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useDebugValue: function (value, formatterFn) {\n currentHookNameInDev = 'useDebugValue';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateDebugValue();\n },\n useDeferredValue: function (value) {\n currentHookNameInDev = 'useDeferredValue';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateDeferredValue(value);\n },\n useTransition: function () {\n currentHookNameInDev = 'useTransition';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateTransition();\n },\n useMutableSource: function (source, getSnapshot, subscribe) {\n currentHookNameInDev = 'useMutableSource';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateMutableSource(source, getSnapshot, subscribe);\n },\n useOpaqueIdentifier: function () {\n currentHookNameInDev = 'useOpaqueIdentifier';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateOpaqueIdentifier();\n },\n unstable_isNewReconciler: enableNewReconciler\n };\n InvalidNestedHooksDispatcherOnRerenderInDEV = {\n readContext: function (context, observedBits) {\n warnInvalidContextAccess();\n return readContext(context, observedBits);\n },\n useCallback: function (callback, deps) {\n currentHookNameInDev = 'useCallback';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateCallback(callback, deps);\n },\n useContext: function (context, observedBits) {\n currentHookNameInDev = 'useContext';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return readContext(context, observedBits);\n },\n useEffect: function (create, deps) {\n currentHookNameInDev = 'useEffect';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateEffect(create, deps);\n },\n useImperativeHandle: function (ref, create, deps) {\n currentHookNameInDev = 'useImperativeHandle';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateImperativeHandle(ref, create, deps);\n },\n useLayoutEffect: function (create, deps) {\n currentHookNameInDev = 'useLayoutEffect';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateLayoutEffect(create, deps);\n },\n useMemo: function (create, deps) {\n currentHookNameInDev = 'useMemo';\n warnInvalidHookAccess();\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n try {\n return updateMemo(create, deps);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useReducer: function (reducer, initialArg, init) {\n currentHookNameInDev = 'useReducer';\n warnInvalidHookAccess();\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n try {\n return rerenderReducer(reducer, initialArg, init);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useRef: function (initialValue) {\n currentHookNameInDev = 'useRef';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateRef();\n },\n useState: function (initialState) {\n currentHookNameInDev = 'useState';\n warnInvalidHookAccess();\n updateHookTypesDev();\n var prevDispatcher = ReactCurrentDispatcher$1.current;\n ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n try {\n return rerenderState(initialState);\n } finally {\n ReactCurrentDispatcher$1.current = prevDispatcher;\n }\n },\n useDebugValue: function (value, formatterFn) {\n currentHookNameInDev = 'useDebugValue';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateDebugValue();\n },\n useDeferredValue: function (value) {\n currentHookNameInDev = 'useDeferredValue';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return rerenderDeferredValue(value);\n },\n useTransition: function () {\n currentHookNameInDev = 'useTransition';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return rerenderTransition();\n },\n useMutableSource: function (source, getSnapshot, subscribe) {\n currentHookNameInDev = 'useMutableSource';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return updateMutableSource(source, getSnapshot, subscribe);\n },\n useOpaqueIdentifier: function () {\n currentHookNameInDev = 'useOpaqueIdentifier';\n warnInvalidHookAccess();\n updateHookTypesDev();\n return rerenderOpaqueIdentifier();\n },\n unstable_isNewReconciler: enableNewReconciler\n };\n}\n\nvar now$1 = Scheduler.unstable_now;\nvar commitTime = 0;\nvar profilerStartTime = -1;\n\nfunction getCommitTime() {\n return commitTime;\n}\n\nfunction recordCommitTime() {\n\n commitTime = now$1();\n}\n\nfunction startProfilerTimer(fiber) {\n\n profilerStartTime = now$1();\n\n if (fiber.actualStartTime < 0) {\n fiber.actualStartTime = now$1();\n }\n}\n\nfunction stopProfilerTimerIfRunning(fiber) {\n\n profilerStartTime = -1;\n}\n\nfunction stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) {\n\n if (profilerStartTime >= 0) {\n var elapsedTime = now$1() - profilerStartTime;\n fiber.actualDuration += elapsedTime;\n\n if (overrideBaseTime) {\n fiber.selfBaseDuration = elapsedTime;\n }\n\n profilerStartTime = -1;\n }\n}\n\nfunction transferActualDuration(fiber) {\n // Transfer time spent rendering these children so we don't lose it\n // after we rerender. This is used as a helper in special cases\n // where we should count the work of multiple passes.\n var child = fiber.child;\n\n while (child) {\n fiber.actualDuration += child.actualDuration;\n child = child.sibling;\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar didReceiveUpdate = false;\nvar didWarnAboutBadClass;\nvar didWarnAboutModulePatternComponent;\nvar didWarnAboutContextTypeOnFunctionComponent;\nvar didWarnAboutGetDerivedStateOnFunctionComponent;\nvar didWarnAboutFunctionRefs;\nvar didWarnAboutReassigningProps;\nvar didWarnAboutRevealOrder;\nvar didWarnAboutTailOptions;\n\n{\n didWarnAboutBadClass = {};\n didWarnAboutModulePatternComponent = {};\n didWarnAboutContextTypeOnFunctionComponent = {};\n didWarnAboutGetDerivedStateOnFunctionComponent = {};\n didWarnAboutFunctionRefs = {};\n didWarnAboutReassigningProps = false;\n didWarnAboutRevealOrder = {};\n didWarnAboutTailOptions = {};\n}\n\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n if (current === null) {\n // If this is a fresh new component that hasn't been rendered yet, we\n // won't update its child set by applying minimal side-effects. Instead,\n // we will add them all to the child before it gets rendered. That means\n // we can optimize this reconciliation pass by not tracking side-effects.\n workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n } else {\n // If the current child is the same as the work in progress, it means that\n // we haven't yet started any work on these children. Therefore, we use\n // the clone algorithm to create a copy of all the current children.\n // If we had any progressed work already, that is invalid at this point so\n // let's throw it out.\n workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderLanes);\n }\n}\n\nfunction forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes) {\n // This function is fork of reconcileChildren. It's used in cases where we\n // want to reconcile without matching against the existing set. This has the\n // effect of all current children being unmounted; even if the type and key\n // are the same, the old child is unmounted and a new child is created.\n //\n // To do this, we're going to go through the reconcile algorithm twice. In\n // the first pass, we schedule a deletion for all the current children by\n // passing null.\n workInProgress.child = reconcileChildFibers(workInProgress, current.child, null, renderLanes); // In the second pass, we mount the new children. The trick here is that we\n // pass null in place of where we usually pass the current child set. This has\n // the effect of remounting all children regardless of whether their\n // identities match.\n\n workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n}\n\nfunction updateForwardRef(current, workInProgress, Component, nextProps, renderLanes) {\n // TODO: current can be non-null here even if the component\n // hasn't yet mounted. This happens after the first render suspends.\n // We'll need to figure out if this is fine or can cause issues.\n {\n if (workInProgress.type !== workInProgress.elementType) {\n // Lazy component props can't be validated in createElement\n // because they're only guaranteed to be resolved here.\n var innerPropTypes = Component.propTypes;\n\n if (innerPropTypes) {\n checkPropTypes(innerPropTypes, nextProps, // Resolved props\n 'prop', getComponentName(Component));\n }\n }\n }\n\n var render = Component.render;\n var ref = workInProgress.ref; // The rest is a fork of updateFunctionComponent\n\n var nextChildren;\n prepareToReadContext(workInProgress, renderLanes);\n\n {\n ReactCurrentOwner$1.current = workInProgress;\n setIsRendering(true);\n nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);\n\n if ( workInProgress.mode & StrictMode) {\n disableLogs();\n\n try {\n nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);\n } finally {\n reenableLogs();\n }\n }\n\n setIsRendering(false);\n }\n\n if (current !== null && !didReceiveUpdate) {\n bailoutHooks(current, workInProgress, renderLanes);\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateMemoComponent(current, workInProgress, Component, nextProps, updateLanes, renderLanes) {\n if (current === null) {\n var type = Component.type;\n\n if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.\n Component.defaultProps === undefined) {\n var resolvedType = type;\n\n {\n resolvedType = resolveFunctionForHotReloading(type);\n } // If this is a plain function component without default props,\n // and with only the default shallow comparison, we upgrade it\n // to a SimpleMemoComponent to allow fast path updates.\n\n\n workInProgress.tag = SimpleMemoComponent;\n workInProgress.type = resolvedType;\n\n {\n validateFunctionComponentInDev(workInProgress, type);\n }\n\n return updateSimpleMemoComponent(current, workInProgress, resolvedType, nextProps, updateLanes, renderLanes);\n }\n\n {\n var innerPropTypes = type.propTypes;\n\n if (innerPropTypes) {\n // Inner memo component props aren't currently validated in createElement.\n // We could move it there, but we'd still need this for lazy code path.\n checkPropTypes(innerPropTypes, nextProps, // Resolved props\n 'prop', getComponentName(type));\n }\n }\n\n var child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress, workInProgress.mode, renderLanes);\n child.ref = workInProgress.ref;\n child.return = workInProgress;\n workInProgress.child = child;\n return child;\n }\n\n {\n var _type = Component.type;\n var _innerPropTypes = _type.propTypes;\n\n if (_innerPropTypes) {\n // Inner memo component props aren't currently validated in createElement.\n // We could move it there, but we'd still need this for lazy code path.\n checkPropTypes(_innerPropTypes, nextProps, // Resolved props\n 'prop', getComponentName(_type));\n }\n }\n\n var currentChild = current.child; // This is always exactly one child\n\n if (!includesSomeLane(updateLanes, renderLanes)) {\n // This will be the props with resolved defaultProps,\n // unlike current.memoizedProps which will be the unresolved ones.\n var prevProps = currentChild.memoizedProps; // Default to shallow comparison\n\n var compare = Component.compare;\n compare = compare !== null ? compare : shallowEqual;\n\n if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) {\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n var newChild = createWorkInProgress(currentChild, nextProps);\n newChild.ref = workInProgress.ref;\n newChild.return = workInProgress;\n workInProgress.child = newChild;\n return newChild;\n}\n\nfunction updateSimpleMemoComponent(current, workInProgress, Component, nextProps, updateLanes, renderLanes) {\n // TODO: current can be non-null here even if the component\n // hasn't yet mounted. This happens when the inner render suspends.\n // We'll need to figure out if this is fine or can cause issues.\n {\n if (workInProgress.type !== workInProgress.elementType) {\n // Lazy component props can't be validated in createElement\n // because they're only guaranteed to be resolved here.\n var outerMemoType = workInProgress.elementType;\n\n if (outerMemoType.$$typeof === REACT_LAZY_TYPE) {\n // We warn when you define propTypes on lazy()\n // so let's just skip over it to find memo() outer wrapper.\n // Inner props for memo are validated later.\n var lazyComponent = outerMemoType;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n outerMemoType = init(payload);\n } catch (x) {\n outerMemoType = null;\n } // Inner propTypes will be validated in the function component path.\n\n\n var outerPropTypes = outerMemoType && outerMemoType.propTypes;\n\n if (outerPropTypes) {\n checkPropTypes(outerPropTypes, nextProps, // Resolved (SimpleMemoComponent has no defaultProps)\n 'prop', getComponentName(outerMemoType));\n }\n }\n }\n }\n\n if (current !== null) {\n var prevProps = current.memoizedProps;\n\n if (shallowEqual(prevProps, nextProps) && current.ref === workInProgress.ref && ( // Prevent bailout if the implementation changed due to hot reload.\n workInProgress.type === current.type )) {\n didReceiveUpdate = false;\n\n if (!includesSomeLane(renderLanes, updateLanes)) {\n // The pending lanes were cleared at the beginning of beginWork. We're\n // about to bail out, but there might be other lanes that weren't\n // included in the current render. Usually, the priority level of the\n // remaining updates is accumlated during the evaluation of the\n // component (i.e. when processing the update queue). But since since\n // we're bailing out early *without* evaluating the component, we need\n // to account for it here, too. Reset to the value of the current fiber.\n // NOTE: This only applies to SimpleMemoComponent, not MemoComponent,\n // because a MemoComponent fiber does not have hooks or an update queue;\n // rather, it wraps around an inner component, which may or may not\n // contains hooks.\n // TODO: Move the reset at in beginWork out of the common path so that\n // this is no longer necessary.\n workInProgress.lanes = current.lanes;\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n } else if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n // This is a special case that only exists for legacy mode.\n // See https://github.com/facebook/react/pull/19216.\n didReceiveUpdate = true;\n }\n }\n }\n\n return updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes);\n}\n\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps;\n var nextChildren = nextProps.children;\n var prevState = current !== null ? current.memoizedState : null;\n\n if (nextProps.mode === 'hidden' || nextProps.mode === 'unstable-defer-without-hiding') {\n if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n // In legacy sync mode, don't defer the subtree. Render it now.\n // TODO: Figure out what we should do in Blocking mode.\n var nextState = {\n baseLanes: NoLanes\n };\n workInProgress.memoizedState = nextState;\n pushRenderLanes(workInProgress, renderLanes);\n } else if (!includesSomeLane(renderLanes, OffscreenLane)) {\n var nextBaseLanes;\n\n if (prevState !== null) {\n var prevBaseLanes = prevState.baseLanes;\n nextBaseLanes = mergeLanes(prevBaseLanes, renderLanes);\n } else {\n nextBaseLanes = renderLanes;\n } // Schedule this fiber to re-render at offscreen priority. Then bailout.\n\n\n {\n markSpawnedWork(OffscreenLane);\n }\n\n workInProgress.lanes = workInProgress.childLanes = laneToLanes(OffscreenLane);\n var _nextState = {\n baseLanes: nextBaseLanes\n };\n workInProgress.memoizedState = _nextState; // We're about to bail out, but we need to push this to the stack anyway\n // to avoid a push/pop misalignment.\n\n pushRenderLanes(workInProgress, nextBaseLanes);\n return null;\n } else {\n // Rendering at offscreen, so we can clear the base lanes.\n var _nextState2 = {\n baseLanes: NoLanes\n };\n workInProgress.memoizedState = _nextState2; // Push the lanes that were skipped when we bailed out.\n\n var subtreeRenderLanes = prevState !== null ? prevState.baseLanes : renderLanes;\n pushRenderLanes(workInProgress, subtreeRenderLanes);\n }\n } else {\n var _subtreeRenderLanes;\n\n if (prevState !== null) {\n _subtreeRenderLanes = mergeLanes(prevState.baseLanes, renderLanes); // Since we're not hidden anymore, reset the state\n\n workInProgress.memoizedState = null;\n } else {\n // We weren't previously hidden, and we still aren't, so there's nothing\n // special to do. Need to push to the stack regardless, though, to avoid\n // a push/pop misalignment.\n _subtreeRenderLanes = renderLanes;\n }\n\n pushRenderLanes(workInProgress, _subtreeRenderLanes);\n }\n\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n} // Note: These happen to have identical begin phases, for now. We shouldn't hold\n// ourselves to this constraint, though. If the behavior diverges, we should\n// fork the function.\n\n\nvar updateLegacyHiddenComponent = updateOffscreenComponent;\n\nfunction updateFragment(current, workInProgress, renderLanes) {\n var nextChildren = workInProgress.pendingProps;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateMode(current, workInProgress, renderLanes) {\n var nextChildren = workInProgress.pendingProps.children;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateProfiler(current, workInProgress, renderLanes) {\n {\n workInProgress.flags |= Update; // Reset effect durations for the next eventual effect phase.\n // These are reset during render to allow the DevTools commit hook a chance to read them,\n\n var stateNode = workInProgress.stateNode;\n stateNode.effectDuration = 0;\n stateNode.passiveEffectDuration = 0;\n }\n\n var nextProps = workInProgress.pendingProps;\n var nextChildren = nextProps.children;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n\n if (current === null && ref !== null || current !== null && current.ref !== ref) {\n // Schedule a Ref effect\n workInProgress.flags |= Ref;\n }\n}\n\nfunction updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes) {\n {\n if (workInProgress.type !== workInProgress.elementType) {\n // Lazy component props can't be validated in createElement\n // because they're only guaranteed to be resolved here.\n var innerPropTypes = Component.propTypes;\n\n if (innerPropTypes) {\n checkPropTypes(innerPropTypes, nextProps, // Resolved props\n 'prop', getComponentName(Component));\n }\n }\n }\n\n var context;\n\n {\n var unmaskedContext = getUnmaskedContext(workInProgress, Component, true);\n context = getMaskedContext(workInProgress, unmaskedContext);\n }\n\n var nextChildren;\n prepareToReadContext(workInProgress, renderLanes);\n\n {\n ReactCurrentOwner$1.current = workInProgress;\n setIsRendering(true);\n nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);\n\n if ( workInProgress.mode & StrictMode) {\n disableLogs();\n\n try {\n nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);\n } finally {\n reenableLogs();\n }\n }\n\n setIsRendering(false);\n }\n\n if (current !== null && !didReceiveUpdate) {\n bailoutHooks(current, workInProgress, renderLanes);\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateClassComponent(current, workInProgress, Component, nextProps, renderLanes) {\n {\n if (workInProgress.type !== workInProgress.elementType) {\n // Lazy component props can't be validated in createElement\n // because they're only guaranteed to be resolved here.\n var innerPropTypes = Component.propTypes;\n\n if (innerPropTypes) {\n checkPropTypes(innerPropTypes, nextProps, // Resolved props\n 'prop', getComponentName(Component));\n }\n }\n } // Push context providers early to prevent context stack mismatches.\n // During mounting we don't know the child context yet as the instance doesn't exist.\n // We will invalidate the child context in finishClassComponent() right after rendering.\n\n\n var hasContext;\n\n if (isContextProvider(Component)) {\n hasContext = true;\n pushContextProvider(workInProgress);\n } else {\n hasContext = false;\n }\n\n prepareToReadContext(workInProgress, renderLanes);\n var instance = workInProgress.stateNode;\n var shouldUpdate;\n\n if (instance === null) {\n if (current !== null) {\n // A class component without an instance only mounts if it suspended\n // inside a non-concurrent tree, in an inconsistent state. We want to\n // treat it like a new mount, even though an empty version of it already\n // committed. Disconnect the alternate pointers.\n current.alternate = null;\n workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect\n\n workInProgress.flags |= Placement;\n } // In the initial pass we might need to construct the instance.\n\n\n constructClassInstance(workInProgress, Component, nextProps);\n mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n shouldUpdate = true;\n } else if (current === null) {\n // In a resume, we'll already have an instance we can reuse.\n shouldUpdate = resumeMountClassInstance(workInProgress, Component, nextProps, renderLanes);\n } else {\n shouldUpdate = updateClassInstance(current, workInProgress, Component, nextProps, renderLanes);\n }\n\n var nextUnitOfWork = finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes);\n\n {\n var inst = workInProgress.stateNode;\n\n if (shouldUpdate && inst.props !== nextProps) {\n if (!didWarnAboutReassigningProps) {\n error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentName(workInProgress.type) || 'a component');\n }\n\n didWarnAboutReassigningProps = true;\n }\n }\n\n return nextUnitOfWork;\n}\n\nfunction finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes) {\n // Refs should update even if shouldComponentUpdate returns false\n markRef(current, workInProgress);\n var didCaptureError = (workInProgress.flags & DidCapture) !== NoFlags;\n\n if (!shouldUpdate && !didCaptureError) {\n // Context providers should defer to sCU for rendering\n if (hasContext) {\n invalidateContextProvider(workInProgress, Component, false);\n }\n\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n\n var instance = workInProgress.stateNode; // Rerender\n\n ReactCurrentOwner$1.current = workInProgress;\n var nextChildren;\n\n if (didCaptureError && typeof Component.getDerivedStateFromError !== 'function') {\n // If we captured an error, but getDerivedStateFromError is not defined,\n // unmount all the children. componentDidCatch will schedule an update to\n // re-render a fallback. This is temporary until we migrate everyone to\n // the new API.\n // TODO: Warn in a future release.\n nextChildren = null;\n\n {\n stopProfilerTimerIfRunning();\n }\n } else {\n {\n setIsRendering(true);\n nextChildren = instance.render();\n\n if ( workInProgress.mode & StrictMode) {\n disableLogs();\n\n try {\n instance.render();\n } finally {\n reenableLogs();\n }\n }\n\n setIsRendering(false);\n }\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n\n if (current !== null && didCaptureError) {\n // If we're recovering from an error, reconcile without reusing any of\n // the existing children. Conceptually, the normal children and the children\n // that are shown on error are two different sets, so we shouldn't reuse\n // normal children even if their identities match.\n forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes);\n } else {\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n } // Memoize state using the values we just used to render.\n // TODO: Restructure so we never read values from the instance.\n\n\n workInProgress.memoizedState = instance.state; // The context might have changed so we need to recalculate it.\n\n if (hasContext) {\n invalidateContextProvider(workInProgress, Component, true);\n }\n\n return workInProgress.child;\n}\n\nfunction pushHostRootContext(workInProgress) {\n var root = workInProgress.stateNode;\n\n if (root.pendingContext) {\n pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context);\n } else if (root.context) {\n // Should always be set\n pushTopLevelContextObject(workInProgress, root.context, false);\n }\n\n pushHostContainer(workInProgress, root.containerInfo);\n}\n\nfunction updateHostRoot(current, workInProgress, renderLanes) {\n pushHostRootContext(workInProgress);\n var updateQueue = workInProgress.updateQueue;\n\n if (!(current !== null && updateQueue !== null)) {\n {\n throw Error( \"If the root does not have an updateQueue, we should have already bailed out. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n var nextProps = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n var prevChildren = prevState !== null ? prevState.element : null;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n var nextState = workInProgress.memoizedState; // Caution: React DevTools currently depends on this property\n // being called \"element\".\n\n var nextChildren = nextState.element;\n\n if (nextChildren === prevChildren) {\n resetHydrationState();\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n\n var root = workInProgress.stateNode;\n\n if (root.hydrate && enterHydrationState(workInProgress)) {\n // If we don't have any current children this might be the first pass.\n // We always try to hydrate. If this isn't a hydration pass there won't\n // be any children to hydrate which is effectively the same thing as\n // not hydrating.\n {\n var mutableSourceEagerHydrationData = root.mutableSourceEagerHydrationData;\n\n if (mutableSourceEagerHydrationData != null) {\n for (var i = 0; i < mutableSourceEagerHydrationData.length; i += 2) {\n var mutableSource = mutableSourceEagerHydrationData[i];\n var version = mutableSourceEagerHydrationData[i + 1];\n setWorkInProgressVersion(mutableSource, version);\n }\n }\n }\n\n var child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n workInProgress.child = child;\n var node = child;\n\n while (node) {\n // Mark each child as hydrating. This is a fast path to know whether this\n // tree is part of a hydrating tree. This is used to determine if a child\n // node has fully mounted yet, and for scheduling event replaying.\n // Conceptually this is similar to Placement in that a new subtree is\n // inserted into the React tree here. It just happens to not need DOM\n // mutations because it already exists.\n node.flags = node.flags & ~Placement | Hydrating;\n node = node.sibling;\n }\n } else {\n // Otherwise reset hydration state in case we aborted and resumed another\n // root.\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n resetHydrationState();\n }\n\n return workInProgress.child;\n}\n\nfunction updateHostComponent(current, workInProgress, renderLanes) {\n pushHostContext(workInProgress);\n\n if (current === null) {\n tryToClaimNextHydratableInstance(workInProgress);\n }\n\n var type = workInProgress.type;\n var nextProps = workInProgress.pendingProps;\n var prevProps = current !== null ? current.memoizedProps : null;\n var nextChildren = nextProps.children;\n var isDirectTextChild = shouldSetTextContent(type, nextProps);\n\n if (isDirectTextChild) {\n // We special case a direct text child of a host node. This is a common\n // case. We won't handle it as a reified child. We will instead handle\n // this in the host environment that also has access to this prop. That\n // avoids allocating another HostText fiber and traversing it.\n nextChildren = null;\n } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {\n // If we're switching from a direct text child to a normal child, or to\n // empty, we need to schedule the text content to be reset.\n workInProgress.flags |= ContentReset;\n }\n\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateHostText(current, workInProgress) {\n if (current === null) {\n tryToClaimNextHydratableInstance(workInProgress);\n } // Nothing to do here. This is terminal. We'll do the completion step\n // immediately after.\n\n\n return null;\n}\n\nfunction mountLazyComponent(_current, workInProgress, elementType, updateLanes, renderLanes) {\n if (_current !== null) {\n // A lazy component only mounts if it suspended inside a non-\n // concurrent tree, in an inconsistent state. We want to treat it like\n // a new mount, even though an empty version of it already committed.\n // Disconnect the alternate pointers.\n _current.alternate = null;\n workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect\n\n workInProgress.flags |= Placement;\n }\n\n var props = workInProgress.pendingProps;\n var lazyComponent = elementType;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n var Component = init(payload); // Store the unwrapped component in the type.\n\n workInProgress.type = Component;\n var resolvedTag = workInProgress.tag = resolveLazyComponentTag(Component);\n var resolvedProps = resolveDefaultProps(Component, props);\n var child;\n\n switch (resolvedTag) {\n case FunctionComponent:\n {\n {\n validateFunctionComponentInDev(workInProgress, Component);\n workInProgress.type = Component = resolveFunctionForHotReloading(Component);\n }\n\n child = updateFunctionComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n return child;\n }\n\n case ClassComponent:\n {\n {\n workInProgress.type = Component = resolveClassForHotReloading(Component);\n }\n\n child = updateClassComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n return child;\n }\n\n case ForwardRef:\n {\n {\n workInProgress.type = Component = resolveForwardRefForHotReloading(Component);\n }\n\n child = updateForwardRef(null, workInProgress, Component, resolvedProps, renderLanes);\n return child;\n }\n\n case MemoComponent:\n {\n {\n if (workInProgress.type !== workInProgress.elementType) {\n var outerPropTypes = Component.propTypes;\n\n if (outerPropTypes) {\n checkPropTypes(outerPropTypes, resolvedProps, // Resolved for outer only\n 'prop', getComponentName(Component));\n }\n }\n }\n\n child = updateMemoComponent(null, workInProgress, Component, resolveDefaultProps(Component.type, resolvedProps), // The inner type can have defaults too\n updateLanes, renderLanes);\n return child;\n }\n }\n\n var hint = '';\n\n {\n if (Component !== null && typeof Component === 'object' && Component.$$typeof === REACT_LAZY_TYPE) {\n hint = ' Did you wrap a component in React.lazy() more than once?';\n }\n } // This message intentionally doesn't mention ForwardRef or MemoComponent\n // because the fact that it's a separate type of work is an\n // implementation detail.\n\n\n {\n {\n throw Error( \"Element type is invalid. Received a promise that resolves to: \" + Component + \". Lazy element type must resolve to a class or function.\" + hint );\n }\n }\n}\n\nfunction mountIncompleteClassComponent(_current, workInProgress, Component, nextProps, renderLanes) {\n if (_current !== null) {\n // An incomplete component only mounts if it suspended inside a non-\n // concurrent tree, in an inconsistent state. We want to treat it like\n // a new mount, even though an empty version of it already committed.\n // Disconnect the alternate pointers.\n _current.alternate = null;\n workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect\n\n workInProgress.flags |= Placement;\n } // Promote the fiber to a class and try rendering again.\n\n\n workInProgress.tag = ClassComponent; // The rest of this function is a fork of `updateClassComponent`\n // Push context providers early to prevent context stack mismatches.\n // During mounting we don't know the child context yet as the instance doesn't exist.\n // We will invalidate the child context in finishClassComponent() right after rendering.\n\n var hasContext;\n\n if (isContextProvider(Component)) {\n hasContext = true;\n pushContextProvider(workInProgress);\n } else {\n hasContext = false;\n }\n\n prepareToReadContext(workInProgress, renderLanes);\n constructClassInstance(workInProgress, Component, nextProps);\n mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n}\n\nfunction mountIndeterminateComponent(_current, workInProgress, Component, renderLanes) {\n if (_current !== null) {\n // An indeterminate component only mounts if it suspended inside a non-\n // concurrent tree, in an inconsistent state. We want to treat it like\n // a new mount, even though an empty version of it already committed.\n // Disconnect the alternate pointers.\n _current.alternate = null;\n workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect\n\n workInProgress.flags |= Placement;\n }\n\n var props = workInProgress.pendingProps;\n var context;\n\n {\n var unmaskedContext = getUnmaskedContext(workInProgress, Component, false);\n context = getMaskedContext(workInProgress, unmaskedContext);\n }\n\n prepareToReadContext(workInProgress, renderLanes);\n var value;\n\n {\n if (Component.prototype && typeof Component.prototype.render === 'function') {\n var componentName = getComponentName(Component) || 'Unknown';\n\n if (!didWarnAboutBadClass[componentName]) {\n error(\"The <%s /> component appears to have a render method, but doesn't extend React.Component. \" + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);\n\n didWarnAboutBadClass[componentName] = true;\n }\n }\n\n if (workInProgress.mode & StrictMode) {\n ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, null);\n }\n\n setIsRendering(true);\n ReactCurrentOwner$1.current = workInProgress;\n value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);\n setIsRendering(false);\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n\n {\n // Support for module components is deprecated and is removed behind a flag.\n // Whether or not it would crash later, we want to show a good message in DEV first.\n if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n var _componentName = getComponentName(Component) || 'Unknown';\n\n if (!didWarnAboutModulePatternComponent[_componentName]) {\n error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName);\n\n didWarnAboutModulePatternComponent[_componentName] = true;\n }\n }\n }\n\n if ( // Run these checks in production only if the flag is off.\n // Eventually we'll delete this branch altogether.\n typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n {\n var _componentName2 = getComponentName(Component) || 'Unknown';\n\n if (!didWarnAboutModulePatternComponent[_componentName2]) {\n error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName2, _componentName2, _componentName2);\n\n didWarnAboutModulePatternComponent[_componentName2] = true;\n }\n } // Proceed under the assumption that this is a class instance\n\n\n workInProgress.tag = ClassComponent; // Throw out any hooks that were used.\n\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null; // Push context providers early to prevent context stack mismatches.\n // During mounting we don't know the child context yet as the instance doesn't exist.\n // We will invalidate the child context in finishClassComponent() right after rendering.\n\n var hasContext = false;\n\n if (isContextProvider(Component)) {\n hasContext = true;\n pushContextProvider(workInProgress);\n } else {\n hasContext = false;\n }\n\n workInProgress.memoizedState = value.state !== null && value.state !== undefined ? value.state : null;\n initializeUpdateQueue(workInProgress);\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n\n if (typeof getDerivedStateFromProps === 'function') {\n applyDerivedStateFromProps(workInProgress, Component, getDerivedStateFromProps, props);\n }\n\n adoptClassInstance(workInProgress, value);\n mountClassInstance(workInProgress, Component, props, renderLanes);\n return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n } else {\n // Proceed under the assumption that this is a function component\n workInProgress.tag = FunctionComponent;\n\n {\n\n if ( workInProgress.mode & StrictMode) {\n disableLogs();\n\n try {\n value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);\n } finally {\n reenableLogs();\n }\n }\n }\n\n reconcileChildren(null, workInProgress, value, renderLanes);\n\n {\n validateFunctionComponentInDev(workInProgress, Component);\n }\n\n return workInProgress.child;\n }\n}\n\nfunction validateFunctionComponentInDev(workInProgress, Component) {\n {\n if (Component) {\n if (Component.childContextTypes) {\n error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component');\n }\n }\n\n if (workInProgress.ref !== null) {\n var info = '';\n var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n\n if (ownerName) {\n info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n }\n\n var warningKey = ownerName || workInProgress._debugID || '';\n var debugSource = workInProgress._debugSource;\n\n if (debugSource) {\n warningKey = debugSource.fileName + ':' + debugSource.lineNumber;\n }\n\n if (!didWarnAboutFunctionRefs[warningKey]) {\n didWarnAboutFunctionRefs[warningKey] = true;\n\n error('Function components cannot be given refs. ' + 'Attempts to access this ref will fail. ' + 'Did you mean to use React.forwardRef()?%s', info);\n }\n }\n\n if (typeof Component.getDerivedStateFromProps === 'function') {\n var _componentName3 = getComponentName(Component) || 'Unknown';\n\n if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {\n error('%s: Function components do not support getDerivedStateFromProps.', _componentName3);\n\n didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;\n }\n }\n\n if (typeof Component.contextType === 'object' && Component.contextType !== null) {\n var _componentName4 = getComponentName(Component) || 'Unknown';\n\n if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {\n error('%s: Function components do not support contextType.', _componentName4);\n\n didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;\n }\n }\n }\n}\n\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n retryLane: NoLane\n};\n\nfunction mountSuspenseOffscreenState(renderLanes) {\n return {\n baseLanes: renderLanes\n };\n}\n\nfunction updateSuspenseOffscreenState(prevOffscreenState, renderLanes) {\n return {\n baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes)\n };\n} // TODO: Probably should inline this back\n\n\nfunction shouldRemainOnFallback(suspenseContext, current, workInProgress, renderLanes) {\n // If we're already showing a fallback, there are cases where we need to\n // remain on that fallback regardless of whether the content has resolved.\n // For example, SuspenseList coordinates when nested content appears.\n if (current !== null) {\n var suspenseState = current.memoizedState;\n\n if (suspenseState === null) {\n // Currently showing content. Don't hide it, even if ForceSuspenseFallack\n // is true. More precise name might be \"ForceRemainSuspenseFallback\".\n // Note: This is a factoring smell. Can't remain on a fallback if there's\n // no fallback to remain on.\n return false;\n }\n } // Not currently showing content. Consult the Suspense context.\n\n\n return hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n}\n\nfunction getRemainingWorkInPrimaryTree(current, renderLanes) {\n // TODO: Should not remove render lanes that were pinged during this render\n return removeLanes(current.childLanes, renderLanes);\n}\n\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps; // This is used by DevTools to force a boundary to suspend.\n\n {\n if (shouldSuspend(workInProgress)) {\n workInProgress.flags |= DidCapture;\n }\n }\n\n var suspenseContext = suspenseStackCursor.current;\n var showFallback = false;\n var didSuspend = (workInProgress.flags & DidCapture) !== NoFlags;\n\n if (didSuspend || shouldRemainOnFallback(suspenseContext, current)) {\n // Something in this boundary's subtree already suspended. Switch to\n // rendering the fallback children.\n showFallback = true;\n workInProgress.flags &= ~DidCapture;\n } else {\n // Attempting the main content\n if (current === null || current.memoizedState !== null) {\n // This is a new mount or this boundary is already showing a fallback state.\n // Mark this subtree context as having at least one invisible parent that could\n // handle the fallback state.\n // Boundaries without fallbacks or should be avoided are not considered since\n // they cannot handle preferred fallback states.\n if (nextProps.fallback !== undefined && nextProps.unstable_avoidThisFallback !== true) {\n suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext);\n }\n }\n }\n\n suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n pushSuspenseContext(workInProgress, suspenseContext); // OK, the next part is confusing. We're about to reconcile the Suspense\n // boundary's children. This involves some custom reconcilation logic. Two\n // main reasons this is so complicated.\n //\n // First, Legacy Mode has different semantics for backwards compatibility. The\n // primary tree will commit in an inconsistent state, so when we do the\n // second pass to render the fallback, we do some exceedingly, uh, clever\n // hacks to make that not totally break. Like transferring effects and\n // deletions from hidden tree. In Concurrent Mode, it's much simpler,\n // because we bailout on the primary tree completely and leave it in its old\n // state, no effects. Same as what we do for Offscreen (except that\n // Offscreen doesn't have the first render pass).\n //\n // Second is hydration. During hydration, the Suspense fiber has a slightly\n // different layout, where the child points to a dehydrated fragment, which\n // contains the DOM rendered by the server.\n //\n // Third, even if you set all that aside, Suspense is like error boundaries in\n // that we first we try to render one tree, and if that fails, we render again\n // and switch to a different tree. Like a try/catch block. So we have to track\n // which branch we're currently rendering. Ideally we would model this using\n // a stack.\n\n if (current === null) {\n // Initial mount\n // If we're currently hydrating, try to hydrate this boundary.\n // But only if this has a fallback.\n if (nextProps.fallback !== undefined) {\n tryToClaimNextHydratableInstance(workInProgress); // This could've been a dehydrated suspense component.\n }\n\n var nextPrimaryChildren = nextProps.children;\n var nextFallbackChildren = nextProps.fallback;\n\n if (showFallback) {\n var fallbackFragment = mountSuspenseFallbackChildren(workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n var primaryChildFragment = workInProgress.child;\n primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes);\n workInProgress.memoizedState = SUSPENDED_MARKER;\n return fallbackFragment;\n } else if (typeof nextProps.unstable_expectedLoadTime === 'number') {\n // This is a CPU-bound tree. Skip this tree and show a placeholder to\n // unblock the surrounding content. Then immediately retry after the\n // initial commit.\n var _fallbackFragment = mountSuspenseFallbackChildren(workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n\n var _primaryChildFragment = workInProgress.child;\n _primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes);\n workInProgress.memoizedState = SUSPENDED_MARKER; // Since nothing actually suspended, there will nothing to ping this to\n // get it started back up to attempt the next item. While in terms of\n // priority this work has the same priority as this current render, it's\n // not part of the same transition once the transition has committed. If\n // it's sync, we still want to yield so that it can be painted.\n // Conceptually, this is really the same as pinging. We can use any\n // RetryLane even if it's the one currently rendering since we're leaving\n // it behind on this node.\n\n workInProgress.lanes = SomeRetryLane;\n\n {\n markSpawnedWork(SomeRetryLane);\n }\n\n return _fallbackFragment;\n } else {\n return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren, renderLanes);\n }\n } else {\n // This is an update.\n // If the current fiber has a SuspenseState, that means it's already showing\n // a fallback.\n var prevState = current.memoizedState;\n\n if (prevState !== null) {\n\n if (showFallback) {\n var _nextFallbackChildren2 = nextProps.fallback;\n var _nextPrimaryChildren2 = nextProps.children;\n\n var _fallbackChildFragment = updateSuspenseFallbackChildren(current, workInProgress, _nextPrimaryChildren2, _nextFallbackChildren2, renderLanes);\n\n var _primaryChildFragment3 = workInProgress.child;\n var prevOffscreenState = current.child.memoizedState;\n _primaryChildFragment3.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes);\n _primaryChildFragment3.childLanes = getRemainingWorkInPrimaryTree(current, renderLanes);\n workInProgress.memoizedState = SUSPENDED_MARKER;\n return _fallbackChildFragment;\n } else {\n var _nextPrimaryChildren3 = nextProps.children;\n\n var _primaryChildFragment4 = updateSuspensePrimaryChildren(current, workInProgress, _nextPrimaryChildren3, renderLanes);\n\n workInProgress.memoizedState = null;\n return _primaryChildFragment4;\n }\n } else {\n // The current tree is not already showing a fallback.\n if (showFallback) {\n // Timed out.\n var _nextFallbackChildren3 = nextProps.fallback;\n var _nextPrimaryChildren4 = nextProps.children;\n\n var _fallbackChildFragment2 = updateSuspenseFallbackChildren(current, workInProgress, _nextPrimaryChildren4, _nextFallbackChildren3, renderLanes);\n\n var _primaryChildFragment5 = workInProgress.child;\n var _prevOffscreenState = current.child.memoizedState;\n _primaryChildFragment5.memoizedState = _prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(_prevOffscreenState, renderLanes);\n _primaryChildFragment5.childLanes = getRemainingWorkInPrimaryTree(current, renderLanes); // Skip the primary children, and continue working on the\n // fallback children.\n\n workInProgress.memoizedState = SUSPENDED_MARKER;\n return _fallbackChildFragment2;\n } else {\n // Still haven't timed out. Continue rendering the children, like we\n // normally do.\n var _nextPrimaryChildren5 = nextProps.children;\n\n var _primaryChildFragment6 = updateSuspensePrimaryChildren(current, workInProgress, _nextPrimaryChildren5, renderLanes);\n\n workInProgress.memoizedState = null;\n return _primaryChildFragment6;\n }\n }\n }\n}\n\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren, renderLanes) {\n var mode = workInProgress.mode;\n var primaryChildProps = {\n mode: 'visible',\n children: primaryChildren\n };\n var primaryChildFragment = createFiberFromOffscreen(primaryChildProps, mode, renderLanes, null);\n primaryChildFragment.return = workInProgress;\n workInProgress.child = primaryChildFragment;\n return primaryChildFragment;\n}\n\nfunction mountSuspenseFallbackChildren(workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n var mode = workInProgress.mode;\n var progressedPrimaryFragment = workInProgress.child;\n var primaryChildProps = {\n mode: 'hidden',\n children: primaryChildren\n };\n var primaryChildFragment;\n var fallbackChildFragment;\n\n if ((mode & BlockingMode) === NoMode && progressedPrimaryFragment !== null) {\n // In legacy mode, we commit the primary tree as if it successfully\n // completed, even though it's in an inconsistent state.\n primaryChildFragment = progressedPrimaryFragment;\n primaryChildFragment.childLanes = NoLanes;\n primaryChildFragment.pendingProps = primaryChildProps;\n\n if ( workInProgress.mode & ProfileMode) {\n // Reset the durations from the first pass so they aren't included in the\n // final amounts. This seems counterintuitive, since we're intentionally\n // not measuring part of the render phase, but this makes it match what we\n // do in Concurrent Mode.\n primaryChildFragment.actualDuration = 0;\n primaryChildFragment.actualStartTime = -1;\n primaryChildFragment.selfBaseDuration = 0;\n primaryChildFragment.treeBaseDuration = 0;\n }\n\n fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n } else {\n primaryChildFragment = createFiberFromOffscreen(primaryChildProps, mode, NoLanes, null);\n fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n }\n\n primaryChildFragment.return = workInProgress;\n fallbackChildFragment.return = workInProgress;\n primaryChildFragment.sibling = fallbackChildFragment;\n workInProgress.child = primaryChildFragment;\n return fallbackChildFragment;\n}\n\nfunction createWorkInProgressOffscreenFiber(current, offscreenProps) {\n // The props argument to `createWorkInProgress` is `any` typed, so we use this\n // wrapper function to constrain it.\n return createWorkInProgress(current, offscreenProps);\n}\n\nfunction updateSuspensePrimaryChildren(current, workInProgress, primaryChildren, renderLanes) {\n var currentPrimaryChildFragment = current.child;\n var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n var primaryChildFragment = createWorkInProgressOffscreenFiber(currentPrimaryChildFragment, {\n mode: 'visible',\n children: primaryChildren\n });\n\n if ((workInProgress.mode & BlockingMode) === NoMode) {\n primaryChildFragment.lanes = renderLanes;\n }\n\n primaryChildFragment.return = workInProgress;\n primaryChildFragment.sibling = null;\n\n if (currentFallbackChildFragment !== null) {\n // Delete the fallback child fragment\n currentFallbackChildFragment.nextEffect = null;\n currentFallbackChildFragment.flags = Deletion;\n workInProgress.firstEffect = workInProgress.lastEffect = currentFallbackChildFragment;\n }\n\n workInProgress.child = primaryChildFragment;\n return primaryChildFragment;\n}\n\nfunction updateSuspenseFallbackChildren(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n var mode = workInProgress.mode;\n var currentPrimaryChildFragment = current.child;\n var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n var primaryChildProps = {\n mode: 'hidden',\n children: primaryChildren\n };\n var primaryChildFragment;\n\n if ( // In legacy mode, we commit the primary tree as if it successfully\n // completed, even though it's in an inconsistent state.\n (mode & BlockingMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was\n // already cloned. In legacy mode, the only case where this isn't true is\n // when DevTools forces us to display a fallback; we skip the first render\n // pass entirely and go straight to rendering the fallback. (In Concurrent\n // Mode, SuspenseList can also trigger this scenario, but this is a legacy-\n // only codepath.)\n workInProgress.child !== currentPrimaryChildFragment) {\n var progressedPrimaryFragment = workInProgress.child;\n primaryChildFragment = progressedPrimaryFragment;\n primaryChildFragment.childLanes = NoLanes;\n primaryChildFragment.pendingProps = primaryChildProps;\n\n if ( workInProgress.mode & ProfileMode) {\n // Reset the durations from the first pass so they aren't included in the\n // final amounts. This seems counterintuitive, since we're intentionally\n // not measuring part of the render phase, but this makes it match what we\n // do in Concurrent Mode.\n primaryChildFragment.actualDuration = 0;\n primaryChildFragment.actualStartTime = -1;\n primaryChildFragment.selfBaseDuration = currentPrimaryChildFragment.selfBaseDuration;\n primaryChildFragment.treeBaseDuration = currentPrimaryChildFragment.treeBaseDuration;\n } // The fallback fiber was added as a deletion effect during the first pass.\n // However, since we're going to remain on the fallback, we no longer want\n // to delete it. So we need to remove it from the list. Deletions are stored\n // on the same list as effects. We want to keep the effects from the primary\n // tree. So we copy the primary child fragment's effect list, which does not\n // include the fallback deletion effect.\n\n\n var progressedLastEffect = primaryChildFragment.lastEffect;\n\n if (progressedLastEffect !== null) {\n workInProgress.firstEffect = primaryChildFragment.firstEffect;\n workInProgress.lastEffect = progressedLastEffect;\n progressedLastEffect.nextEffect = null;\n } else {\n // TODO: Reset this somewhere else? Lol legacy mode is so weird.\n workInProgress.firstEffect = workInProgress.lastEffect = null;\n }\n } else {\n primaryChildFragment = createWorkInProgressOffscreenFiber(currentPrimaryChildFragment, primaryChildProps);\n }\n\n var fallbackChildFragment;\n\n if (currentFallbackChildFragment !== null) {\n fallbackChildFragment = createWorkInProgress(currentFallbackChildFragment, fallbackChildren);\n } else {\n fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null); // Needs a placement effect because the parent (the Suspense boundary) already\n // mounted but this is a new fiber.\n\n fallbackChildFragment.flags |= Placement;\n }\n\n fallbackChildFragment.return = workInProgress;\n primaryChildFragment.return = workInProgress;\n primaryChildFragment.sibling = fallbackChildFragment;\n workInProgress.child = primaryChildFragment;\n return fallbackChildFragment;\n}\n\nfunction scheduleWorkOnFiber(fiber, renderLanes) {\n fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n var alternate = fiber.alternate;\n\n if (alternate !== null) {\n alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n }\n\n scheduleWorkOnParentPath(fiber.return, renderLanes);\n}\n\nfunction propagateSuspenseContextChange(workInProgress, firstChild, renderLanes) {\n // Mark any Suspense boundaries with fallbacks as having work to do.\n // If they were previously forced into fallbacks, they may now be able\n // to unblock.\n var node = firstChild;\n\n while (node !== null) {\n if (node.tag === SuspenseComponent) {\n var state = node.memoizedState;\n\n if (state !== null) {\n scheduleWorkOnFiber(node, renderLanes);\n }\n } else if (node.tag === SuspenseListComponent) {\n // If the tail is hidden there might not be an Suspense boundaries\n // to schedule work on. In this case we have to schedule it on the\n // list itself.\n // We don't have to traverse to the children of the list since\n // the list will propagate the change when it rerenders.\n scheduleWorkOnFiber(node, renderLanes);\n } else if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === workInProgress) {\n return;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === workInProgress) {\n return;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n}\n\nfunction findLastContentRow(firstChild) {\n // This is going to find the last row among these children that is already\n // showing content on the screen, as opposed to being in fallback state or\n // new. If a row has multiple Suspense boundaries, any of them being in the\n // fallback state, counts as the whole row being in a fallback state.\n // Note that the \"rows\" will be workInProgress, but any nested children\n // will still be current since we haven't rendered them yet. The mounted\n // order may not be the same as the new order. We use the new order.\n var row = firstChild;\n var lastContentRow = null;\n\n while (row !== null) {\n var currentRow = row.alternate; // New rows can't be content rows.\n\n if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n lastContentRow = row;\n }\n\n row = row.sibling;\n }\n\n return lastContentRow;\n}\n\nfunction validateRevealOrder(revealOrder) {\n {\n if (revealOrder !== undefined && revealOrder !== 'forwards' && revealOrder !== 'backwards' && revealOrder !== 'together' && !didWarnAboutRevealOrder[revealOrder]) {\n didWarnAboutRevealOrder[revealOrder] = true;\n\n if (typeof revealOrder === 'string') {\n switch (revealOrder.toLowerCase()) {\n case 'together':\n case 'forwards':\n case 'backwards':\n {\n error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. ' + 'Use lowercase \"%s\" instead.', revealOrder, revealOrder.toLowerCase());\n\n break;\n }\n\n case 'forward':\n case 'backward':\n {\n error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. ' + 'React uses the -s suffix in the spelling. Use \"%ss\" instead.', revealOrder, revealOrder.toLowerCase());\n\n break;\n }\n\n default:\n error('\"%s\" is not a supported revealOrder on <SuspenseList />. ' + 'Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n\n break;\n }\n } else {\n error('%s is not a supported value for revealOrder on <SuspenseList />. ' + 'Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n }\n }\n }\n}\n\nfunction validateTailOptions(tailMode, revealOrder) {\n {\n if (tailMode !== undefined && !didWarnAboutTailOptions[tailMode]) {\n if (tailMode !== 'collapsed' && tailMode !== 'hidden') {\n didWarnAboutTailOptions[tailMode] = true;\n\n error('\"%s\" is not a supported value for tail on <SuspenseList />. ' + 'Did you mean \"collapsed\" or \"hidden\"?', tailMode);\n } else if (revealOrder !== 'forwards' && revealOrder !== 'backwards') {\n didWarnAboutTailOptions[tailMode] = true;\n\n error('<SuspenseList tail=\"%s\" /> is only valid if revealOrder is ' + '\"forwards\" or \"backwards\". ' + 'Did you mean to specify revealOrder=\"forwards\"?', tailMode);\n }\n }\n }\n}\n\nfunction validateSuspenseListNestedChild(childSlot, index) {\n {\n var isArray = Array.isArray(childSlot);\n var isIterable = !isArray && typeof getIteratorFn(childSlot) === 'function';\n\n if (isArray || isIterable) {\n var type = isArray ? 'array' : 'iterable';\n\n error('A nested %s was passed to row #%s in <SuspenseList />. Wrap it in ' + 'an additional SuspenseList to configure its revealOrder: ' + '<SuspenseList revealOrder=...> ... ' + '<SuspenseList revealOrder=...>{%s}</SuspenseList> ... ' + '</SuspenseList>', type, index, type);\n\n return false;\n }\n }\n\n return true;\n}\n\nfunction validateSuspenseListChildren(children, revealOrder) {\n {\n if ((revealOrder === 'forwards' || revealOrder === 'backwards') && children !== undefined && children !== null && children !== false) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n if (!validateSuspenseListNestedChild(children[i], i)) {\n return;\n }\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var childrenIterator = iteratorFn.call(children);\n\n if (childrenIterator) {\n var step = childrenIterator.next();\n var _i = 0;\n\n for (; !step.done; step = childrenIterator.next()) {\n if (!validateSuspenseListNestedChild(step.value, _i)) {\n return;\n }\n\n _i++;\n }\n }\n } else {\n error('A single row was passed to a <SuspenseList revealOrder=\"%s\" />. ' + 'This is not useful since it needs multiple rows. ' + 'Did you mean to pass multiple children or an array?', revealOrder);\n }\n }\n }\n }\n}\n\nfunction initSuspenseListRenderState(workInProgress, isBackwards, tail, lastContentRow, tailMode, lastEffectBeforeRendering) {\n var renderState = workInProgress.memoizedState;\n\n if (renderState === null) {\n workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode,\n lastEffect: lastEffectBeforeRendering\n };\n } else {\n // We can reuse the existing object from previous renders.\n renderState.isBackwards = isBackwards;\n renderState.rendering = null;\n renderState.renderingStartTime = 0;\n renderState.last = lastContentRow;\n renderState.tail = tail;\n renderState.tailMode = tailMode;\n renderState.lastEffect = lastEffectBeforeRendering;\n }\n} // This can end up rendering this component multiple passes.\n// The first pass splits the children fibers into two sets. A head and tail.\n// We first render the head. If anything is in fallback state, we do another\n// pass through beginWork to rerender all children (including the tail) with\n// the force suspend context. If the first render didn't have anything in\n// in fallback state. Then we render each row in the tail one-by-one.\n// That happens in the completeWork phase without going back to beginWork.\n\n\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps;\n var revealOrder = nextProps.revealOrder;\n var tailMode = nextProps.tail;\n var newChildren = nextProps.children;\n validateRevealOrder(revealOrder);\n validateTailOptions(tailMode, revealOrder);\n validateSuspenseListChildren(newChildren, revealOrder);\n reconcileChildren(current, workInProgress, newChildren, renderLanes);\n var suspenseContext = suspenseStackCursor.current;\n var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n\n if (shouldForceFallback) {\n suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n workInProgress.flags |= DidCapture;\n } else {\n var didSuspendBefore = current !== null && (current.flags & DidCapture) !== NoFlags;\n\n if (didSuspendBefore) {\n // If we previously forced a fallback, we need to schedule work\n // on any nested boundaries to let them know to try to render\n // again. This is the same as context updating.\n propagateSuspenseContextChange(workInProgress, workInProgress.child, renderLanes);\n }\n\n suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n }\n\n pushSuspenseContext(workInProgress, suspenseContext);\n\n if ((workInProgress.mode & BlockingMode) === NoMode) {\n // In legacy mode, SuspenseList doesn't work so we just\n // use make it a noop by treating it as the default revealOrder.\n workInProgress.memoizedState = null;\n } else {\n switch (revealOrder) {\n case 'forwards':\n {\n var lastContentRow = findLastContentRow(workInProgress.child);\n var tail;\n\n if (lastContentRow === null) {\n // The whole list is part of the tail.\n // TODO: We could fast path by just rendering the tail now.\n tail = workInProgress.child;\n workInProgress.child = null;\n } else {\n // Disconnect the tail rows after the content row.\n // We're going to render them separately later.\n tail = lastContentRow.sibling;\n lastContentRow.sibling = null;\n }\n\n initSuspenseListRenderState(workInProgress, false, // isBackwards\n tail, lastContentRow, tailMode, workInProgress.lastEffect);\n break;\n }\n\n case 'backwards':\n {\n // We're going to find the first row that has existing content.\n // At the same time we're going to reverse the list of everything\n // we pass in the meantime. That's going to be our tail in reverse\n // order.\n var _tail = null;\n var row = workInProgress.child;\n workInProgress.child = null;\n\n while (row !== null) {\n var currentRow = row.alternate; // New rows can't be content rows.\n\n if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n // This is the beginning of the main content.\n workInProgress.child = row;\n break;\n }\n\n var nextRow = row.sibling;\n row.sibling = _tail;\n _tail = row;\n row = nextRow;\n } // TODO: If workInProgress.child is null, we can continue on the tail immediately.\n\n\n initSuspenseListRenderState(workInProgress, true, // isBackwards\n _tail, null, // last\n tailMode, workInProgress.lastEffect);\n break;\n }\n\n case 'together':\n {\n initSuspenseListRenderState(workInProgress, false, // isBackwards\n null, // tail\n null, // last\n undefined, workInProgress.lastEffect);\n break;\n }\n\n default:\n {\n // The default reveal order is the same as not having\n // a boundary.\n workInProgress.memoizedState = null;\n }\n }\n }\n\n return workInProgress.child;\n}\n\nfunction updatePortalComponent(current, workInProgress, renderLanes) {\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n var nextChildren = workInProgress.pendingProps;\n\n if (current === null) {\n // Portals are special because we don't append the children during mount\n // but at commit. Therefore we need to track insertions which the normal\n // flow doesn't do during mount. This doesn't happen at the root because\n // the root always starts with a \"current\" with a null child.\n // TODO: Consider unifying this with how the root works.\n workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n } else {\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n }\n\n return workInProgress.child;\n}\n\nvar hasWarnedAboutUsingNoValuePropOnContextProvider = false;\n\nfunction updateContextProvider(current, workInProgress, renderLanes) {\n var providerType = workInProgress.type;\n var context = providerType._context;\n var newProps = workInProgress.pendingProps;\n var oldProps = workInProgress.memoizedProps;\n var newValue = newProps.value;\n\n {\n if (!('value' in newProps)) {\n if (!hasWarnedAboutUsingNoValuePropOnContextProvider) {\n hasWarnedAboutUsingNoValuePropOnContextProvider = true;\n\n error('The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?');\n }\n }\n\n var providerPropTypes = workInProgress.type.propTypes;\n\n if (providerPropTypes) {\n checkPropTypes(providerPropTypes, newProps, 'prop', 'Context.Provider');\n }\n }\n\n pushProvider(workInProgress, newValue);\n\n if (oldProps !== null) {\n var oldValue = oldProps.value;\n var changedBits = calculateChangedBits(context, newValue, oldValue);\n\n if (changedBits === 0) {\n // No change. Bailout early if children are the same.\n if (oldProps.children === newProps.children && !hasContextChanged()) {\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n } else {\n // The context value changed. Search for matching consumers and schedule\n // them to update.\n propagateContextChange(workInProgress, context, changedBits, renderLanes);\n }\n }\n\n var newChildren = newProps.children;\n reconcileChildren(current, workInProgress, newChildren, renderLanes);\n return workInProgress.child;\n}\n\nvar hasWarnedAboutUsingContextAsConsumer = false;\n\nfunction updateContextConsumer(current, workInProgress, renderLanes) {\n var context = workInProgress.type; // The logic below for Context differs depending on PROD or DEV mode. In\n // DEV mode, we create a separate object for Context.Consumer that acts\n // like a proxy to Context. This proxy object adds unnecessary code in PROD\n // so we use the old behaviour (Context.Consumer references Context) to\n // reduce size and overhead. The separate object references context via\n // a property called \"_context\", which also gives us the ability to check\n // in DEV mode if this property exists or not and warn if it does not.\n\n {\n if (context._context === undefined) {\n // This may be because it's a Context (rather than a Consumer).\n // Or it may be because it's older React where they're the same thing.\n // We only want to warn if we're sure it's a new React.\n if (context !== context.Consumer) {\n if (!hasWarnedAboutUsingContextAsConsumer) {\n hasWarnedAboutUsingContextAsConsumer = true;\n\n error('Rendering <Context> directly is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n }\n }\n } else {\n context = context._context;\n }\n }\n\n var newProps = workInProgress.pendingProps;\n var render = newProps.children;\n\n {\n if (typeof render !== 'function') {\n error('A context consumer was rendered with multiple children, or a child ' + \"that isn't a function. A context consumer expects a single child \" + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.');\n }\n }\n\n prepareToReadContext(workInProgress, renderLanes);\n var newValue = readContext(context, newProps.unstable_observedBits);\n var newChildren;\n\n {\n ReactCurrentOwner$1.current = workInProgress;\n setIsRendering(true);\n newChildren = render(newValue);\n setIsRendering(false);\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n reconcileChildren(current, workInProgress, newChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction markWorkInProgressReceivedUpdate() {\n didReceiveUpdate = true;\n}\n\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n if (current !== null) {\n // Reuse previous dependencies\n workInProgress.dependencies = current.dependencies;\n }\n\n {\n // Don't update \"base\" render times for bailouts.\n stopProfilerTimerIfRunning();\n }\n\n markSkippedUpdateLanes(workInProgress.lanes); // Check if the children have any pending work.\n\n if (!includesSomeLane(renderLanes, workInProgress.childLanes)) {\n // The children don't have any work either. We can skip them.\n // TODO: Once we add back resuming, we should check if the children are\n // a work-in-progress set. If so, we need to transfer their effects.\n return null;\n } else {\n // This fiber doesn't have work, but its subtree does. Clone the child\n // fibers and continue.\n cloneChildFibers(current, workInProgress);\n return workInProgress.child;\n }\n}\n\nfunction remountFiber(current, oldWorkInProgress, newWorkInProgress) {\n {\n var returnFiber = oldWorkInProgress.return;\n\n if (returnFiber === null) {\n throw new Error('Cannot swap the root fiber.');\n } // Disconnect from the old current.\n // It will get deleted.\n\n\n current.alternate = null;\n oldWorkInProgress.alternate = null; // Connect to the new tree.\n\n newWorkInProgress.index = oldWorkInProgress.index;\n newWorkInProgress.sibling = oldWorkInProgress.sibling;\n newWorkInProgress.return = oldWorkInProgress.return;\n newWorkInProgress.ref = oldWorkInProgress.ref; // Replace the child/sibling pointers above it.\n\n if (oldWorkInProgress === returnFiber.child) {\n returnFiber.child = newWorkInProgress;\n } else {\n var prevSibling = returnFiber.child;\n\n if (prevSibling === null) {\n throw new Error('Expected parent to have a child.');\n }\n\n while (prevSibling.sibling !== oldWorkInProgress) {\n prevSibling = prevSibling.sibling;\n\n if (prevSibling === null) {\n throw new Error('Expected to find the previous sibling.');\n }\n }\n\n prevSibling.sibling = newWorkInProgress;\n } // Delete the old fiber and place the new one.\n // Since the old fiber is disconnected, we have to schedule it manually.\n\n\n var last = returnFiber.lastEffect;\n\n if (last !== null) {\n last.nextEffect = current;\n returnFiber.lastEffect = current;\n } else {\n returnFiber.firstEffect = returnFiber.lastEffect = current;\n }\n\n current.nextEffect = null;\n current.flags = Deletion;\n newWorkInProgress.flags |= Placement; // Restart work from the new fiber.\n\n return newWorkInProgress;\n }\n}\n\nfunction beginWork(current, workInProgress, renderLanes) {\n var updateLanes = workInProgress.lanes;\n\n {\n if (workInProgress._debugNeedsRemount && current !== null) {\n // This will restart the begin phase with a new fiber.\n return remountFiber(current, workInProgress, createFiberFromTypeAndProps(workInProgress.type, workInProgress.key, workInProgress.pendingProps, workInProgress._debugOwner || null, workInProgress.mode, workInProgress.lanes));\n }\n }\n\n if (current !== null) {\n var oldProps = current.memoizedProps;\n var newProps = workInProgress.pendingProps;\n\n if (oldProps !== newProps || hasContextChanged() || ( // Force a re-render if the implementation changed due to hot reload:\n workInProgress.type !== current.type )) {\n // If props or context changed, mark the fiber as having performed work.\n // This may be unset if the props are determined to be equal later (memo).\n didReceiveUpdate = true;\n } else if (!includesSomeLane(renderLanes, updateLanes)) {\n didReceiveUpdate = false; // This fiber does not have any pending work. Bailout without entering\n // the begin phase. There's still some bookkeeping we that needs to be done\n // in this optimized path, mostly pushing stuff onto the stack.\n\n switch (workInProgress.tag) {\n case HostRoot:\n pushHostRootContext(workInProgress);\n resetHydrationState();\n break;\n\n case HostComponent:\n pushHostContext(workInProgress);\n break;\n\n case ClassComponent:\n {\n var Component = workInProgress.type;\n\n if (isContextProvider(Component)) {\n pushContextProvider(workInProgress);\n }\n\n break;\n }\n\n case HostPortal:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n\n case ContextProvider:\n {\n var newValue = workInProgress.memoizedProps.value;\n pushProvider(workInProgress, newValue);\n break;\n }\n\n case Profiler:\n {\n // Profiler should only call onRender when one of its descendants actually rendered.\n var hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);\n\n if (hasChildWork) {\n workInProgress.flags |= Update;\n } // Reset effect durations for the next eventual effect phase.\n // These are reset during render to allow the DevTools commit hook a chance to read them,\n\n\n var stateNode = workInProgress.stateNode;\n stateNode.effectDuration = 0;\n stateNode.passiveEffectDuration = 0;\n }\n\n break;\n\n case SuspenseComponent:\n {\n var state = workInProgress.memoizedState;\n\n if (state !== null) {\n // whether to retry the primary children, or to skip over it and\n // go straight to the fallback. Check the priority of the primary\n // child fragment.\n\n\n var primaryChildFragment = workInProgress.child;\n var primaryChildLanes = primaryChildFragment.childLanes;\n\n if (includesSomeLane(renderLanes, primaryChildLanes)) {\n // The primary children have pending work. Use the normal path\n // to attempt to render the primary children again.\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n } else {\n // The primary child fragment does not have pending work marked\n // on it\n pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // The primary children do not have pending work with sufficient\n // priority. Bailout.\n\n var child = bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n\n if (child !== null) {\n // The fallback children have pending work. Skip over the\n // primary children and work on the fallback.\n return child.sibling;\n } else {\n return null;\n }\n }\n } else {\n pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n }\n\n break;\n }\n\n case SuspenseListComponent:\n {\n var didSuspendBefore = (current.flags & DidCapture) !== NoFlags;\n\n var _hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);\n\n if (didSuspendBefore) {\n if (_hasChildWork) {\n // If something was in fallback state last time, and we have all the\n // same children then we're still in progressive loading state.\n // Something might get unblocked by state updates or retries in the\n // tree which will affect the tail. So we need to use the normal\n // path to compute the correct tail.\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n } // If none of the children had any work, that means that none of\n // them got retried so they'll still be blocked in the same way\n // as before. We can fast bail out.\n\n\n workInProgress.flags |= DidCapture;\n } // If nothing suspended before and we're rendering the same children,\n // then the tail doesn't matter. Anything new that suspends will work\n // in the \"together\" mode, so we can continue from the state we had.\n\n\n var renderState = workInProgress.memoizedState;\n\n if (renderState !== null) {\n // Reset to the \"together\" mode in case we've started a different\n // update in the past but didn't complete it.\n renderState.rendering = null;\n renderState.tail = null;\n renderState.lastEffect = null;\n }\n\n pushSuspenseContext(workInProgress, suspenseStackCursor.current);\n\n if (_hasChildWork) {\n break;\n } else {\n // If none of the children had any work, that means that none of\n // them got retried so they'll still be blocked in the same way\n // as before. We can fast bail out.\n return null;\n }\n }\n\n case OffscreenComponent:\n case LegacyHiddenComponent:\n {\n // Need to check if the tree still needs to be deferred. This is\n // almost identical to the logic used in the normal update path,\n // so we'll just enter that. The only difference is we'll bail out\n // at the next level instead of this one, because the child props\n // have not changed. Which is fine.\n // TODO: Probably should refactor `beginWork` to split the bailout\n // path from the normal path. I'm tempted to do a labeled break here\n // but I won't :)\n workInProgress.lanes = NoLanes;\n return updateOffscreenComponent(current, workInProgress, renderLanes);\n }\n }\n\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n } else {\n if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n // This is a special case that only exists for legacy mode.\n // See https://github.com/facebook/react/pull/19216.\n didReceiveUpdate = true;\n } else {\n // An update was scheduled on this fiber, but there are no new props\n // nor legacy context. Set this to false. If an update queue or context\n // consumer produces a changed value, it will set this to true. Otherwise,\n // the component will assume the children have not changed and bail out.\n didReceiveUpdate = false;\n }\n }\n } else {\n didReceiveUpdate = false;\n } // Before entering the begin phase, clear pending update priority.\n // TODO: This assumes that we're about to evaluate the component and process\n // the update queue. However, there's an exception: SimpleMemoComponent\n // sometimes bails out later in the begin phase. This indicates that we should\n // move this assignment out of the common path and into each branch.\n\n\n workInProgress.lanes = NoLanes;\n\n switch (workInProgress.tag) {\n case IndeterminateComponent:\n {\n return mountIndeterminateComponent(current, workInProgress, workInProgress.type, renderLanes);\n }\n\n case LazyComponent:\n {\n var elementType = workInProgress.elementType;\n return mountLazyComponent(current, workInProgress, elementType, updateLanes, renderLanes);\n }\n\n case FunctionComponent:\n {\n var _Component = workInProgress.type;\n var unresolvedProps = workInProgress.pendingProps;\n var resolvedProps = workInProgress.elementType === _Component ? unresolvedProps : resolveDefaultProps(_Component, unresolvedProps);\n return updateFunctionComponent(current, workInProgress, _Component, resolvedProps, renderLanes);\n }\n\n case ClassComponent:\n {\n var _Component2 = workInProgress.type;\n var _unresolvedProps = workInProgress.pendingProps;\n\n var _resolvedProps = workInProgress.elementType === _Component2 ? _unresolvedProps : resolveDefaultProps(_Component2, _unresolvedProps);\n\n return updateClassComponent(current, workInProgress, _Component2, _resolvedProps, renderLanes);\n }\n\n case HostRoot:\n return updateHostRoot(current, workInProgress, renderLanes);\n\n case HostComponent:\n return updateHostComponent(current, workInProgress, renderLanes);\n\n case HostText:\n return updateHostText(current, workInProgress);\n\n case SuspenseComponent:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n\n case HostPortal:\n return updatePortalComponent(current, workInProgress, renderLanes);\n\n case ForwardRef:\n {\n var type = workInProgress.type;\n var _unresolvedProps2 = workInProgress.pendingProps;\n\n var _resolvedProps2 = workInProgress.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);\n\n return updateForwardRef(current, workInProgress, type, _resolvedProps2, renderLanes);\n }\n\n case Fragment:\n return updateFragment(current, workInProgress, renderLanes);\n\n case Mode:\n return updateMode(current, workInProgress, renderLanes);\n\n case Profiler:\n return updateProfiler(current, workInProgress, renderLanes);\n\n case ContextProvider:\n return updateContextProvider(current, workInProgress, renderLanes);\n\n case ContextConsumer:\n return updateContextConsumer(current, workInProgress, renderLanes);\n\n case MemoComponent:\n {\n var _type2 = workInProgress.type;\n var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props.\n\n var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3);\n\n {\n if (workInProgress.type !== workInProgress.elementType) {\n var outerPropTypes = _type2.propTypes;\n\n if (outerPropTypes) {\n checkPropTypes(outerPropTypes, _resolvedProps3, // Resolved for outer only\n 'prop', getComponentName(_type2));\n }\n }\n }\n\n _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3);\n return updateMemoComponent(current, workInProgress, _type2, _resolvedProps3, updateLanes, renderLanes);\n }\n\n case SimpleMemoComponent:\n {\n return updateSimpleMemoComponent(current, workInProgress, workInProgress.type, workInProgress.pendingProps, updateLanes, renderLanes);\n }\n\n case IncompleteClassComponent:\n {\n var _Component3 = workInProgress.type;\n var _unresolvedProps4 = workInProgress.pendingProps;\n\n var _resolvedProps4 = workInProgress.elementType === _Component3 ? _unresolvedProps4 : resolveDefaultProps(_Component3, _unresolvedProps4);\n\n return mountIncompleteClassComponent(current, workInProgress, _Component3, _resolvedProps4, renderLanes);\n }\n\n case SuspenseListComponent:\n {\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n }\n\n case FundamentalComponent:\n {\n\n break;\n }\n\n case ScopeComponent:\n {\n\n break;\n }\n\n case Block:\n {\n\n break;\n }\n\n case OffscreenComponent:\n {\n return updateOffscreenComponent(current, workInProgress, renderLanes);\n }\n\n case LegacyHiddenComponent:\n {\n return updateLegacyHiddenComponent(current, workInProgress, renderLanes);\n }\n }\n\n {\n {\n throw Error( \"Unknown unit of work tag (\" + workInProgress.tag + \"). This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n}\n\nfunction markUpdate(workInProgress) {\n // Tag the fiber with an update effect. This turns a Placement into\n // a PlacementAndUpdate.\n workInProgress.flags |= Update;\n}\n\nfunction markRef$1(workInProgress) {\n workInProgress.flags |= Ref;\n}\n\nvar appendAllChildren;\nvar updateHostContainer;\nvar updateHostComponent$1;\nvar updateHostText$1;\n\n{\n // Mutation mode\n appendAllChildren = function (parent, workInProgress, needsVisibilityToggle, isHidden) {\n // We only have the top Fiber that was created but we need recurse down its\n // children to find all the terminal nodes.\n var node = workInProgress.child;\n\n while (node !== null) {\n if (node.tag === HostComponent || node.tag === HostText) {\n appendInitialChild(parent, node.stateNode);\n } else if (node.tag === HostPortal) ; else if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === workInProgress) {\n return;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === workInProgress) {\n return;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n };\n\n updateHostContainer = function (workInProgress) {// Noop\n };\n\n updateHostComponent$1 = function (current, workInProgress, type, newProps, rootContainerInstance) {\n // If we have an alternate, that means this is an update and we need to\n // schedule a side-effect to do the updates.\n var oldProps = current.memoizedProps;\n\n if (oldProps === newProps) {\n // In mutation mode, this is sufficient for a bailout because\n // we won't touch this node even if children changed.\n return;\n } // If we get updated because one of our children updated, we don't\n // have newProps so we'll have to reuse them.\n // TODO: Split the update API as separate for the props vs. children.\n // Even better would be if children weren't special cased at all tho.\n\n\n var instance = workInProgress.stateNode;\n var currentHostContext = getHostContext(); // TODO: Experiencing an error where oldProps is null. Suggests a host\n // component is hitting the resume path. Figure out why. Possibly\n // related to `hidden`.\n\n var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext); // TODO: Type this specific to this type of component.\n\n workInProgress.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there\n // is a new ref we mark this as an update. All the work is done in commitWork.\n\n if (updatePayload) {\n markUpdate(workInProgress);\n }\n };\n\n updateHostText$1 = function (current, workInProgress, oldText, newText) {\n // If the text differs, mark it as an update. All the work in done in commitWork.\n if (oldText !== newText) {\n markUpdate(workInProgress);\n }\n };\n}\n\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (getIsHydrating()) {\n // If we're hydrating, we should consume as many items as we can\n // so we don't leave any behind.\n return;\n }\n\n switch (renderState.tailMode) {\n case 'hidden':\n {\n // Any insertions at the end of the tail list after this point\n // should be invisible. If there are already mounted boundaries\n // anything before them are not considered for collapsing.\n // Therefore we need to go through the whole tail to find if\n // there are any.\n var tailNode = renderState.tail;\n var lastTailNode = null;\n\n while (tailNode !== null) {\n if (tailNode.alternate !== null) {\n lastTailNode = tailNode;\n }\n\n tailNode = tailNode.sibling;\n } // Next we're simply going to delete all insertions after the\n // last rendered item.\n\n\n if (lastTailNode === null) {\n // All remaining items in the tail are insertions.\n renderState.tail = null;\n } else {\n // Detach the insertion after the last node that was already\n // inserted.\n lastTailNode.sibling = null;\n }\n\n break;\n }\n\n case 'collapsed':\n {\n // Any insertions at the end of the tail list after this point\n // should be invisible. If there are already mounted boundaries\n // anything before them are not considered for collapsing.\n // Therefore we need to go through the whole tail to find if\n // there are any.\n var _tailNode = renderState.tail;\n var _lastTailNode = null;\n\n while (_tailNode !== null) {\n if (_tailNode.alternate !== null) {\n _lastTailNode = _tailNode;\n }\n\n _tailNode = _tailNode.sibling;\n } // Next we're simply going to delete all insertions after the\n // last rendered item.\n\n\n if (_lastTailNode === null) {\n // All remaining items in the tail are insertions.\n if (!hasRenderedATailFallback && renderState.tail !== null) {\n // We suspended during the head. We want to show at least one\n // row at the tail. So we'll keep on and cut off the rest.\n renderState.tail.sibling = null;\n } else {\n renderState.tail = null;\n }\n } else {\n // Detach the insertion after the last node that was already\n // inserted.\n _lastTailNode.sibling = null;\n }\n\n break;\n }\n }\n}\n\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n\n switch (workInProgress.tag) {\n case IndeterminateComponent:\n case LazyComponent:\n case SimpleMemoComponent:\n case FunctionComponent:\n case ForwardRef:\n case Fragment:\n case Mode:\n case Profiler:\n case ContextConsumer:\n case MemoComponent:\n return null;\n\n case ClassComponent:\n {\n var Component = workInProgress.type;\n\n if (isContextProvider(Component)) {\n popContext(workInProgress);\n }\n\n return null;\n }\n\n case HostRoot:\n {\n popHostContainer(workInProgress);\n popTopLevelContextObject(workInProgress);\n resetWorkInProgressVersions();\n var fiberRoot = workInProgress.stateNode;\n\n if (fiberRoot.pendingContext) {\n fiberRoot.context = fiberRoot.pendingContext;\n fiberRoot.pendingContext = null;\n }\n\n if (current === null || current.child === null) {\n // If we hydrated, pop so that we can delete any remaining children\n // that weren't hydrated.\n var wasHydrated = popHydrationState(workInProgress);\n\n if (wasHydrated) {\n // If we hydrated, then we'll need to schedule an update for\n // the commit side-effects on the root.\n markUpdate(workInProgress);\n } else if (!fiberRoot.hydrate) {\n // Schedule an effect to clear this container at the start of the next commit.\n // This handles the case of React rendering into a container with previous children.\n // It's also safe to do for updates too, because current.child would only be null\n // if the previous render was null (so the the container would already be empty).\n workInProgress.flags |= Snapshot;\n }\n }\n\n updateHostContainer(workInProgress);\n return null;\n }\n\n case HostComponent:\n {\n popHostContext(workInProgress);\n var rootContainerInstance = getRootHostContainer();\n var type = workInProgress.type;\n\n if (current !== null && workInProgress.stateNode != null) {\n updateHostComponent$1(current, workInProgress, type, newProps, rootContainerInstance);\n\n if (current.ref !== workInProgress.ref) {\n markRef$1(workInProgress);\n }\n } else {\n if (!newProps) {\n if (!(workInProgress.stateNode !== null)) {\n {\n throw Error( \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n } // This can happen when we abort work.\n\n\n return null;\n }\n\n var currentHostContext = getHostContext(); // TODO: Move createInstance to beginWork and keep it on a context\n // \"stack\" as the parent. Then append children as we go in beginWork\n // or completeWork depending on whether we want to add them top->down or\n // bottom->up. Top->down is faster in IE11.\n\n var _wasHydrated = popHydrationState(workInProgress);\n\n if (_wasHydrated) {\n // TODO: Move this and createInstance step into the beginPhase\n // to consolidate.\n if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, currentHostContext)) {\n // If changes to the hydrated node need to be applied at the\n // commit-phase we mark this as such.\n markUpdate(workInProgress);\n }\n } else {\n var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress);\n appendAllChildren(instance, workInProgress, false, false);\n workInProgress.stateNode = instance; // Certain renderers require commit-time effects for initial mount.\n // (eg DOM renderer supports auto-focus for certain elements).\n // Make sure such renderers get scheduled for later work.\n\n if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance)) {\n markUpdate(workInProgress);\n }\n }\n\n if (workInProgress.ref !== null) {\n // If there is a ref on a host node we need to schedule a callback\n markRef$1(workInProgress);\n }\n }\n\n return null;\n }\n\n case HostText:\n {\n var newText = newProps;\n\n if (current && workInProgress.stateNode != null) {\n var oldText = current.memoizedProps; // If we have an alternate, that means this is an update and we need\n // to schedule a side-effect to do the updates.\n\n updateHostText$1(current, workInProgress, oldText, newText);\n } else {\n if (typeof newText !== 'string') {\n if (!(workInProgress.stateNode !== null)) {\n {\n throw Error( \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n } // This can happen when we abort work.\n\n }\n\n var _rootContainerInstance = getRootHostContainer();\n\n var _currentHostContext = getHostContext();\n\n var _wasHydrated2 = popHydrationState(workInProgress);\n\n if (_wasHydrated2) {\n if (prepareToHydrateHostTextInstance(workInProgress)) {\n markUpdate(workInProgress);\n }\n } else {\n workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress);\n }\n }\n\n return null;\n }\n\n case SuspenseComponent:\n {\n popSuspenseContext(workInProgress);\n var nextState = workInProgress.memoizedState;\n\n if ((workInProgress.flags & DidCapture) !== NoFlags) {\n // Something suspended. Re-render with the fallback children.\n workInProgress.lanes = renderLanes; // Do not reset the effect list.\n\n if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n transferActualDuration(workInProgress);\n }\n\n return workInProgress;\n }\n\n var nextDidTimeout = nextState !== null;\n var prevDidTimeout = false;\n\n if (current === null) {\n if (workInProgress.memoizedProps.fallback !== undefined) {\n popHydrationState(workInProgress);\n }\n } else {\n var prevState = current.memoizedState;\n prevDidTimeout = prevState !== null;\n }\n\n if (nextDidTimeout && !prevDidTimeout) {\n // If this subtreee is running in blocking mode we can suspend,\n // otherwise we won't suspend.\n // TODO: This will still suspend a synchronous tree if anything\n // in the concurrent tree already suspended during this render.\n // This is a known bug.\n if ((workInProgress.mode & BlockingMode) !== NoMode) {\n // TODO: Move this back to throwException because this is too late\n // if this is a large tree which is common for initial loads. We\n // don't know if we should restart a render or not until we get\n // this marker, and this is too late.\n // If this render already had a ping or lower pri updates,\n // and this is the first time we know we're going to suspend we\n // should be able to immediately restart from within throwException.\n var hasInvisibleChildContext = current === null && workInProgress.memoizedProps.unstable_avoidThisFallback !== true;\n\n if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) {\n // If this was in an invisible tree or a new render, then showing\n // this boundary is ok.\n renderDidSuspend();\n } else {\n // Otherwise, we're going to have to hide content so we should\n // suspend for longer if possible.\n renderDidSuspendDelayIfPossible();\n }\n }\n }\n\n {\n // TODO: Only schedule updates if these values are non equal, i.e. it changed.\n if (nextDidTimeout || prevDidTimeout) {\n // If this boundary just timed out, schedule an effect to attach a\n // retry listener to the promise. This flag is also used to hide the\n // primary children. In mutation mode, we also need the flag to\n // *unhide* children that were previously hidden, so check if this\n // is currently timed out, too.\n workInProgress.flags |= Update;\n }\n }\n\n return null;\n }\n\n case HostPortal:\n popHostContainer(workInProgress);\n updateHostContainer(workInProgress);\n\n if (current === null) {\n preparePortalMount(workInProgress.stateNode.containerInfo);\n }\n\n return null;\n\n case ContextProvider:\n // Pop provider fiber\n popProvider(workInProgress);\n return null;\n\n case IncompleteClassComponent:\n {\n // Same as class component case. I put it down here so that the tags are\n // sequential to ensure this switch is compiled to a jump table.\n var _Component = workInProgress.type;\n\n if (isContextProvider(_Component)) {\n popContext(workInProgress);\n }\n\n return null;\n }\n\n case SuspenseListComponent:\n {\n popSuspenseContext(workInProgress);\n var renderState = workInProgress.memoizedState;\n\n if (renderState === null) {\n // We're running in the default, \"independent\" mode.\n // We don't do anything in this mode.\n return null;\n }\n\n var didSuspendAlready = (workInProgress.flags & DidCapture) !== NoFlags;\n var renderedTail = renderState.rendering;\n\n if (renderedTail === null) {\n // We just rendered the head.\n if (!didSuspendAlready) {\n // This is the first pass. We need to figure out if anything is still\n // suspended in the rendered set.\n // If new content unsuspended, but there's still some content that\n // didn't. Then we need to do a second pass that forces everything\n // to keep showing their fallbacks.\n // We might be suspended if something in this render pass suspended, or\n // something in the previous committed pass suspended. Otherwise,\n // there's no chance so we can skip the expensive call to\n // findFirstSuspended.\n var cannotBeSuspended = renderHasNotSuspendedYet() && (current === null || (current.flags & DidCapture) === NoFlags);\n\n if (!cannotBeSuspended) {\n var row = workInProgress.child;\n\n while (row !== null) {\n var suspended = findFirstSuspended(row);\n\n if (suspended !== null) {\n didSuspendAlready = true;\n workInProgress.flags |= DidCapture;\n cutOffTailIfNeeded(renderState, false); // If this is a newly suspended tree, it might not get committed as\n // part of the second pass. In that case nothing will subscribe to\n // its thennables. Instead, we'll transfer its thennables to the\n // SuspenseList so that it can retry if they resolve.\n // There might be multiple of these in the list but since we're\n // going to wait for all of them anyway, it doesn't really matter\n // which ones gets to ping. In theory we could get clever and keep\n // track of how many dependencies remain but it gets tricky because\n // in the meantime, we can add/remove/change items and dependencies.\n // We might bail out of the loop before finding any but that\n // doesn't matter since that means that the other boundaries that\n // we did find already has their listeners attached.\n\n var newThennables = suspended.updateQueue;\n\n if (newThennables !== null) {\n workInProgress.updateQueue = newThennables;\n workInProgress.flags |= Update;\n } // Rerender the whole list, but this time, we'll force fallbacks\n // to stay in place.\n // Reset the effect list before doing the second pass since that's now invalid.\n\n\n if (renderState.lastEffect === null) {\n workInProgress.firstEffect = null;\n }\n\n workInProgress.lastEffect = renderState.lastEffect; // Reset the child fibers to their original state.\n\n resetChildFibers(workInProgress, renderLanes); // Set up the Suspense Context to force suspense and immediately\n // rerender the children.\n\n pushSuspenseContext(workInProgress, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback));\n return workInProgress.child;\n }\n\n row = row.sibling;\n }\n }\n\n if (renderState.tail !== null && now() > getRenderTargetTime()) {\n // We have already passed our CPU deadline but we still have rows\n // left in the tail. We'll just give up further attempts to render\n // the main content and only render fallbacks.\n workInProgress.flags |= DidCapture;\n didSuspendAlready = true;\n cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n // to get it started back up to attempt the next item. While in terms\n // of priority this work has the same priority as this current render,\n // it's not part of the same transition once the transition has\n // committed. If it's sync, we still want to yield so that it can be\n // painted. Conceptually, this is really the same as pinging.\n // We can use any RetryLane even if it's the one currently rendering\n // since we're leaving it behind on this node.\n\n workInProgress.lanes = SomeRetryLane;\n\n {\n markSpawnedWork(SomeRetryLane);\n }\n }\n } else {\n cutOffTailIfNeeded(renderState, false);\n } // Next we're going to render the tail.\n\n } else {\n // Append the rendered row to the child list.\n if (!didSuspendAlready) {\n var _suspended = findFirstSuspended(renderedTail);\n\n if (_suspended !== null) {\n workInProgress.flags |= DidCapture;\n didSuspendAlready = true; // Ensure we transfer the update queue to the parent so that it doesn't\n // get lost if this row ends up dropped during a second pass.\n\n var _newThennables = _suspended.updateQueue;\n\n if (_newThennables !== null) {\n workInProgress.updateQueue = _newThennables;\n workInProgress.flags |= Update;\n }\n\n cutOffTailIfNeeded(renderState, true); // This might have been modified.\n\n if (renderState.tail === null && renderState.tailMode === 'hidden' && !renderedTail.alternate && !getIsHydrating() // We don't cut it if we're hydrating.\n ) {\n // We need to delete the row we just rendered.\n // Reset the effect list to what it was before we rendered this\n // child. The nested children have already appended themselves.\n var lastEffect = workInProgress.lastEffect = renderState.lastEffect; // Remove any effects that were appended after this point.\n\n if (lastEffect !== null) {\n lastEffect.nextEffect = null;\n } // We're done.\n\n\n return null;\n }\n } else if ( // The time it took to render last row is greater than the remaining\n // time we have to render. So rendering one more row would likely\n // exceed it.\n now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes !== OffscreenLane) {\n // We have now passed our CPU deadline and we'll just give up further\n // attempts to render the main content and only render fallbacks.\n // The assumption is that this is usually faster.\n workInProgress.flags |= DidCapture;\n didSuspendAlready = true;\n cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n // to get it started back up to attempt the next item. While in terms\n // of priority this work has the same priority as this current render,\n // it's not part of the same transition once the transition has\n // committed. If it's sync, we still want to yield so that it can be\n // painted. Conceptually, this is really the same as pinging.\n // We can use any RetryLane even if it's the one currently rendering\n // since we're leaving it behind on this node.\n\n workInProgress.lanes = SomeRetryLane;\n\n {\n markSpawnedWork(SomeRetryLane);\n }\n }\n }\n\n if (renderState.isBackwards) {\n // The effect list of the backwards tail will have been added\n // to the end. This breaks the guarantee that life-cycles fire in\n // sibling order but that isn't a strong guarantee promised by React.\n // Especially since these might also just pop in during future commits.\n // Append to the beginning of the list.\n renderedTail.sibling = workInProgress.child;\n workInProgress.child = renderedTail;\n } else {\n var previousSibling = renderState.last;\n\n if (previousSibling !== null) {\n previousSibling.sibling = renderedTail;\n } else {\n workInProgress.child = renderedTail;\n }\n\n renderState.last = renderedTail;\n }\n }\n\n if (renderState.tail !== null) {\n // We still have tail rows to render.\n // Pop a row.\n var next = renderState.tail;\n renderState.rendering = next;\n renderState.tail = next.sibling;\n renderState.lastEffect = workInProgress.lastEffect;\n renderState.renderingStartTime = now();\n next.sibling = null; // Restore the context.\n // TODO: We can probably just avoid popping it instead and only\n // setting it the first time we go from not suspended to suspended.\n\n var suspenseContext = suspenseStackCursor.current;\n\n if (didSuspendAlready) {\n suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n } else {\n suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n }\n\n pushSuspenseContext(workInProgress, suspenseContext); // Do a pass over the next row.\n\n return next;\n }\n\n return null;\n }\n\n case FundamentalComponent:\n {\n\n break;\n }\n\n case ScopeComponent:\n {\n\n break;\n }\n\n case Block:\n\n break;\n\n case OffscreenComponent:\n case LegacyHiddenComponent:\n {\n popRenderLanes(workInProgress);\n\n if (current !== null) {\n var _nextState = workInProgress.memoizedState;\n var _prevState = current.memoizedState;\n var prevIsHidden = _prevState !== null;\n var nextIsHidden = _nextState !== null;\n\n if (prevIsHidden !== nextIsHidden && newProps.mode !== 'unstable-defer-without-hiding') {\n workInProgress.flags |= Update;\n }\n }\n\n return null;\n }\n }\n\n {\n {\n throw Error( \"Unknown unit of work tag (\" + workInProgress.tag + \"). This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n}\n\nfunction unwindWork(workInProgress, renderLanes) {\n switch (workInProgress.tag) {\n case ClassComponent:\n {\n var Component = workInProgress.type;\n\n if (isContextProvider(Component)) {\n popContext(workInProgress);\n }\n\n var flags = workInProgress.flags;\n\n if (flags & ShouldCapture) {\n workInProgress.flags = flags & ~ShouldCapture | DidCapture;\n\n if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n transferActualDuration(workInProgress);\n }\n\n return workInProgress;\n }\n\n return null;\n }\n\n case HostRoot:\n {\n popHostContainer(workInProgress);\n popTopLevelContextObject(workInProgress);\n resetWorkInProgressVersions();\n var _flags = workInProgress.flags;\n\n if (!((_flags & DidCapture) === NoFlags)) {\n {\n throw Error( \"The root failed to unmount after an error. This is likely a bug in React. Please file an issue.\" );\n }\n }\n\n workInProgress.flags = _flags & ~ShouldCapture | DidCapture;\n return workInProgress;\n }\n\n case HostComponent:\n {\n // TODO: popHydrationState\n popHostContext(workInProgress);\n return null;\n }\n\n case SuspenseComponent:\n {\n popSuspenseContext(workInProgress);\n\n var _flags2 = workInProgress.flags;\n\n if (_flags2 & ShouldCapture) {\n workInProgress.flags = _flags2 & ~ShouldCapture | DidCapture; // Captured a suspense effect. Re-render the boundary.\n\n if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n transferActualDuration(workInProgress);\n }\n\n return workInProgress;\n }\n\n return null;\n }\n\n case SuspenseListComponent:\n {\n popSuspenseContext(workInProgress); // SuspenseList doesn't actually catch anything. It should've been\n // caught by a nested boundary. If not, it should bubble through.\n\n return null;\n }\n\n case HostPortal:\n popHostContainer(workInProgress);\n return null;\n\n case ContextProvider:\n popProvider(workInProgress);\n return null;\n\n case OffscreenComponent:\n case LegacyHiddenComponent:\n popRenderLanes(workInProgress);\n return null;\n\n default:\n return null;\n }\n}\n\nfunction unwindInterruptedWork(interruptedWork) {\n switch (interruptedWork.tag) {\n case ClassComponent:\n {\n var childContextTypes = interruptedWork.type.childContextTypes;\n\n if (childContextTypes !== null && childContextTypes !== undefined) {\n popContext(interruptedWork);\n }\n\n break;\n }\n\n case HostRoot:\n {\n popHostContainer(interruptedWork);\n popTopLevelContextObject(interruptedWork);\n resetWorkInProgressVersions();\n break;\n }\n\n case HostComponent:\n {\n popHostContext(interruptedWork);\n break;\n }\n\n case HostPortal:\n popHostContainer(interruptedWork);\n break;\n\n case SuspenseComponent:\n popSuspenseContext(interruptedWork);\n break;\n\n case SuspenseListComponent:\n popSuspenseContext(interruptedWork);\n break;\n\n case ContextProvider:\n popProvider(interruptedWork);\n break;\n\n case OffscreenComponent:\n case LegacyHiddenComponent:\n popRenderLanes(interruptedWork);\n break;\n }\n}\n\nfunction createCapturedValue(value, source) {\n // If the value is an error, call this function immediately after it is thrown\n // so the stack is accurate.\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\n\n// This module is forked in different environments.\n// By default, return `true` to log errors to the console.\n// Forks can return `false` if this isn't desirable.\nfunction showErrorDialog(boundary, errorInfo) {\n return true;\n}\n\nfunction logCapturedError(boundary, errorInfo) {\n try {\n var logError = showErrorDialog(boundary, errorInfo); // Allow injected showErrorDialog() to prevent default console.error logging.\n // This enables renderers like ReactNative to better manage redbox behavior.\n\n if (logError === false) {\n return;\n }\n\n var error = errorInfo.value;\n\n if (true) {\n var source = errorInfo.source;\n var stack = errorInfo.stack;\n var componentStack = stack !== null ? stack : ''; // Browsers support silencing uncaught errors by calling\n // `preventDefault()` in window `error` handler.\n // We record this information as an expando on the error.\n\n if (error != null && error._suppressLogging) {\n if (boundary.tag === ClassComponent) {\n // The error is recoverable and was silenced.\n // Ignore it and don't print the stack addendum.\n // This is handy for testing error boundaries without noise.\n return;\n } // The error is fatal. Since the silencing might have\n // been accidental, we'll surface it anyway.\n // However, the browser would have silenced the original error\n // so we'll print it first, and then print the stack addendum.\n\n\n console['error'](error); // Don't transform to our wrapper\n // For a more detailed description of this block, see:\n // https://github.com/facebook/react/pull/13384\n }\n\n var componentName = source ? getComponentName(source.type) : null;\n var componentNameMessage = componentName ? \"The above error occurred in the <\" + componentName + \"> component:\" : 'The above error occurred in one of your React components:';\n var errorBoundaryMessage;\n var errorBoundaryName = getComponentName(boundary.type);\n\n if (errorBoundaryName) {\n errorBoundaryMessage = \"React will try to recreate this component tree from scratch \" + (\"using the error boundary you provided, \" + errorBoundaryName + \".\");\n } else {\n errorBoundaryMessage = 'Consider adding an error boundary to your tree to customize error handling behavior.\\n' + 'Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.';\n }\n\n var combinedMessage = componentNameMessage + \"\\n\" + componentStack + \"\\n\\n\" + (\"\" + errorBoundaryMessage); // In development, we provide our own message with just the component stack.\n // We don't include the original error message and JS stack because the browser\n // has already printed it. Even if the application swallows the error, it is still\n // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils.\n\n console['error'](combinedMessage); // Don't transform to our wrapper\n } else {\n // In production, we print the error directly.\n // This will include the message, the JS stack, and anything the browser wants to show.\n // We pass the error object instead of custom message so that the browser displays the error natively.\n console['error'](error); // Don't transform to our wrapper\n }\n } catch (e) {\n // This method must not throw, or React internal state will get messed up.\n // If console.error is overridden, or logCapturedError() shows a dialog that throws,\n // we want to report this error outside of the normal stack as a last resort.\n // https://github.com/facebook/react/issues/13188\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nvar PossiblyWeakMap$1 = typeof WeakMap === 'function' ? WeakMap : Map;\n\nfunction createRootErrorUpdate(fiber, errorInfo, lane) {\n var update = createUpdate(NoTimestamp, lane); // Unmount the root by rendering null.\n\n update.tag = CaptureUpdate; // Caution: React DevTools currently depends on this property\n // being called \"element\".\n\n update.payload = {\n element: null\n };\n var error = errorInfo.value;\n\n update.callback = function () {\n onUncaughtError(error);\n logCapturedError(fiber, errorInfo);\n };\n\n return update;\n}\n\nfunction createClassErrorUpdate(fiber, errorInfo, lane) {\n var update = createUpdate(NoTimestamp, lane);\n update.tag = CaptureUpdate;\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n\n if (typeof getDerivedStateFromError === 'function') {\n var error$1 = errorInfo.value;\n\n update.payload = function () {\n logCapturedError(fiber, errorInfo);\n return getDerivedStateFromError(error$1);\n };\n }\n\n var inst = fiber.stateNode;\n\n if (inst !== null && typeof inst.componentDidCatch === 'function') {\n update.callback = function callback() {\n {\n markFailedErrorBoundaryForHotReloading(fiber);\n }\n\n if (typeof getDerivedStateFromError !== 'function') {\n // To preserve the preexisting retry behavior of error boundaries,\n // we keep track of which ones already failed during this batch.\n // This gets reset before we yield back to the browser.\n // TODO: Warn in strict mode if getDerivedStateFromError is\n // not defined.\n markLegacyErrorBoundaryAsFailed(this); // Only log here if componentDidCatch is the only error boundary method defined\n\n logCapturedError(fiber, errorInfo);\n }\n\n var error$1 = errorInfo.value;\n var stack = errorInfo.stack;\n this.componentDidCatch(error$1, {\n componentStack: stack !== null ? stack : ''\n });\n\n {\n if (typeof getDerivedStateFromError !== 'function') {\n // If componentDidCatch is the only error boundary method defined,\n // then it needs to call setState to recover from errors.\n // If no state update is scheduled then the boundary will swallow the error.\n if (!includesSomeLane(fiber.lanes, SyncLane)) {\n error('%s: Error boundaries should implement getDerivedStateFromError(). ' + 'In that method, return a state update to display an error message or fallback UI.', getComponentName(fiber.type) || 'Unknown');\n }\n }\n }\n };\n } else {\n update.callback = function () {\n markFailedErrorBoundaryForHotReloading(fiber);\n };\n }\n\n return update;\n}\n\nfunction attachPingListener(root, wakeable, lanes) {\n // Attach a listener to the promise to \"ping\" the root and retry. But only if\n // one does not already exist for the lanes we're currently rendering (which\n // acts like a \"thread ID\" here).\n var pingCache = root.pingCache;\n var threadIDs;\n\n if (pingCache === null) {\n pingCache = root.pingCache = new PossiblyWeakMap$1();\n threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else {\n threadIDs = pingCache.get(wakeable);\n\n if (threadIDs === undefined) {\n threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n }\n }\n\n if (!threadIDs.has(lanes)) {\n // Memoize using the thread ID to prevent redundant listeners.\n threadIDs.add(lanes);\n var ping = pingSuspendedRoot.bind(null, root, wakeable, lanes);\n wakeable.then(ping, ping);\n }\n}\n\nfunction throwException(root, returnFiber, sourceFiber, value, rootRenderLanes) {\n // The source fiber did not complete.\n sourceFiber.flags |= Incomplete; // Its effect list is no longer valid.\n\n sourceFiber.firstEffect = sourceFiber.lastEffect = null;\n\n if (value !== null && typeof value === 'object' && typeof value.then === 'function') {\n // This is a wakeable.\n var wakeable = value;\n\n if ((sourceFiber.mode & BlockingMode) === NoMode) {\n // Reset the memoizedState to what it was before we attempted\n // to render it.\n var currentSource = sourceFiber.alternate;\n\n if (currentSource) {\n sourceFiber.updateQueue = currentSource.updateQueue;\n sourceFiber.memoizedState = currentSource.memoizedState;\n sourceFiber.lanes = currentSource.lanes;\n } else {\n sourceFiber.updateQueue = null;\n sourceFiber.memoizedState = null;\n }\n }\n\n var hasInvisibleParentBoundary = hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext); // Schedule the nearest Suspense to re-render the timed out view.\n\n var _workInProgress = returnFiber;\n\n do {\n if (_workInProgress.tag === SuspenseComponent && shouldCaptureSuspense(_workInProgress, hasInvisibleParentBoundary)) {\n // Found the nearest boundary.\n // Stash the promise on the boundary fiber. If the boundary times out, we'll\n // attach another listener to flip the boundary back to its normal state.\n var wakeables = _workInProgress.updateQueue;\n\n if (wakeables === null) {\n var updateQueue = new Set();\n updateQueue.add(wakeable);\n _workInProgress.updateQueue = updateQueue;\n } else {\n wakeables.add(wakeable);\n } // If the boundary is outside of blocking mode, we should *not*\n // suspend the commit. Pretend as if the suspended component rendered\n // null and keep rendering. In the commit phase, we'll schedule a\n // subsequent synchronous update to re-render the Suspense.\n //\n // Note: It doesn't matter whether the component that suspended was\n // inside a blocking mode tree. If the Suspense is outside of it, we\n // should *not* suspend the commit.\n\n\n if ((_workInProgress.mode & BlockingMode) === NoMode) {\n _workInProgress.flags |= DidCapture;\n sourceFiber.flags |= ForceUpdateForLegacySuspense; // We're going to commit this fiber even though it didn't complete.\n // But we shouldn't call any lifecycle methods or callbacks. Remove\n // all lifecycle effect tags.\n\n sourceFiber.flags &= ~(LifecycleEffectMask | Incomplete);\n\n if (sourceFiber.tag === ClassComponent) {\n var currentSourceFiber = sourceFiber.alternate;\n\n if (currentSourceFiber === null) {\n // This is a new mount. Change the tag so it's not mistaken for a\n // completed class component. For example, we should not call\n // componentWillUnmount if it is deleted.\n sourceFiber.tag = IncompleteClassComponent;\n } else {\n // When we try rendering again, we should not reuse the current fiber,\n // since it's known to be in an inconsistent state. Use a force update to\n // prevent a bail out.\n var update = createUpdate(NoTimestamp, SyncLane);\n update.tag = ForceUpdate;\n enqueueUpdate(sourceFiber, update);\n }\n } // The source fiber did not complete. Mark it with Sync priority to\n // indicate that it still has pending work.\n\n\n sourceFiber.lanes = mergeLanes(sourceFiber.lanes, SyncLane); // Exit without suspending.\n\n return;\n } // Confirmed that the boundary is in a concurrent mode tree. Continue\n // with the normal suspend path.\n //\n // After this we'll use a set of heuristics to determine whether this\n // render pass will run to completion or restart or \"suspend\" the commit.\n // The actual logic for this is spread out in different places.\n //\n // This first principle is that if we're going to suspend when we complete\n // a root, then we should also restart if we get an update or ping that\n // might unsuspend it, and vice versa. The only reason to suspend is\n // because you think you might want to restart before committing. However,\n // it doesn't make sense to restart only while in the period we're suspended.\n //\n // Restarting too aggressively is also not good because it starves out any\n // intermediate loading state. So we use heuristics to determine when.\n // Suspense Heuristics\n //\n // If nothing threw a Promise or all the same fallbacks are already showing,\n // then don't suspend/restart.\n //\n // If this is an initial render of a new tree of Suspense boundaries and\n // those trigger a fallback, then don't suspend/restart. We want to ensure\n // that we can show the initial loading state as quickly as possible.\n //\n // If we hit a \"Delayed\" case, such as when we'd switch from content back into\n // a fallback, then we should always suspend/restart. Transitions apply\n // to this case. If none is defined, JND is used instead.\n //\n // If we're already showing a fallback and it gets \"retried\", allowing us to show\n // another level, but there's still an inner boundary that would show a fallback,\n // then we suspend/restart for 500ms since the last time we showed a fallback\n // anywhere in the tree. This effectively throttles progressive loading into a\n // consistent train of commits. This also gives us an opportunity to restart to\n // get to the completed state slightly earlier.\n //\n // If there's ambiguity due to batching it's resolved in preference of:\n // 1) \"delayed\", 2) \"initial render\", 3) \"retry\".\n //\n // We want to ensure that a \"busy\" state doesn't get force committed. We want to\n // ensure that new initial loading states can commit as soon as possible.\n\n\n attachPingListener(root, wakeable, rootRenderLanes);\n _workInProgress.flags |= ShouldCapture;\n _workInProgress.lanes = rootRenderLanes;\n return;\n } // This boundary already captured during this render. Continue to the next\n // boundary.\n\n\n _workInProgress = _workInProgress.return;\n } while (_workInProgress !== null); // No boundary was found. Fallthrough to error mode.\n // TODO: Use invariant so the message is stripped in prod?\n\n\n value = new Error((getComponentName(sourceFiber.type) || 'A React component') + ' suspended while rendering, but no fallback UI was specified.\\n' + '\\n' + 'Add a <Suspense fallback=...> component higher in the tree to ' + 'provide a loading indicator or placeholder to display.');\n } // We didn't find a boundary that could handle this type of exception. Start\n // over and traverse parent path again, this time treating the exception\n // as an error.\n\n\n renderDidError();\n value = createCapturedValue(value, sourceFiber);\n var workInProgress = returnFiber;\n\n do {\n switch (workInProgress.tag) {\n case HostRoot:\n {\n var _errorInfo = value;\n workInProgress.flags |= ShouldCapture;\n var lane = pickArbitraryLane(rootRenderLanes);\n workInProgress.lanes = mergeLanes(workInProgress.lanes, lane);\n\n var _update = createRootErrorUpdate(workInProgress, _errorInfo, lane);\n\n enqueueCapturedUpdate(workInProgress, _update);\n return;\n }\n\n case ClassComponent:\n // Capture and retry\n var errorInfo = value;\n var ctor = workInProgress.type;\n var instance = workInProgress.stateNode;\n\n if ((workInProgress.flags & DidCapture) === NoFlags && (typeof ctor.getDerivedStateFromError === 'function' || instance !== null && typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance))) {\n workInProgress.flags |= ShouldCapture;\n\n var _lane = pickArbitraryLane(rootRenderLanes);\n\n workInProgress.lanes = mergeLanes(workInProgress.lanes, _lane); // Schedule the error boundary to re-render using updated state\n\n var _update2 = createClassErrorUpdate(workInProgress, errorInfo, _lane);\n\n enqueueCapturedUpdate(workInProgress, _update2);\n return;\n }\n\n break;\n }\n\n workInProgress = workInProgress.return;\n } while (workInProgress !== null);\n}\n\nvar didWarnAboutUndefinedSnapshotBeforeUpdate = null;\n\n{\n didWarnAboutUndefinedSnapshotBeforeUpdate = new Set();\n}\n\nvar PossiblyWeakSet = typeof WeakSet === 'function' ? WeakSet : Set;\n\nvar callComponentWillUnmountWithTimer = function (current, instance) {\n instance.props = current.memoizedProps;\n instance.state = current.memoizedState;\n\n {\n instance.componentWillUnmount();\n }\n}; // Capture errors so they don't interrupt unmounting.\n\n\nfunction safelyCallComponentWillUnmount(current, instance) {\n {\n invokeGuardedCallback(null, callComponentWillUnmountWithTimer, null, current, instance);\n\n if (hasCaughtError()) {\n var unmountError = clearCaughtError();\n captureCommitPhaseError(current, unmountError);\n }\n }\n}\n\nfunction safelyDetachRef(current) {\n var ref = current.ref;\n\n if (ref !== null) {\n if (typeof ref === 'function') {\n {\n invokeGuardedCallback(null, ref, null, null);\n\n if (hasCaughtError()) {\n var refError = clearCaughtError();\n captureCommitPhaseError(current, refError);\n }\n }\n } else {\n ref.current = null;\n }\n }\n}\n\nfunction safelyCallDestroy(current, destroy) {\n {\n invokeGuardedCallback(null, destroy, null);\n\n if (hasCaughtError()) {\n var error = clearCaughtError();\n captureCommitPhaseError(current, error);\n }\n }\n}\n\nfunction commitBeforeMutationLifeCycles(current, finishedWork) {\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n case Block:\n {\n return;\n }\n\n case ClassComponent:\n {\n if (finishedWork.flags & Snapshot) {\n if (current !== null) {\n var prevProps = current.memoizedProps;\n var prevState = current.memoizedState;\n var instance = finishedWork.stateNode; // We could update instance props and state here,\n // but instead we rely on them being set during last render.\n // TODO: revisit this when we implement resuming.\n\n {\n if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n if (instance.props !== finishedWork.memoizedProps) {\n error('Expected %s props to match memoized props before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');\n }\n\n if (instance.state !== finishedWork.memoizedState) {\n error('Expected %s state to match memoized state before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');\n }\n }\n }\n\n var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);\n\n {\n var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;\n\n if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) {\n didWarnSet.add(finishedWork.type);\n\n error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' + 'must be returned. You have returned undefined.', getComponentName(finishedWork.type));\n }\n }\n\n instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n }\n }\n\n return;\n }\n\n case HostRoot:\n {\n {\n if (finishedWork.flags & Snapshot) {\n var root = finishedWork.stateNode;\n clearContainer(root.containerInfo);\n }\n }\n\n return;\n }\n\n case HostComponent:\n case HostText:\n case HostPortal:\n case IncompleteClassComponent:\n // Nothing to do for these component types\n return;\n }\n\n {\n {\n throw Error( \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n}\n\nfunction commitHookEffectListUnmount(tag, finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n if (lastEffect !== null) {\n var firstEffect = lastEffect.next;\n var effect = firstEffect;\n\n do {\n if ((effect.tag & tag) === tag) {\n // Unmount\n var destroy = effect.destroy;\n effect.destroy = undefined;\n\n if (destroy !== undefined) {\n destroy();\n }\n }\n\n effect = effect.next;\n } while (effect !== firstEffect);\n }\n}\n\nfunction commitHookEffectListMount(tag, finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n if (lastEffect !== null) {\n var firstEffect = lastEffect.next;\n var effect = firstEffect;\n\n do {\n if ((effect.tag & tag) === tag) {\n // Mount\n var create = effect.create;\n effect.destroy = create();\n\n {\n var destroy = effect.destroy;\n\n if (destroy !== undefined && typeof destroy !== 'function') {\n var addendum = void 0;\n\n if (destroy === null) {\n addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';\n } else if (typeof destroy.then === 'function') {\n addendum = '\\n\\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\\n\\n' + 'useEffect(() => {\\n' + ' async function fetchData() {\\n' + ' // You can await here\\n' + ' const response = await MyAPI.getData(someId);\\n' + ' // ...\\n' + ' }\\n' + ' fetchData();\\n' + \"}, [someId]); // Or [] if effect doesn't need props or state\\n\\n\" + 'Learn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching';\n } else {\n addendum = ' You returned: ' + destroy;\n }\n\n error('An effect function must not return anything besides a function, ' + 'which is used for clean-up.%s', addendum);\n }\n }\n }\n\n effect = effect.next;\n } while (effect !== firstEffect);\n }\n}\n\nfunction schedulePassiveEffects(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n if (lastEffect !== null) {\n var firstEffect = lastEffect.next;\n var effect = firstEffect;\n\n do {\n var _effect = effect,\n next = _effect.next,\n tag = _effect.tag;\n\n if ((tag & Passive$1) !== NoFlags$1 && (tag & HasEffect) !== NoFlags$1) {\n enqueuePendingPassiveHookEffectUnmount(finishedWork, effect);\n enqueuePendingPassiveHookEffectMount(finishedWork, effect);\n }\n\n effect = next;\n } while (effect !== firstEffect);\n }\n}\n\nfunction commitLifeCycles(finishedRoot, current, finishedWork, committedLanes) {\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n case Block:\n {\n // At this point layout effects have already been destroyed (during mutation phase).\n // This is done to prevent sibling component effects from interfering with each other,\n // e.g. a destroy function in one component should never override a ref set\n // by a create function in another component during the same commit.\n {\n commitHookEffectListMount(Layout | HasEffect, finishedWork);\n }\n\n schedulePassiveEffects(finishedWork);\n return;\n }\n\n case ClassComponent:\n {\n var instance = finishedWork.stateNode;\n\n if (finishedWork.flags & Update) {\n if (current === null) {\n // We could update instance props and state here,\n // but instead we rely on them being set during last render.\n // TODO: revisit this when we implement resuming.\n {\n if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n if (instance.props !== finishedWork.memoizedProps) {\n error('Expected %s props to match memoized props before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');\n }\n\n if (instance.state !== finishedWork.memoizedState) {\n error('Expected %s state to match memoized state before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');\n }\n }\n }\n\n {\n instance.componentDidMount();\n }\n } else {\n var prevProps = finishedWork.elementType === finishedWork.type ? current.memoizedProps : resolveDefaultProps(finishedWork.type, current.memoizedProps);\n var prevState = current.memoizedState; // We could update instance props and state here,\n // but instead we rely on them being set during last render.\n // TODO: revisit this when we implement resuming.\n\n {\n if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n if (instance.props !== finishedWork.memoizedProps) {\n error('Expected %s props to match memoized props before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');\n }\n\n if (instance.state !== finishedWork.memoizedState) {\n error('Expected %s state to match memoized state before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');\n }\n }\n }\n\n {\n instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n }\n }\n } // TODO: I think this is now always non-null by the time it reaches the\n // commit phase. Consider removing the type check.\n\n\n var updateQueue = finishedWork.updateQueue;\n\n if (updateQueue !== null) {\n {\n if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n if (instance.props !== finishedWork.memoizedProps) {\n error('Expected %s props to match memoized props before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');\n }\n\n if (instance.state !== finishedWork.memoizedState) {\n error('Expected %s state to match memoized state before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');\n }\n }\n } // We could update instance props and state here,\n // but instead we rely on them being set during last render.\n // TODO: revisit this when we implement resuming.\n\n\n commitUpdateQueue(finishedWork, updateQueue, instance);\n }\n\n return;\n }\n\n case HostRoot:\n {\n // TODO: I think this is now always non-null by the time it reaches the\n // commit phase. Consider removing the type check.\n var _updateQueue = finishedWork.updateQueue;\n\n if (_updateQueue !== null) {\n var _instance = null;\n\n if (finishedWork.child !== null) {\n switch (finishedWork.child.tag) {\n case HostComponent:\n _instance = getPublicInstance(finishedWork.child.stateNode);\n break;\n\n case ClassComponent:\n _instance = finishedWork.child.stateNode;\n break;\n }\n }\n\n commitUpdateQueue(finishedWork, _updateQueue, _instance);\n }\n\n return;\n }\n\n case HostComponent:\n {\n var _instance2 = finishedWork.stateNode; // Renderers may schedule work to be done after host components are mounted\n // (eg DOM renderer may schedule auto-focus for inputs and form controls).\n // These effects should only be committed when components are first mounted,\n // aka when there is no current/alternate.\n\n if (current === null && finishedWork.flags & Update) {\n var type = finishedWork.type;\n var props = finishedWork.memoizedProps;\n commitMount(_instance2, type, props);\n }\n\n return;\n }\n\n case HostText:\n {\n // We have no life-cycles associated with text.\n return;\n }\n\n case HostPortal:\n {\n // We have no life-cycles associated with portals.\n return;\n }\n\n case Profiler:\n {\n {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n onCommit = _finishedWork$memoize2.onCommit,\n onRender = _finishedWork$memoize2.onRender;\n var effectDuration = finishedWork.stateNode.effectDuration;\n var commitTime = getCommitTime();\n\n if (typeof onRender === 'function') {\n {\n onRender(finishedWork.memoizedProps.id, current === null ? 'mount' : 'update', finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, commitTime, finishedRoot.memoizedInteractions);\n }\n }\n }\n\n return;\n }\n\n case SuspenseComponent:\n {\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n return;\n }\n\n case SuspenseListComponent:\n case IncompleteClassComponent:\n case FundamentalComponent:\n case ScopeComponent:\n case OffscreenComponent:\n case LegacyHiddenComponent:\n return;\n }\n\n {\n {\n throw Error( \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n}\n\nfunction hideOrUnhideAllChildren(finishedWork, isHidden) {\n {\n // We only have the top Fiber that was inserted but we need to recurse down its\n // children to find all the terminal nodes.\n var node = finishedWork;\n\n while (true) {\n if (node.tag === HostComponent) {\n var instance = node.stateNode;\n\n if (isHidden) {\n hideInstance(instance);\n } else {\n unhideInstance(node.stateNode, node.memoizedProps);\n }\n } else if (node.tag === HostText) {\n var _instance3 = node.stateNode;\n\n if (isHidden) {\n hideTextInstance(_instance3);\n } else {\n unhideTextInstance(_instance3, node.memoizedProps);\n }\n } else if ((node.tag === OffscreenComponent || node.tag === LegacyHiddenComponent) && node.memoizedState !== null && node !== finishedWork) ; else if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === finishedWork) {\n return;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === finishedWork) {\n return;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n}\n\nfunction commitAttachRef(finishedWork) {\n var ref = finishedWork.ref;\n\n if (ref !== null) {\n var instance = finishedWork.stateNode;\n var instanceToUse;\n\n switch (finishedWork.tag) {\n case HostComponent:\n instanceToUse = getPublicInstance(instance);\n break;\n\n default:\n instanceToUse = instance;\n } // Moved outside to ensure DCE works with this flag\n\n if (typeof ref === 'function') {\n ref(instanceToUse);\n } else {\n {\n if (!ref.hasOwnProperty('current')) {\n error('Unexpected ref object provided for %s. ' + 'Use either a ref-setter function or React.createRef().', getComponentName(finishedWork.type));\n }\n }\n\n ref.current = instanceToUse;\n }\n }\n}\n\nfunction commitDetachRef(current) {\n var currentRef = current.ref;\n\n if (currentRef !== null) {\n if (typeof currentRef === 'function') {\n currentRef(null);\n } else {\n currentRef.current = null;\n }\n }\n} // User-originating errors (lifecycles and refs) should not interrupt\n// deletion, so don't let them throw. Host-originating errors should\n// interrupt deletion, so it's okay\n\n\nfunction commitUnmount(finishedRoot, current, renderPriorityLevel) {\n onCommitUnmount(current);\n\n switch (current.tag) {\n case FunctionComponent:\n case ForwardRef:\n case MemoComponent:\n case SimpleMemoComponent:\n case Block:\n {\n var updateQueue = current.updateQueue;\n\n if (updateQueue !== null) {\n var lastEffect = updateQueue.lastEffect;\n\n if (lastEffect !== null) {\n var firstEffect = lastEffect.next;\n var effect = firstEffect;\n\n do {\n var _effect2 = effect,\n destroy = _effect2.destroy,\n tag = _effect2.tag;\n\n if (destroy !== undefined) {\n if ((tag & Passive$1) !== NoFlags$1) {\n enqueuePendingPassiveHookEffectUnmount(current, effect);\n } else {\n {\n safelyCallDestroy(current, destroy);\n }\n }\n }\n\n effect = effect.next;\n } while (effect !== firstEffect);\n }\n }\n\n return;\n }\n\n case ClassComponent:\n {\n safelyDetachRef(current);\n var instance = current.stateNode;\n\n if (typeof instance.componentWillUnmount === 'function') {\n safelyCallComponentWillUnmount(current, instance);\n }\n\n return;\n }\n\n case HostComponent:\n {\n safelyDetachRef(current);\n return;\n }\n\n case HostPortal:\n {\n // TODO: this is recursive.\n // We are also not using this parent because\n // the portal will get pushed immediately.\n {\n unmountHostComponents(finishedRoot, current);\n }\n\n return;\n }\n\n case FundamentalComponent:\n {\n\n return;\n }\n\n case DehydratedFragment:\n {\n\n return;\n }\n\n case ScopeComponent:\n {\n\n return;\n }\n }\n}\n\nfunction commitNestedUnmounts(finishedRoot, root, renderPriorityLevel) {\n // While we're inside a removed host node we don't want to call\n // removeChild on the inner nodes because they're removed by the top\n // call anyway. We also want to call componentWillUnmount on all\n // composites before this host node is removed from the tree. Therefore\n // we do an inner loop while we're still inside the host node.\n var node = root;\n\n while (true) {\n commitUnmount(finishedRoot, node); // Visit children because they may contain more composite or host nodes.\n // Skip portals because commitUnmount() currently visits them recursively.\n\n if (node.child !== null && ( // If we use mutation we drill down into portals using commitUnmount above.\n // If we don't use mutation we drill down into portals here instead.\n node.tag !== HostPortal)) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === root) {\n return;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === root) {\n return;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n}\n\nfunction detachFiberMutation(fiber) {\n // Cut off the return pointers to disconnect it from the tree. Ideally, we\n // should clear the child pointer of the parent alternate to let this\n // get GC:ed but we don't know which for sure which parent is the current\n // one so we'll settle for GC:ing the subtree of this child. This child\n // itself will be GC:ed when the parent updates the next time.\n // Note: we cannot null out sibling here, otherwise it can cause issues\n // with findDOMNode and how it requires the sibling field to carry out\n // traversal in a later effect. See PR #16820. We now clear the sibling\n // field after effects, see: detachFiberAfterEffects.\n //\n // Don't disconnect stateNode now; it will be detached in detachFiberAfterEffects.\n // It may be required if the current component is an error boundary,\n // and one of its descendants throws while unmounting a passive effect.\n fiber.alternate = null;\n fiber.child = null;\n fiber.dependencies = null;\n fiber.firstEffect = null;\n fiber.lastEffect = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.return = null;\n fiber.updateQueue = null;\n\n {\n fiber._debugOwner = null;\n }\n}\n\nfunction getHostParentFiber(fiber) {\n var parent = fiber.return;\n\n while (parent !== null) {\n if (isHostParent(parent)) {\n return parent;\n }\n\n parent = parent.return;\n }\n\n {\n {\n throw Error( \"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n}\n\nfunction isHostParent(fiber) {\n return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;\n}\n\nfunction getHostSibling(fiber) {\n // We're going to search forward into the tree until we find a sibling host\n // node. Unfortunately, if multiple insertions are done in a row we have to\n // search past them. This leads to exponential search for the next sibling.\n // TODO: Find a more efficient way to do this.\n var node = fiber;\n\n siblings: while (true) {\n // If we didn't find anything, let's try the next sibling.\n while (node.sibling === null) {\n if (node.return === null || isHostParent(node.return)) {\n // If we pop out of the root or hit the parent the fiber we are the\n // last sibling.\n return null;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n\n while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) {\n // If it is not host node and, we might have a host node inside it.\n // Try to search down until we find one.\n if (node.flags & Placement) {\n // If we don't have a child, try the siblings instead.\n continue siblings;\n } // If we don't have a child, try the siblings instead.\n // We also skip portals because they are not part of this host tree.\n\n\n if (node.child === null || node.tag === HostPortal) {\n continue siblings;\n } else {\n node.child.return = node;\n node = node.child;\n }\n } // Check if this host node is stable or about to be placed.\n\n\n if (!(node.flags & Placement)) {\n // Found it!\n return node.stateNode;\n }\n }\n}\n\nfunction commitPlacement(finishedWork) {\n\n\n var parentFiber = getHostParentFiber(finishedWork); // Note: these two variables *must* always be updated together.\n\n var parent;\n var isContainer;\n var parentStateNode = parentFiber.stateNode;\n\n switch (parentFiber.tag) {\n case HostComponent:\n parent = parentStateNode;\n isContainer = false;\n break;\n\n case HostRoot:\n parent = parentStateNode.containerInfo;\n isContainer = true;\n break;\n\n case HostPortal:\n parent = parentStateNode.containerInfo;\n isContainer = true;\n break;\n\n case FundamentalComponent:\n\n // eslint-disable-next-line-no-fallthrough\n\n default:\n {\n {\n throw Error( \"Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n }\n\n if (parentFiber.flags & ContentReset) {\n // Reset the text content of the parent before doing any insertions\n resetTextContent(parent); // Clear ContentReset from the effect tag\n\n parentFiber.flags &= ~ContentReset;\n }\n\n var before = getHostSibling(finishedWork); // We only have the top Fiber that was inserted but we need to recurse down its\n // children to find all the terminal nodes.\n\n if (isContainer) {\n insertOrAppendPlacementNodeIntoContainer(finishedWork, before, parent);\n } else {\n insertOrAppendPlacementNode(finishedWork, before, parent);\n }\n}\n\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n var isHost = tag === HostComponent || tag === HostText;\n\n if (isHost || enableFundamentalAPI ) {\n var stateNode = isHost ? node.stateNode : node.stateNode.instance;\n\n if (before) {\n insertInContainerBefore(parent, stateNode, before);\n } else {\n appendChildToContainer(parent, stateNode);\n }\n } else if (tag === HostPortal) ; else {\n var child = node.child;\n\n if (child !== null) {\n insertOrAppendPlacementNodeIntoContainer(child, before, parent);\n var sibling = child.sibling;\n\n while (sibling !== null) {\n insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);\n sibling = sibling.sibling;\n }\n }\n }\n}\n\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n var isHost = tag === HostComponent || tag === HostText;\n\n if (isHost || enableFundamentalAPI ) {\n var stateNode = isHost ? node.stateNode : node.stateNode.instance;\n\n if (before) {\n insertBefore(parent, stateNode, before);\n } else {\n appendChild(parent, stateNode);\n }\n } else if (tag === HostPortal) ; else {\n var child = node.child;\n\n if (child !== null) {\n insertOrAppendPlacementNode(child, before, parent);\n var sibling = child.sibling;\n\n while (sibling !== null) {\n insertOrAppendPlacementNode(sibling, before, parent);\n sibling = sibling.sibling;\n }\n }\n }\n}\n\nfunction unmountHostComponents(finishedRoot, current, renderPriorityLevel) {\n // We only have the top Fiber that was deleted but we need to recurse down its\n // children to find all the terminal nodes.\n var node = current; // Each iteration, currentParent is populated with node's host parent if not\n // currentParentIsValid.\n\n var currentParentIsValid = false; // Note: these two variables *must* always be updated together.\n\n var currentParent;\n var currentParentIsContainer;\n\n while (true) {\n if (!currentParentIsValid) {\n var parent = node.return;\n\n findParent: while (true) {\n if (!(parent !== null)) {\n {\n throw Error( \"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n var parentStateNode = parent.stateNode;\n\n switch (parent.tag) {\n case HostComponent:\n currentParent = parentStateNode;\n currentParentIsContainer = false;\n break findParent;\n\n case HostRoot:\n currentParent = parentStateNode.containerInfo;\n currentParentIsContainer = true;\n break findParent;\n\n case HostPortal:\n currentParent = parentStateNode.containerInfo;\n currentParentIsContainer = true;\n break findParent;\n\n }\n\n parent = parent.return;\n }\n\n currentParentIsValid = true;\n }\n\n if (node.tag === HostComponent || node.tag === HostText) {\n commitNestedUnmounts(finishedRoot, node); // After all the children have unmounted, it is now safe to remove the\n // node from the tree.\n\n if (currentParentIsContainer) {\n removeChildFromContainer(currentParent, node.stateNode);\n } else {\n removeChild(currentParent, node.stateNode);\n } // Don't visit children because we already visited them.\n\n } else if (node.tag === HostPortal) {\n if (node.child !== null) {\n // When we go into a portal, it becomes the parent to remove from.\n // We will reassign it back when we pop the portal on the way up.\n currentParent = node.stateNode.containerInfo;\n currentParentIsContainer = true; // Visit children because portals might contain host components.\n\n node.child.return = node;\n node = node.child;\n continue;\n }\n } else {\n commitUnmount(finishedRoot, node); // Visit children because we may find more host components below.\n\n if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n }\n\n if (node === current) {\n return;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === current) {\n return;\n }\n\n node = node.return;\n\n if (node.tag === HostPortal) {\n // When we go out of the portal, we need to restore the parent.\n // Since we don't keep a stack of them, we will search for it.\n currentParentIsValid = false;\n }\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n}\n\nfunction commitDeletion(finishedRoot, current, renderPriorityLevel) {\n {\n // Recursively delete all host nodes from the parent.\n // Detach refs and call componentWillUnmount() on the whole subtree.\n unmountHostComponents(finishedRoot, current);\n }\n\n var alternate = current.alternate;\n detachFiberMutation(current);\n\n if (alternate !== null) {\n detachFiberMutation(alternate);\n }\n}\n\nfunction commitWork(current, finishedWork) {\n\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case MemoComponent:\n case SimpleMemoComponent:\n case Block:\n {\n // Layout effects are destroyed during the mutation phase so that all\n // destroy functions for all fibers are called before any create functions.\n // This prevents sibling component effects from interfering with each other,\n // e.g. a destroy function in one component should never override a ref set\n // by a create function in another component during the same commit.\n {\n commitHookEffectListUnmount(Layout | HasEffect, finishedWork);\n }\n\n return;\n }\n\n case ClassComponent:\n {\n return;\n }\n\n case HostComponent:\n {\n var instance = finishedWork.stateNode;\n\n if (instance != null) {\n // Commit the work prepared earlier.\n var newProps = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n // as the newProps. The updatePayload will contain the real change in\n // this case.\n\n var oldProps = current !== null ? current.memoizedProps : newProps;\n var type = finishedWork.type; // TODO: Type the updateQueue to be specific to host components.\n\n var updatePayload = finishedWork.updateQueue;\n finishedWork.updateQueue = null;\n\n if (updatePayload !== null) {\n commitUpdate(instance, updatePayload, type, oldProps, newProps);\n }\n }\n\n return;\n }\n\n case HostText:\n {\n if (!(finishedWork.stateNode !== null)) {\n {\n throw Error( \"This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n\n var textInstance = finishedWork.stateNode;\n var newText = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n // as the newProps. The updatePayload will contain the real change in\n // this case.\n\n var oldText = current !== null ? current.memoizedProps : newText;\n commitTextUpdate(textInstance, oldText, newText);\n return;\n }\n\n case HostRoot:\n {\n {\n var _root = finishedWork.stateNode;\n\n if (_root.hydrate) {\n // We've just hydrated. No need to hydrate again.\n _root.hydrate = false;\n commitHydratedContainer(_root.containerInfo);\n }\n }\n\n return;\n }\n\n case Profiler:\n {\n return;\n }\n\n case SuspenseComponent:\n {\n commitSuspenseComponent(finishedWork);\n attachSuspenseRetryListeners(finishedWork);\n return;\n }\n\n case SuspenseListComponent:\n {\n attachSuspenseRetryListeners(finishedWork);\n return;\n }\n\n case IncompleteClassComponent:\n {\n return;\n }\n\n case FundamentalComponent:\n {\n\n break;\n }\n\n case ScopeComponent:\n {\n\n break;\n }\n\n case OffscreenComponent:\n case LegacyHiddenComponent:\n {\n var newState = finishedWork.memoizedState;\n var isHidden = newState !== null;\n hideOrUnhideAllChildren(finishedWork, isHidden);\n return;\n }\n }\n\n {\n {\n throw Error( \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n}\n\nfunction commitSuspenseComponent(finishedWork) {\n var newState = finishedWork.memoizedState;\n\n if (newState !== null) {\n markCommitTimeOfFallback();\n\n {\n // Hide the Offscreen component that contains the primary children. TODO:\n // Ideally, this effect would have been scheduled on the Offscreen fiber\n // itself. That's how unhiding works: the Offscreen component schedules an\n // effect on itself. However, in this case, the component didn't complete,\n // so the fiber was never added to the effect list in the normal path. We\n // could have appended it to the effect list in the Suspense component's\n // second pass, but doing it this way is less complicated. This would be\n // simpler if we got rid of the effect list and traversed the tree, like\n // we're planning to do.\n var primaryChildParent = finishedWork.child;\n hideOrUnhideAllChildren(primaryChildParent, true);\n }\n }\n}\n\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n\n var newState = finishedWork.memoizedState;\n\n if (newState === null) {\n var current = finishedWork.alternate;\n\n if (current !== null) {\n var prevState = current.memoizedState;\n\n if (prevState !== null) {\n var suspenseInstance = prevState.dehydrated;\n\n if (suspenseInstance !== null) {\n commitHydratedSuspenseInstance(suspenseInstance);\n }\n }\n }\n }\n}\n\nfunction attachSuspenseRetryListeners(finishedWork) {\n // If this boundary just timed out, then it will have a set of wakeables.\n // For each wakeable, attach a listener so that when it resolves, React\n // attempts to re-render the boundary in the primary (pre-timeout) state.\n var wakeables = finishedWork.updateQueue;\n\n if (wakeables !== null) {\n finishedWork.updateQueue = null;\n var retryCache = finishedWork.stateNode;\n\n if (retryCache === null) {\n retryCache = finishedWork.stateNode = new PossiblyWeakSet();\n }\n\n wakeables.forEach(function (wakeable) {\n // Memoize using the boundary fiber to prevent redundant listeners.\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n\n if (!retryCache.has(wakeable)) {\n {\n if (wakeable.__reactDoNotTraceInteractions !== true) {\n retry = tracing.unstable_wrap(retry);\n }\n }\n\n retryCache.add(wakeable);\n wakeable.then(retry, retry);\n }\n });\n }\n} // This function detects when a Suspense boundary goes from visible to hidden.\n// It returns false if the boundary is already hidden.\n// TODO: Use an effect tag.\n\n\nfunction isSuspenseBoundaryBeingHidden(current, finishedWork) {\n if (current !== null) {\n var oldState = current.memoizedState;\n\n if (oldState === null || oldState.dehydrated !== null) {\n var newState = finishedWork.memoizedState;\n return newState !== null && newState.dehydrated === null;\n }\n }\n\n return false;\n}\n\nfunction commitResetTextContent(current) {\n\n resetTextContent(current.stateNode);\n}\n\nvar COMPONENT_TYPE = 0;\nvar HAS_PSEUDO_CLASS_TYPE = 1;\nvar ROLE_TYPE = 2;\nvar TEST_NAME_TYPE = 3;\nvar TEXT_TYPE = 4;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n var symbolFor$1 = Symbol.for;\n COMPONENT_TYPE = symbolFor$1('selector.component');\n HAS_PSEUDO_CLASS_TYPE = symbolFor$1('selector.has_pseudo_class');\n ROLE_TYPE = symbolFor$1('selector.role');\n TEST_NAME_TYPE = symbolFor$1('selector.test_id');\n TEXT_TYPE = symbolFor$1('selector.text');\n}\nvar commitHooks = [];\nfunction onCommitRoot$1() {\n {\n commitHooks.forEach(function (commitHook) {\n return commitHook();\n });\n }\n}\n\nvar ceil = Math.ceil;\nvar ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher,\n ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,\n IsSomeRendererActing = ReactSharedInternals.IsSomeRendererActing;\nvar NoContext =\n/* */\n0;\nvar BatchedContext =\n/* */\n1;\nvar EventContext =\n/* */\n2;\nvar DiscreteEventContext =\n/* */\n4;\nvar LegacyUnbatchedContext =\n/* */\n8;\nvar RenderContext =\n/* */\n16;\nvar CommitContext =\n/* */\n32;\nvar RetryAfterError =\n/* */\n64;\nvar RootIncomplete = 0;\nvar RootFatalErrored = 1;\nvar RootErrored = 2;\nvar RootSuspended = 3;\nvar RootSuspendedWithDelay = 4;\nvar RootCompleted = 5; // Describes where we are in the React execution stack\n\nvar executionContext = NoContext; // The root we're working on\n\nvar workInProgressRoot = null; // The fiber we're working on\n\nvar workInProgress = null; // The lanes we're rendering\n\nvar workInProgressRootRenderLanes = NoLanes; // Stack that allows components to change the render lanes for its subtree\n// This is a superset of the lanes we started working on at the root. The only\n// case where it's different from `workInProgressRootRenderLanes` is when we\n// enter a subtree that is hidden and needs to be unhidden: Suspense and\n// Offscreen component.\n//\n// Most things in the work loop should deal with workInProgressRootRenderLanes.\n// Most things in begin/complete phases should deal with subtreeRenderLanes.\n\nvar subtreeRenderLanes = NoLanes;\nvar subtreeRenderLanesCursor = createCursor(NoLanes); // Whether to root completed, errored, suspended, etc.\n\nvar workInProgressRootExitStatus = RootIncomplete; // A fatal error, if one is thrown\n\nvar workInProgressRootFatalError = null; // \"Included\" lanes refer to lanes that were worked on during this render. It's\n// slightly different than `renderLanes` because `renderLanes` can change as you\n// enter and exit an Offscreen tree. This value is the combination of all render\n// lanes for the entire render phase.\n\nvar workInProgressRootIncludedLanes = NoLanes; // The work left over by components that were visited during this render. Only\n// includes unprocessed updates, not work in bailed out children.\n\nvar workInProgressRootSkippedLanes = NoLanes; // Lanes that were updated (in an interleaved event) during this render.\n\nvar workInProgressRootUpdatedLanes = NoLanes; // Lanes that were pinged (in an interleaved event) during this render.\n\nvar workInProgressRootPingedLanes = NoLanes;\nvar mostRecentlyUpdatedRoot = null; // The most recent time we committed a fallback. This lets us ensure a train\n// model where we don't commit new loading states in too quick succession.\n\nvar globalMostRecentFallbackTime = 0;\nvar FALLBACK_THROTTLE_MS = 500; // The absolute time for when we should start giving up on rendering\n// more and prefer CPU suspense heuristics instead.\n\nvar workInProgressRootRenderTargetTime = Infinity; // How long a render is supposed to take before we start following CPU\n// suspense heuristics and opt out of rendering more content.\n\nvar RENDER_TIMEOUT_MS = 500;\n\nfunction resetRenderTimer() {\n workInProgressRootRenderTargetTime = now() + RENDER_TIMEOUT_MS;\n}\n\nfunction getRenderTargetTime() {\n return workInProgressRootRenderTargetTime;\n}\nvar nextEffect = null;\nvar hasUncaughtError = false;\nvar firstUncaughtError = null;\nvar legacyErrorBoundariesThatAlreadyFailed = null;\nvar rootDoesHavePassiveEffects = false;\nvar rootWithPendingPassiveEffects = null;\nvar pendingPassiveEffectsRenderPriority = NoPriority$1;\nvar pendingPassiveEffectsLanes = NoLanes;\nvar pendingPassiveHookEffectsMount = [];\nvar pendingPassiveHookEffectsUnmount = [];\nvar rootsWithPendingDiscreteUpdates = null; // Use these to prevent an infinite loop of nested updates\n\nvar NESTED_UPDATE_LIMIT = 50;\nvar nestedUpdateCount = 0;\nvar rootWithNestedUpdates = null;\nvar NESTED_PASSIVE_UPDATE_LIMIT = 50;\nvar nestedPassiveUpdateCount = 0; // Marks the need to reschedule pending interactions at these lanes\n// during the commit phase. This enables them to be traced across components\n// that spawn new work during render. E.g. hidden boundaries, suspended SSR\n// hydration or SuspenseList.\n// TODO: Can use a bitmask instead of an array\n\nvar spawnedWorkDuringRender = null; // If two updates are scheduled within the same event, we should treat their\n// event times as simultaneous, even if the actual clock time has advanced\n// between the first and second call.\n\nvar currentEventTime = NoTimestamp;\nvar currentEventWipLanes = NoLanes;\nvar currentEventPendingLanes = NoLanes; // Dev only flag that tracks if passive effects are currently being flushed.\n// We warn about state updates for unmounted components differently in this case.\n\nvar isFlushingPassiveEffects = false;\nvar focusedInstanceHandle = null;\nvar shouldFireAfterActiveInstanceBlur = false;\nfunction getWorkInProgressRoot() {\n return workInProgressRoot;\n}\nfunction requestEventTime() {\n if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n // We're inside React, so it's fine to read the actual time.\n return now();\n } // We're not inside React, so we may be in the middle of a browser event.\n\n\n if (currentEventTime !== NoTimestamp) {\n // Use the same start time for all updates until we enter React again.\n return currentEventTime;\n } // This is the first update since React yielded. Compute a new start time.\n\n\n currentEventTime = now();\n return currentEventTime;\n}\nfunction requestUpdateLane(fiber) {\n // Special cases\n var mode = fiber.mode;\n\n if ((mode & BlockingMode) === NoMode) {\n return SyncLane;\n } else if ((mode & ConcurrentMode) === NoMode) {\n return getCurrentPriorityLevel() === ImmediatePriority$1 ? SyncLane : SyncBatchedLane;\n } // The algorithm for assigning an update to a lane should be stable for all\n // updates at the same priority within the same event. To do this, the inputs\n // to the algorithm must be the same. For example, we use the `renderLanes`\n // to avoid choosing a lane that is already in the middle of rendering.\n //\n // However, the \"included\" lanes could be mutated in between updates in the\n // same event, like if you perform an update inside `flushSync`. Or any other\n // code path that might call `prepareFreshStack`.\n //\n // The trick we use is to cache the first of each of these inputs within an\n // event. Then reset the cached values once we can be sure the event is over.\n // Our heuristic for that is whenever we enter a concurrent work loop.\n //\n // We'll do the same for `currentEventPendingLanes` below.\n\n\n if (currentEventWipLanes === NoLanes) {\n currentEventWipLanes = workInProgressRootIncludedLanes;\n }\n\n var isTransition = requestCurrentTransition() !== NoTransition;\n\n if (isTransition) {\n if (currentEventPendingLanes !== NoLanes) {\n currentEventPendingLanes = mostRecentlyUpdatedRoot !== null ? mostRecentlyUpdatedRoot.pendingLanes : NoLanes;\n }\n\n return findTransitionLane(currentEventWipLanes, currentEventPendingLanes);\n } // TODO: Remove this dependency on the Scheduler priority.\n // To do that, we're replacing it with an update lane priority.\n\n\n var schedulerPriority = getCurrentPriorityLevel(); // The old behavior was using the priority level of the Scheduler.\n // This couples React to the Scheduler internals, so we're replacing it\n // with the currentUpdateLanePriority above. As an example of how this\n // could be problematic, if we're not inside `Scheduler.runWithPriority`,\n // then we'll get the priority of the current running Scheduler task,\n // which is probably not what we want.\n\n var lane;\n\n if ( // TODO: Temporary. We're removing the concept of discrete updates.\n (executionContext & DiscreteEventContext) !== NoContext && schedulerPriority === UserBlockingPriority$2) {\n lane = findUpdateLane(InputDiscreteLanePriority, currentEventWipLanes);\n } else {\n var schedulerLanePriority = schedulerPriorityToLanePriority(schedulerPriority);\n\n lane = findUpdateLane(schedulerLanePriority, currentEventWipLanes);\n }\n\n return lane;\n}\n\nfunction requestRetryLane(fiber) {\n // This is a fork of `requestUpdateLane` designed specifically for Suspense\n // \"retries\" \u2014 a special update that attempts to flip a Suspense boundary\n // from its placeholder state to its primary/resolved state.\n // Special cases\n var mode = fiber.mode;\n\n if ((mode & BlockingMode) === NoMode) {\n return SyncLane;\n } else if ((mode & ConcurrentMode) === NoMode) {\n return getCurrentPriorityLevel() === ImmediatePriority$1 ? SyncLane : SyncBatchedLane;\n } // See `requestUpdateLane` for explanation of `currentEventWipLanes`\n\n\n if (currentEventWipLanes === NoLanes) {\n currentEventWipLanes = workInProgressRootIncludedLanes;\n }\n\n return findRetryLane(currentEventWipLanes);\n}\n\nfunction scheduleUpdateOnFiber(fiber, lane, eventTime) {\n checkForNestedUpdates();\n warnAboutRenderPhaseUpdatesInDEV(fiber);\n var root = markUpdateLaneFromFiberToRoot(fiber, lane);\n\n if (root === null) {\n warnAboutUpdateOnUnmountedFiberInDEV(fiber);\n return null;\n } // Mark that the root has a pending update.\n\n\n markRootUpdated(root, lane, eventTime);\n\n if (root === workInProgressRoot) {\n // Received an update to a tree that's in the middle of rendering. Mark\n // that there was an interleaved update work on this root. Unless the\n // `deferRenderPhaseUpdateToNextBatch` flag is off and this is a render\n // phase update. In that case, we don't treat render phase updates as if\n // they were interleaved, for backwards compat reasons.\n {\n workInProgressRootUpdatedLanes = mergeLanes(workInProgressRootUpdatedLanes, lane);\n }\n\n if (workInProgressRootExitStatus === RootSuspendedWithDelay) {\n // The root already suspended with a delay, which means this render\n // definitely won't finish. Since we have a new update, let's mark it as\n // suspended now, right before marking the incoming update. This has the\n // effect of interrupting the current render and switching to the update.\n // TODO: Make sure this doesn't override pings that happen while we've\n // already started rendering.\n markRootSuspended$1(root, workInProgressRootRenderLanes);\n }\n } // TODO: requestUpdateLanePriority also reads the priority. Pass the\n // priority as an argument to that function and this one.\n\n\n var priorityLevel = getCurrentPriorityLevel();\n\n if (lane === SyncLane) {\n if ( // Check if we're inside unbatchedUpdates\n (executionContext & LegacyUnbatchedContext) !== NoContext && // Check if we're not already rendering\n (executionContext & (RenderContext | CommitContext)) === NoContext) {\n // Register pending interactions on the root to avoid losing traced interaction data.\n schedulePendingInteractions(root, lane); // This is a legacy edge case. The initial mount of a ReactDOM.render-ed\n // root inside of batchedUpdates should be synchronous, but layout updates\n // should be deferred until the end of the batch.\n\n performSyncWorkOnRoot(root);\n } else {\n ensureRootIsScheduled(root, eventTime);\n schedulePendingInteractions(root, lane);\n\n if (executionContext === NoContext) {\n // Flush the synchronous work now, unless we're already working or inside\n // a batch. This is intentionally inside scheduleUpdateOnFiber instead of\n // scheduleCallbackForFiber to preserve the ability to schedule a callback\n // without immediately flushing it. We only do this for user-initiated\n // updates, to preserve historical behavior of legacy mode.\n resetRenderTimer();\n flushSyncCallbackQueue();\n }\n }\n } else {\n // Schedule a discrete update but only if it's not Sync.\n if ((executionContext & DiscreteEventContext) !== NoContext && ( // Only updates at user-blocking priority or greater are considered\n // discrete, even inside a discrete event.\n priorityLevel === UserBlockingPriority$2 || priorityLevel === ImmediatePriority$1)) {\n // This is the result of a discrete event. Track the lowest priority\n // discrete update per root so we can flush them early, if needed.\n if (rootsWithPendingDiscreteUpdates === null) {\n rootsWithPendingDiscreteUpdates = new Set([root]);\n } else {\n rootsWithPendingDiscreteUpdates.add(root);\n }\n } // Schedule other updates after in case the callback is sync.\n\n\n ensureRootIsScheduled(root, eventTime);\n schedulePendingInteractions(root, lane);\n } // We use this when assigning a lane for a transition inside\n // `requestUpdateLane`. We assume it's the same as the root being updated,\n // since in the common case of a single root app it probably is. If it's not\n // the same root, then it's not a huge deal, we just might batch more stuff\n // together more than necessary.\n\n\n mostRecentlyUpdatedRoot = root;\n} // This is split into a separate function so we can mark a fiber with pending\n// work without treating it as a typical update that originates from an event;\n// e.g. retrying a Suspense boundary isn't an update, but it does schedule work\n// on a fiber.\n\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, lane) {\n // Update the source fiber's lanes\n sourceFiber.lanes = mergeLanes(sourceFiber.lanes, lane);\n var alternate = sourceFiber.alternate;\n\n if (alternate !== null) {\n alternate.lanes = mergeLanes(alternate.lanes, lane);\n }\n\n {\n if (alternate === null && (sourceFiber.flags & (Placement | Hydrating)) !== NoFlags) {\n warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n }\n } // Walk the parent path to the root and update the child expiration time.\n\n\n var node = sourceFiber;\n var parent = sourceFiber.return;\n\n while (parent !== null) {\n parent.childLanes = mergeLanes(parent.childLanes, lane);\n alternate = parent.alternate;\n\n if (alternate !== null) {\n alternate.childLanes = mergeLanes(alternate.childLanes, lane);\n } else {\n {\n if ((parent.flags & (Placement | Hydrating)) !== NoFlags) {\n warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n }\n }\n }\n\n node = parent;\n parent = parent.return;\n }\n\n if (node.tag === HostRoot) {\n var root = node.stateNode;\n return root;\n } else {\n return null;\n }\n} // Use this function to schedule a task for a root. There's only one task per\n// root; if a task was already scheduled, we'll check to make sure the priority\n// of the existing task is the same as the priority of the next level that the\n// root has work on. This function is called on every update, and right before\n// exiting a task.\n\n\nfunction ensureRootIsScheduled(root, currentTime) {\n var existingCallbackNode = root.callbackNode; // Check if any lanes are being starved by other work. If so, mark them as\n // expired so we know to work on those next.\n\n markStarvedLanesAsExpired(root, currentTime); // Determine the next lanes to work on, and their priority.\n\n var nextLanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes); // This returns the priority level computed during the `getNextLanes` call.\n\n var newCallbackPriority = returnNextLanesPriority();\n\n if (nextLanes === NoLanes) {\n // Special case: There's nothing to work on.\n if (existingCallbackNode !== null) {\n cancelCallback(existingCallbackNode);\n root.callbackNode = null;\n root.callbackPriority = NoLanePriority;\n }\n\n return;\n } // Check if there's an existing task. We may be able to reuse it.\n\n\n if (existingCallbackNode !== null) {\n var existingCallbackPriority = root.callbackPriority;\n\n if (existingCallbackPriority === newCallbackPriority) {\n // The priority hasn't changed. We can reuse the existing task. Exit.\n return;\n } // The priority changed. Cancel the existing callback. We'll schedule a new\n // one below.\n\n\n cancelCallback(existingCallbackNode);\n } // Schedule a new callback.\n\n\n var newCallbackNode;\n\n if (newCallbackPriority === SyncLanePriority) {\n // Special case: Sync React callbacks are scheduled on a special\n // internal queue\n newCallbackNode = scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root));\n } else if (newCallbackPriority === SyncBatchedLanePriority) {\n newCallbackNode = scheduleCallback(ImmediatePriority$1, performSyncWorkOnRoot.bind(null, root));\n } else {\n var schedulerPriorityLevel = lanePriorityToSchedulerPriority(newCallbackPriority);\n newCallbackNode = scheduleCallback(schedulerPriorityLevel, performConcurrentWorkOnRoot.bind(null, root));\n }\n\n root.callbackPriority = newCallbackPriority;\n root.callbackNode = newCallbackNode;\n} // This is the entry point for every concurrent task, i.e. anything that\n// goes through Scheduler.\n\n\nfunction performConcurrentWorkOnRoot(root) {\n // Since we know we're in a React event, we can clear the current\n // event time. The next update will compute a new event time.\n currentEventTime = NoTimestamp;\n currentEventWipLanes = NoLanes;\n currentEventPendingLanes = NoLanes;\n\n if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {\n {\n throw Error( \"Should not already be working.\" );\n }\n } // Flush any pending passive effects before deciding which lanes to work on,\n // in case they schedule additional work.\n\n\n var originalCallbackNode = root.callbackNode;\n var didFlushPassiveEffects = flushPassiveEffects();\n\n if (didFlushPassiveEffects) {\n // Something in the passive effect phase may have canceled the current task.\n // Check if the task node for this root was changed.\n if (root.callbackNode !== originalCallbackNode) {\n // The current task was canceled. Exit. We don't need to call\n // `ensureRootIsScheduled` because the check above implies either that\n // there's a new task, or that there's no remaining work on this root.\n return null;\n }\n } // Determine the next expiration time to work on, using the fields stored\n // on the root.\n\n\n var lanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n\n if (lanes === NoLanes) {\n // Defensive coding. This is never expected to happen.\n return null;\n }\n\n var exitStatus = renderRootConcurrent(root, lanes);\n\n if (includesSomeLane(workInProgressRootIncludedLanes, workInProgressRootUpdatedLanes)) {\n // The render included lanes that were updated during the render phase.\n // For example, when unhiding a hidden tree, we include all the lanes\n // that were previously skipped when the tree was hidden. That set of\n // lanes is a superset of the lanes we started rendering with.\n //\n // So we'll throw out the current work and restart.\n prepareFreshStack(root, NoLanes);\n } else if (exitStatus !== RootIncomplete) {\n if (exitStatus === RootErrored) {\n executionContext |= RetryAfterError; // If an error occurred during hydration,\n // discard server response and fall back to client side render.\n\n if (root.hydrate) {\n root.hydrate = false;\n clearContainer(root.containerInfo);\n } // If something threw an error, try rendering one more time. We'll render\n // synchronously to block concurrent data mutations, and we'll includes\n // all pending updates are included. If it still fails after the second\n // attempt, we'll give up and commit the resulting tree.\n\n\n lanes = getLanesToRetrySynchronouslyOnError(root);\n\n if (lanes !== NoLanes) {\n exitStatus = renderRootSync(root, lanes);\n }\n }\n\n if (exitStatus === RootFatalErrored) {\n var fatalError = workInProgressRootFatalError;\n prepareFreshStack(root, NoLanes);\n markRootSuspended$1(root, lanes);\n ensureRootIsScheduled(root, now());\n throw fatalError;\n } // We now have a consistent tree. The next step is either to commit it,\n // or, if something suspended, wait to commit it after a timeout.\n\n\n var finishedWork = root.current.alternate;\n root.finishedWork = finishedWork;\n root.finishedLanes = lanes;\n finishConcurrentRender(root, exitStatus, lanes);\n }\n\n ensureRootIsScheduled(root, now());\n\n if (root.callbackNode === originalCallbackNode) {\n // The task node scheduled for this root is the same one that's\n // currently executed. Need to return a continuation.\n return performConcurrentWorkOnRoot.bind(null, root);\n }\n\n return null;\n}\n\nfunction finishConcurrentRender(root, exitStatus, lanes) {\n switch (exitStatus) {\n case RootIncomplete:\n case RootFatalErrored:\n {\n {\n {\n throw Error( \"Root did not complete. This is a bug in React.\" );\n }\n }\n }\n // Flow knows about invariant, so it complains if I add a break\n // statement, but eslint doesn't know about invariant, so it complains\n // if I do. eslint-disable-next-line no-fallthrough\n\n case RootErrored:\n {\n // We should have already attempted to retry this tree. If we reached\n // this point, it errored again. Commit it.\n commitRoot(root);\n break;\n }\n\n case RootSuspended:\n {\n markRootSuspended$1(root, lanes); // We have an acceptable loading state. We need to figure out if we\n // should immediately commit it or wait a bit.\n\n if (includesOnlyRetries(lanes) && // do not delay if we're inside an act() scope\n !shouldForceFlushFallbacksInDEV()) {\n // This render only included retries, no updates. Throttle committing\n // retries so that we don't show too many loading states too quickly.\n var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now(); // Don't bother with a very short suspense time.\n\n if (msUntilTimeout > 10) {\n var nextLanes = getNextLanes(root, NoLanes);\n\n if (nextLanes !== NoLanes) {\n // There's additional work on this root.\n break;\n }\n\n var suspendedLanes = root.suspendedLanes;\n\n if (!isSubsetOfLanes(suspendedLanes, lanes)) {\n // We should prefer to render the fallback of at the last\n // suspended level. Ping the last suspended level to try\n // rendering it again.\n // FIXME: What if the suspended lanes are Idle? Should not restart.\n var eventTime = requestEventTime();\n markRootPinged(root, suspendedLanes);\n break;\n } // The render is suspended, it hasn't timed out, and there's no\n // lower priority work to do. Instead of committing the fallback\n // immediately, wait for more data to arrive.\n\n\n root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), msUntilTimeout);\n break;\n }\n } // The work expired. Commit immediately.\n\n\n commitRoot(root);\n break;\n }\n\n case RootSuspendedWithDelay:\n {\n markRootSuspended$1(root, lanes);\n\n if (includesOnlyTransitions(lanes)) {\n // This is a transition, so we should exit without committing a\n // placeholder and without scheduling a timeout. Delay indefinitely\n // until we receive more data.\n break;\n }\n\n if (!shouldForceFlushFallbacksInDEV()) {\n // This is not a transition, but we did trigger an avoided state.\n // Schedule a placeholder to display after a short delay, using the Just\n // Noticeable Difference.\n // TODO: Is the JND optimization worth the added complexity? If this is\n // the only reason we track the event time, then probably not.\n // Consider removing.\n var mostRecentEventTime = getMostRecentEventTime(root, lanes);\n var eventTimeMs = mostRecentEventTime;\n var timeElapsedMs = now() - eventTimeMs;\n\n var _msUntilTimeout = jnd(timeElapsedMs) - timeElapsedMs; // Don't bother with a very short suspense time.\n\n\n if (_msUntilTimeout > 10) {\n // Instead of committing the fallback immediately, wait for more data\n // to arrive.\n root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), _msUntilTimeout);\n break;\n }\n } // Commit the placeholder.\n\n\n commitRoot(root);\n break;\n }\n\n case RootCompleted:\n {\n // The work completed. Ready to commit.\n commitRoot(root);\n break;\n }\n\n default:\n {\n {\n {\n throw Error( \"Unknown root exit status.\" );\n }\n }\n }\n }\n}\n\nfunction markRootSuspended$1(root, suspendedLanes) {\n // When suspending, we should always exclude lanes that were pinged or (more\n // rarely, since we try to avoid it) updated during the render phase.\n // TODO: Lol maybe there's a better way to factor this besides this\n // obnoxiously named function :)\n suspendedLanes = removeLanes(suspendedLanes, workInProgressRootPingedLanes);\n suspendedLanes = removeLanes(suspendedLanes, workInProgressRootUpdatedLanes);\n markRootSuspended(root, suspendedLanes);\n} // This is the entry point for synchronous tasks that don't go\n// through Scheduler\n\n\nfunction performSyncWorkOnRoot(root) {\n if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {\n {\n throw Error( \"Should not already be working.\" );\n }\n }\n\n flushPassiveEffects();\n var lanes;\n var exitStatus;\n\n if (root === workInProgressRoot && includesSomeLane(root.expiredLanes, workInProgressRootRenderLanes)) {\n // There's a partial tree, and at least one of its lanes has expired. Finish\n // rendering it before rendering the rest of the expired work.\n lanes = workInProgressRootRenderLanes;\n exitStatus = renderRootSync(root, lanes);\n\n if (includesSomeLane(workInProgressRootIncludedLanes, workInProgressRootUpdatedLanes)) {\n // The render included lanes that were updated during the render phase.\n // For example, when unhiding a hidden tree, we include all the lanes\n // that were previously skipped when the tree was hidden. That set of\n // lanes is a superset of the lanes we started rendering with.\n //\n // Note that this only happens when part of the tree is rendered\n // concurrently. If the whole tree is rendered synchronously, then there\n // are no interleaved events.\n lanes = getNextLanes(root, lanes);\n exitStatus = renderRootSync(root, lanes);\n }\n } else {\n lanes = getNextLanes(root, NoLanes);\n exitStatus = renderRootSync(root, lanes);\n }\n\n if (root.tag !== LegacyRoot && exitStatus === RootErrored) {\n executionContext |= RetryAfterError; // If an error occurred during hydration,\n // discard server response and fall back to client side render.\n\n if (root.hydrate) {\n root.hydrate = false;\n clearContainer(root.containerInfo);\n } // If something threw an error, try rendering one more time. We'll render\n // synchronously to block concurrent data mutations, and we'll includes\n // all pending updates are included. If it still fails after the second\n // attempt, we'll give up and commit the resulting tree.\n\n\n lanes = getLanesToRetrySynchronouslyOnError(root);\n\n if (lanes !== NoLanes) {\n exitStatus = renderRootSync(root, lanes);\n }\n }\n\n if (exitStatus === RootFatalErrored) {\n var fatalError = workInProgressRootFatalError;\n prepareFreshStack(root, NoLanes);\n markRootSuspended$1(root, lanes);\n ensureRootIsScheduled(root, now());\n throw fatalError;\n } // We now have a consistent tree. Because this is a sync render, we\n // will commit it even if something suspended.\n\n\n var finishedWork = root.current.alternate;\n root.finishedWork = finishedWork;\n root.finishedLanes = lanes;\n commitRoot(root); // Before exiting, make sure there's a callback scheduled for the next\n // pending level.\n\n ensureRootIsScheduled(root, now());\n return null;\n}\nfunction flushDiscreteUpdates() {\n // TODO: Should be able to flush inside batchedUpdates, but not inside `act`.\n // However, `act` uses `batchedUpdates`, so there's no way to distinguish\n // those two cases. Need to fix this before exposing flushDiscreteUpdates\n // as a public API.\n if ((executionContext & (BatchedContext | RenderContext | CommitContext)) !== NoContext) {\n {\n if ((executionContext & RenderContext) !== NoContext) {\n error('unstable_flushDiscreteUpdates: Cannot flush updates when React is ' + 'already rendering.');\n }\n } // We're already rendering, so we can't synchronously flush pending work.\n // This is probably a nested event dispatch triggered by a lifecycle/effect,\n // like `el.focus()`. Exit.\n\n\n return;\n }\n\n flushPendingDiscreteUpdates(); // If the discrete updates scheduled passive effects, flush them now so that\n // they fire before the next serial event.\n\n flushPassiveEffects();\n}\n\nfunction flushPendingDiscreteUpdates() {\n if (rootsWithPendingDiscreteUpdates !== null) {\n // For each root with pending discrete updates, schedule a callback to\n // immediately flush them.\n var roots = rootsWithPendingDiscreteUpdates;\n rootsWithPendingDiscreteUpdates = null;\n roots.forEach(function (root) {\n markDiscreteUpdatesExpired(root);\n ensureRootIsScheduled(root, now());\n });\n } // Now flush the immediate queue.\n\n\n flushSyncCallbackQueue();\n}\n\nfunction batchedUpdates$1(fn, a) {\n var prevExecutionContext = executionContext;\n executionContext |= BatchedContext;\n\n try {\n return fn(a);\n } finally {\n executionContext = prevExecutionContext;\n\n if (executionContext === NoContext) {\n // Flush the immediate callbacks that were scheduled during this batch\n resetRenderTimer();\n flushSyncCallbackQueue();\n }\n }\n}\nfunction batchedEventUpdates$1(fn, a) {\n var prevExecutionContext = executionContext;\n executionContext |= EventContext;\n\n try {\n return fn(a);\n } finally {\n executionContext = prevExecutionContext;\n\n if (executionContext === NoContext) {\n // Flush the immediate callbacks that were scheduled during this batch\n resetRenderTimer();\n flushSyncCallbackQueue();\n }\n }\n}\nfunction discreteUpdates$1(fn, a, b, c, d) {\n var prevExecutionContext = executionContext;\n executionContext |= DiscreteEventContext;\n\n {\n try {\n return runWithPriority$1(UserBlockingPriority$2, fn.bind(null, a, b, c, d));\n } finally {\n executionContext = prevExecutionContext;\n\n if (executionContext === NoContext) {\n // Flush the immediate callbacks that were scheduled during this batch\n resetRenderTimer();\n flushSyncCallbackQueue();\n }\n }\n }\n}\nfunction unbatchedUpdates(fn, a) {\n var prevExecutionContext = executionContext;\n executionContext &= ~BatchedContext;\n executionContext |= LegacyUnbatchedContext;\n\n try {\n return fn(a);\n } finally {\n executionContext = prevExecutionContext;\n\n if (executionContext === NoContext) {\n // Flush the immediate callbacks that were scheduled during this batch\n resetRenderTimer();\n flushSyncCallbackQueue();\n }\n }\n}\nfunction flushSync(fn, a) {\n var prevExecutionContext = executionContext;\n\n if ((prevExecutionContext & (RenderContext | CommitContext)) !== NoContext) {\n {\n error('flushSync was called from inside a lifecycle method. React cannot ' + 'flush when React is already rendering. Consider moving this call to ' + 'a scheduler task or micro task.');\n }\n\n return fn(a);\n }\n\n executionContext |= BatchedContext;\n\n {\n try {\n if (fn) {\n return runWithPriority$1(ImmediatePriority$1, fn.bind(null, a));\n } else {\n return undefined;\n }\n } finally {\n executionContext = prevExecutionContext; // Flush the immediate callbacks that were scheduled during this batch.\n // Note that this will happen even if batchedUpdates is higher up\n // the stack.\n\n flushSyncCallbackQueue();\n }\n }\n}\nfunction pushRenderLanes(fiber, lanes) {\n push(subtreeRenderLanesCursor, subtreeRenderLanes, fiber);\n subtreeRenderLanes = mergeLanes(subtreeRenderLanes, lanes);\n workInProgressRootIncludedLanes = mergeLanes(workInProgressRootIncludedLanes, lanes);\n}\nfunction popRenderLanes(fiber) {\n subtreeRenderLanes = subtreeRenderLanesCursor.current;\n pop(subtreeRenderLanesCursor, fiber);\n}\n\nfunction prepareFreshStack(root, lanes) {\n root.finishedWork = null;\n root.finishedLanes = NoLanes;\n var timeoutHandle = root.timeoutHandle;\n\n if (timeoutHandle !== noTimeout) {\n // The root previous suspended and scheduled a timeout to commit a fallback\n // state. Now that we have additional work, cancel the timeout.\n root.timeoutHandle = noTimeout; // $FlowFixMe Complains noTimeout is not a TimeoutID, despite the check above\n\n cancelTimeout(timeoutHandle);\n }\n\n if (workInProgress !== null) {\n var interruptedWork = workInProgress.return;\n\n while (interruptedWork !== null) {\n unwindInterruptedWork(interruptedWork);\n interruptedWork = interruptedWork.return;\n }\n }\n\n workInProgressRoot = root;\n workInProgress = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = subtreeRenderLanes = workInProgressRootIncludedLanes = lanes;\n workInProgressRootExitStatus = RootIncomplete;\n workInProgressRootFatalError = null;\n workInProgressRootSkippedLanes = NoLanes;\n workInProgressRootUpdatedLanes = NoLanes;\n workInProgressRootPingedLanes = NoLanes;\n\n {\n spawnedWorkDuringRender = null;\n }\n\n {\n ReactStrictModeWarnings.discardPendingWarnings();\n }\n}\n\nfunction handleError(root, thrownValue) {\n do {\n var erroredWork = workInProgress;\n\n try {\n // Reset module-level state that was set during the render phase.\n resetContextDependencies();\n resetHooksAfterThrow();\n resetCurrentFiber(); // TODO: I found and added this missing line while investigating a\n // separate issue. Write a regression test using string refs.\n\n ReactCurrentOwner$2.current = null;\n\n if (erroredWork === null || erroredWork.return === null) {\n // Expected to be working on a non-root fiber. This is a fatal error\n // because there's no ancestor that can handle it; the root is\n // supposed to capture all errors that weren't caught by an error\n // boundary.\n workInProgressRootExitStatus = RootFatalErrored;\n workInProgressRootFatalError = thrownValue; // Set `workInProgress` to null. This represents advancing to the next\n // sibling, or the parent if there are no siblings. But since the root\n // has no siblings nor a parent, we set it to null. Usually this is\n // handled by `completeUnitOfWork` or `unwindWork`, but since we're\n // intentionally not calling those, we need set it here.\n // TODO: Consider calling `unwindWork` to pop the contexts.\n\n workInProgress = null;\n return;\n }\n\n if (enableProfilerTimer && erroredWork.mode & ProfileMode) {\n // Record the time spent rendering before an error was thrown. This\n // avoids inaccurate Profiler durations in the case of a\n // suspended render.\n stopProfilerTimerIfRunningAndRecordDelta(erroredWork, true);\n }\n\n throwException(root, erroredWork.return, erroredWork, thrownValue, workInProgressRootRenderLanes);\n completeUnitOfWork(erroredWork);\n } catch (yetAnotherThrownValue) {\n // Something in the return path also threw.\n thrownValue = yetAnotherThrownValue;\n\n if (workInProgress === erroredWork && erroredWork !== null) {\n // If this boundary has already errored, then we had trouble processing\n // the error. Bubble it to the next boundary.\n erroredWork = erroredWork.return;\n workInProgress = erroredWork;\n } else {\n erroredWork = workInProgress;\n }\n\n continue;\n } // Return to the normal work loop.\n\n\n return;\n } while (true);\n}\n\nfunction pushDispatcher() {\n var prevDispatcher = ReactCurrentDispatcher$2.current;\n ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;\n\n if (prevDispatcher === null) {\n // The React isomorphic package does not include a default dispatcher.\n // Instead the first renderer will lazily attach one, in order to give\n // nicer error messages.\n return ContextOnlyDispatcher;\n } else {\n return prevDispatcher;\n }\n}\n\nfunction popDispatcher(prevDispatcher) {\n ReactCurrentDispatcher$2.current = prevDispatcher;\n}\n\nfunction pushInteractions(root) {\n {\n var prevInteractions = tracing.__interactionsRef.current;\n tracing.__interactionsRef.current = root.memoizedInteractions;\n return prevInteractions;\n }\n}\n\nfunction popInteractions(prevInteractions) {\n {\n tracing.__interactionsRef.current = prevInteractions;\n }\n}\n\nfunction markCommitTimeOfFallback() {\n globalMostRecentFallbackTime = now();\n}\nfunction markSkippedUpdateLanes(lane) {\n workInProgressRootSkippedLanes = mergeLanes(lane, workInProgressRootSkippedLanes);\n}\nfunction renderDidSuspend() {\n if (workInProgressRootExitStatus === RootIncomplete) {\n workInProgressRootExitStatus = RootSuspended;\n }\n}\nfunction renderDidSuspendDelayIfPossible() {\n if (workInProgressRootExitStatus === RootIncomplete || workInProgressRootExitStatus === RootSuspended) {\n workInProgressRootExitStatus = RootSuspendedWithDelay;\n } // Check if there are updates that we skipped tree that might have unblocked\n // this render.\n\n\n if (workInProgressRoot !== null && (includesNonIdleWork(workInProgressRootSkippedLanes) || includesNonIdleWork(workInProgressRootUpdatedLanes))) {\n // Mark the current render as suspended so that we switch to working on\n // the updates that were skipped. Usually we only suspend at the end of\n // the render phase.\n // TODO: We should probably always mark the root as suspended immediately\n // (inside this function), since by suspending at the end of the render\n // phase introduces a potential mistake where we suspend lanes that were\n // pinged or updated while we were rendering.\n markRootSuspended$1(workInProgressRoot, workInProgressRootRenderLanes);\n }\n}\nfunction renderDidError() {\n if (workInProgressRootExitStatus !== RootCompleted) {\n workInProgressRootExitStatus = RootErrored;\n }\n} // Called during render to determine if anything has suspended.\n// Returns false if we're not sure.\n\nfunction renderHasNotSuspendedYet() {\n // If something errored or completed, we can't really be sure,\n // so those are false.\n return workInProgressRootExitStatus === RootIncomplete;\n}\n\nfunction renderRootSync(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= RenderContext;\n var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack\n // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n prepareFreshStack(root, lanes);\n startWorkOnPendingInteractions(root, lanes);\n }\n\n var prevInteractions = pushInteractions(root);\n\n do {\n try {\n workLoopSync();\n break;\n } catch (thrownValue) {\n handleError(root, thrownValue);\n }\n } while (true);\n\n resetContextDependencies();\n\n {\n popInteractions(prevInteractions);\n }\n\n executionContext = prevExecutionContext;\n popDispatcher(prevDispatcher);\n\n if (workInProgress !== null) {\n // This is a sync render, so we should have finished the whole tree.\n {\n {\n throw Error( \"Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n }\n }\n\n\n workInProgressRoot = null;\n workInProgressRootRenderLanes = NoLanes;\n return workInProgressRootExitStatus;\n} // The work loop is an extremely hot path. Tell Closure not to inline it.\n\n/** @noinline */\n\n\nfunction workLoopSync() {\n // Already timed out, so perform work without checking if we need to yield.\n while (workInProgress !== null) {\n performUnitOfWork(workInProgress);\n }\n}\n\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= RenderContext;\n var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack\n // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n resetRenderTimer();\n prepareFreshStack(root, lanes);\n startWorkOnPendingInteractions(root, lanes);\n }\n\n var prevInteractions = pushInteractions(root);\n\n do {\n try {\n workLoopConcurrent();\n break;\n } catch (thrownValue) {\n handleError(root, thrownValue);\n }\n } while (true);\n\n resetContextDependencies();\n\n {\n popInteractions(prevInteractions);\n }\n\n popDispatcher(prevDispatcher);\n executionContext = prevExecutionContext;\n\n\n if (workInProgress !== null) {\n\n return RootIncomplete;\n } else {\n\n\n workInProgressRoot = null;\n workInProgressRootRenderLanes = NoLanes; // Return the final exit status.\n\n return workInProgressRootExitStatus;\n }\n}\n/** @noinline */\n\n\nfunction workLoopConcurrent() {\n // Perform work until Scheduler asks us to yield\n while (workInProgress !== null && !shouldYield()) {\n performUnitOfWork(workInProgress);\n }\n}\n\nfunction performUnitOfWork(unitOfWork) {\n // The current, flushed, state of this fiber is the alternate. Ideally\n // nothing should rely on this, but relying on it here means that we don't\n // need an additional field on the work in progress.\n var current = unitOfWork.alternate;\n setCurrentFiber(unitOfWork);\n var next;\n\n if ( (unitOfWork.mode & ProfileMode) !== NoMode) {\n startProfilerTimer(unitOfWork);\n next = beginWork$1(current, unitOfWork, subtreeRenderLanes);\n stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true);\n } else {\n next = beginWork$1(current, unitOfWork, subtreeRenderLanes);\n }\n\n resetCurrentFiber();\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n\n if (next === null) {\n // If this doesn't spawn new work, complete the current work.\n completeUnitOfWork(unitOfWork);\n } else {\n workInProgress = next;\n }\n\n ReactCurrentOwner$2.current = null;\n}\n\nfunction completeUnitOfWork(unitOfWork) {\n // Attempt to complete the current unit of work, then move to the next\n // sibling. If there are no more siblings, return to the parent fiber.\n var completedWork = unitOfWork;\n\n do {\n // The current, flushed, state of this fiber is the alternate. Ideally\n // nothing should rely on this, but relying on it here means that we don't\n // need an additional field on the work in progress.\n var current = completedWork.alternate;\n var returnFiber = completedWork.return; // Check if the work completed or if something threw.\n\n if ((completedWork.flags & Incomplete) === NoFlags) {\n setCurrentFiber(completedWork);\n var next = void 0;\n\n if ( (completedWork.mode & ProfileMode) === NoMode) {\n next = completeWork(current, completedWork, subtreeRenderLanes);\n } else {\n startProfilerTimer(completedWork);\n next = completeWork(current, completedWork, subtreeRenderLanes); // Update render duration assuming we didn't error.\n\n stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);\n }\n\n resetCurrentFiber();\n\n if (next !== null) {\n // Completing this fiber spawned new work. Work on that next.\n workInProgress = next;\n return;\n }\n\n resetChildLanes(completedWork);\n\n if (returnFiber !== null && // Do not append effects to parents if a sibling failed to complete\n (returnFiber.flags & Incomplete) === NoFlags) {\n // Append all the effects of the subtree and this fiber onto the effect\n // list of the parent. The completion order of the children affects the\n // side-effect order.\n if (returnFiber.firstEffect === null) {\n returnFiber.firstEffect = completedWork.firstEffect;\n }\n\n if (completedWork.lastEffect !== null) {\n if (returnFiber.lastEffect !== null) {\n returnFiber.lastEffect.nextEffect = completedWork.firstEffect;\n }\n\n returnFiber.lastEffect = completedWork.lastEffect;\n } // If this fiber had side-effects, we append it AFTER the children's\n // side-effects. We can perform certain side-effects earlier if needed,\n // by doing multiple passes over the effect list. We don't want to\n // schedule our own side-effect on our own list because if end up\n // reusing children we'll schedule this effect onto itself since we're\n // at the end.\n\n\n var flags = completedWork.flags; // Skip both NoWork and PerformedWork tags when creating the effect\n // list. PerformedWork effect is read by React DevTools but shouldn't be\n // committed.\n\n if (flags > PerformedWork) {\n if (returnFiber.lastEffect !== null) {\n returnFiber.lastEffect.nextEffect = completedWork;\n } else {\n returnFiber.firstEffect = completedWork;\n }\n\n returnFiber.lastEffect = completedWork;\n }\n }\n } else {\n // This fiber did not complete because something threw. Pop values off\n // the stack without entering the complete phase. If this is a boundary,\n // capture values if possible.\n var _next = unwindWork(completedWork); // Because this fiber did not complete, don't reset its expiration time.\n\n\n if (_next !== null) {\n // If completing this work spawned new work, do that next. We'll come\n // back here again.\n // Since we're restarting, remove anything that is not a host effect\n // from the effect tag.\n _next.flags &= HostEffectMask;\n workInProgress = _next;\n return;\n }\n\n if ( (completedWork.mode & ProfileMode) !== NoMode) {\n // Record the render duration for the fiber that errored.\n stopProfilerTimerIfRunningAndRecordDelta(completedWork, false); // Include the time spent working on failed children before continuing.\n\n var actualDuration = completedWork.actualDuration;\n var child = completedWork.child;\n\n while (child !== null) {\n actualDuration += child.actualDuration;\n child = child.sibling;\n }\n\n completedWork.actualDuration = actualDuration;\n }\n\n if (returnFiber !== null) {\n // Mark the parent fiber as incomplete and clear its effect list.\n returnFiber.firstEffect = returnFiber.lastEffect = null;\n returnFiber.flags |= Incomplete;\n }\n }\n\n var siblingFiber = completedWork.sibling;\n\n if (siblingFiber !== null) {\n // If there is more work to do in this returnFiber, do that next.\n workInProgress = siblingFiber;\n return;\n } // Otherwise, return to the parent\n\n\n completedWork = returnFiber; // Update the next thing we're working on in case something throws.\n\n workInProgress = completedWork;\n } while (completedWork !== null); // We've reached the root.\n\n\n if (workInProgressRootExitStatus === RootIncomplete) {\n workInProgressRootExitStatus = RootCompleted;\n }\n}\n\nfunction resetChildLanes(completedWork) {\n if ( // TODO: Move this check out of the hot path by moving `resetChildLanes`\n // to switch statement in `completeWork`.\n (completedWork.tag === LegacyHiddenComponent || completedWork.tag === OffscreenComponent) && completedWork.memoizedState !== null && !includesSomeLane(subtreeRenderLanes, OffscreenLane) && (completedWork.mode & ConcurrentMode) !== NoLanes) {\n // The children of this component are hidden. Don't bubble their\n // expiration times.\n return;\n }\n\n var newChildLanes = NoLanes; // Bubble up the earliest expiration time.\n\n if ( (completedWork.mode & ProfileMode) !== NoMode) {\n // In profiling mode, resetChildExpirationTime is also used to reset\n // profiler durations.\n var actualDuration = completedWork.actualDuration;\n var treeBaseDuration = completedWork.selfBaseDuration; // When a fiber is cloned, its actualDuration is reset to 0. This value will\n // only be updated if work is done on the fiber (i.e. it doesn't bailout).\n // When work is done, it should bubble to the parent's actualDuration. If\n // the fiber has not been cloned though, (meaning no work was done), then\n // this value will reflect the amount of time spent working on a previous\n // render. In that case it should not bubble. We determine whether it was\n // cloned by comparing the child pointer.\n\n var shouldBubbleActualDurations = completedWork.alternate === null || completedWork.child !== completedWork.alternate.child;\n var child = completedWork.child;\n\n while (child !== null) {\n newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes));\n\n if (shouldBubbleActualDurations) {\n actualDuration += child.actualDuration;\n }\n\n treeBaseDuration += child.treeBaseDuration;\n child = child.sibling;\n }\n\n var isTimedOutSuspense = completedWork.tag === SuspenseComponent && completedWork.memoizedState !== null;\n\n if (isTimedOutSuspense) {\n // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n var primaryChildFragment = completedWork.child;\n\n if (primaryChildFragment !== null) {\n treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n }\n }\n\n completedWork.actualDuration = actualDuration;\n completedWork.treeBaseDuration = treeBaseDuration;\n } else {\n var _child = completedWork.child;\n\n while (_child !== null) {\n newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child.lanes, _child.childLanes));\n _child = _child.sibling;\n }\n }\n\n completedWork.childLanes = newChildLanes;\n}\n\nfunction commitRoot(root) {\n var renderPriorityLevel = getCurrentPriorityLevel();\n runWithPriority$1(ImmediatePriority$1, commitRootImpl.bind(null, root, renderPriorityLevel));\n return null;\n}\n\nfunction commitRootImpl(root, renderPriorityLevel) {\n do {\n // `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which\n // means `flushPassiveEffects` will sometimes result in additional\n // passive effects. So we need to keep flushing in a loop until there are\n // no more pending effects.\n // TODO: Might be better if `flushPassiveEffects` did not automatically\n // flush synchronous work at the end, to avoid factoring hazards like this.\n flushPassiveEffects();\n } while (rootWithPendingPassiveEffects !== null);\n\n flushRenderPhaseStrictModeWarningsInDEV();\n\n if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {\n {\n throw Error( \"Should not already be working.\" );\n }\n }\n\n var finishedWork = root.finishedWork;\n var lanes = root.finishedLanes;\n\n if (finishedWork === null) {\n\n return null;\n }\n\n root.finishedWork = null;\n root.finishedLanes = NoLanes;\n\n if (!(finishedWork !== root.current)) {\n {\n throw Error( \"Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.\" );\n }\n } // commitRoot never returns a continuation; it always finishes synchronously.\n // So we can clear these now to allow a new callback to be scheduled.\n\n\n root.callbackNode = null; // Update the first and last pending times on this root. The new first\n // pending time is whatever is left on the root fiber.\n\n var remainingLanes = mergeLanes(finishedWork.lanes, finishedWork.childLanes);\n markRootFinished(root, remainingLanes); // Clear already finished discrete updates in case that a later call of\n // `flushDiscreteUpdates` starts a useless render pass which may cancels\n // a scheduled timeout.\n\n if (rootsWithPendingDiscreteUpdates !== null) {\n if (!hasDiscreteLanes(remainingLanes) && rootsWithPendingDiscreteUpdates.has(root)) {\n rootsWithPendingDiscreteUpdates.delete(root);\n }\n }\n\n if (root === workInProgressRoot) {\n // We can reset these now that they are finished.\n workInProgressRoot = null;\n workInProgress = null;\n workInProgressRootRenderLanes = NoLanes;\n } // Get the list of effects.\n\n\n var firstEffect;\n\n if (finishedWork.flags > PerformedWork) {\n // A fiber's effect list consists only of its children, not itself. So if\n // the root has an effect, we need to add it to the end of the list. The\n // resulting list is the set that would belong to the root's parent, if it\n // had one; that is, all the effects in the tree including the root.\n if (finishedWork.lastEffect !== null) {\n finishedWork.lastEffect.nextEffect = finishedWork;\n firstEffect = finishedWork.firstEffect;\n } else {\n firstEffect = finishedWork;\n }\n } else {\n // There is no effect on the root.\n firstEffect = finishedWork.firstEffect;\n }\n\n if (firstEffect !== null) {\n\n var prevExecutionContext = executionContext;\n executionContext |= CommitContext;\n var prevInteractions = pushInteractions(root); // Reset this to null before calling lifecycles\n\n ReactCurrentOwner$2.current = null; // The commit phase is broken into several sub-phases. We do a separate pass\n // of the effect list for each phase: all mutation effects come before all\n // layout effects, and so on.\n // The first phase a \"before mutation\" phase. We use this phase to read the\n // state of the host tree right before we mutate it. This is where\n // getSnapshotBeforeUpdate is called.\n\n focusedInstanceHandle = prepareForCommit(root.containerInfo);\n shouldFireAfterActiveInstanceBlur = false;\n nextEffect = firstEffect;\n\n do {\n {\n invokeGuardedCallback(null, commitBeforeMutationEffects, null);\n\n if (hasCaughtError()) {\n if (!(nextEffect !== null)) {\n {\n throw Error( \"Should be working on an effect.\" );\n }\n }\n\n var error = clearCaughtError();\n captureCommitPhaseError(nextEffect, error);\n nextEffect = nextEffect.nextEffect;\n }\n }\n } while (nextEffect !== null); // We no longer need to track the active instance fiber\n\n\n focusedInstanceHandle = null;\n\n {\n // Mark the current commit time to be shared by all Profilers in this\n // batch. This enables them to be grouped later.\n recordCommitTime();\n } // The next phase is the mutation phase, where we mutate the host tree.\n\n\n nextEffect = firstEffect;\n\n do {\n {\n invokeGuardedCallback(null, commitMutationEffects, null, root, renderPriorityLevel);\n\n if (hasCaughtError()) {\n if (!(nextEffect !== null)) {\n {\n throw Error( \"Should be working on an effect.\" );\n }\n }\n\n var _error = clearCaughtError();\n\n captureCommitPhaseError(nextEffect, _error);\n nextEffect = nextEffect.nextEffect;\n }\n }\n } while (nextEffect !== null);\n\n resetAfterCommit(root.containerInfo); // The work-in-progress tree is now the current tree. This must come after\n // the mutation phase, so that the previous tree is still current during\n // componentWillUnmount, but before the layout phase, so that the finished\n // work is current during componentDidMount/Update.\n\n root.current = finishedWork; // The next phase is the layout phase, where we call effects that read\n // the host tree after it's been mutated. The idiomatic use case for this is\n // layout, but class component lifecycles also fire here for legacy reasons.\n\n nextEffect = firstEffect;\n\n do {\n {\n invokeGuardedCallback(null, commitLayoutEffects, null, root, lanes);\n\n if (hasCaughtError()) {\n if (!(nextEffect !== null)) {\n {\n throw Error( \"Should be working on an effect.\" );\n }\n }\n\n var _error2 = clearCaughtError();\n\n captureCommitPhaseError(nextEffect, _error2);\n nextEffect = nextEffect.nextEffect;\n }\n }\n } while (nextEffect !== null);\n\n nextEffect = null; // Tell Scheduler to yield at the end of the frame, so the browser has an\n // opportunity to paint.\n\n requestPaint();\n\n {\n popInteractions(prevInteractions);\n }\n\n executionContext = prevExecutionContext;\n } else {\n // No effects.\n root.current = finishedWork; // Measure these anyway so the flamegraph explicitly shows that there were\n // no effects.\n // TODO: Maybe there's a better way to report this.\n\n {\n recordCommitTime();\n }\n }\n\n var rootDidHavePassiveEffects = rootDoesHavePassiveEffects;\n\n if (rootDoesHavePassiveEffects) {\n // This commit has passive effects. Stash a reference to them. But don't\n // schedule a callback until after flushing layout work.\n rootDoesHavePassiveEffects = false;\n rootWithPendingPassiveEffects = root;\n pendingPassiveEffectsLanes = lanes;\n pendingPassiveEffectsRenderPriority = renderPriorityLevel;\n } else {\n // We are done with the effect chain at this point so let's clear the\n // nextEffect pointers to assist with GC. If we have passive effects, we'll\n // clear this in flushPassiveEffects.\n nextEffect = firstEffect;\n\n while (nextEffect !== null) {\n var nextNextEffect = nextEffect.nextEffect;\n nextEffect.nextEffect = null;\n\n if (nextEffect.flags & Deletion) {\n detachFiberAfterEffects(nextEffect);\n }\n\n nextEffect = nextNextEffect;\n }\n } // Read this again, since an effect might have updated it\n\n\n remainingLanes = root.pendingLanes; // Check if there's remaining work on this root\n\n if (remainingLanes !== NoLanes) {\n {\n if (spawnedWorkDuringRender !== null) {\n var expirationTimes = spawnedWorkDuringRender;\n spawnedWorkDuringRender = null;\n\n for (var i = 0; i < expirationTimes.length; i++) {\n scheduleInteractions(root, expirationTimes[i], root.memoizedInteractions);\n }\n }\n\n schedulePendingInteractions(root, remainingLanes);\n }\n } else {\n // If there's no remaining work, we can clear the set of already failed\n // error boundaries.\n legacyErrorBoundariesThatAlreadyFailed = null;\n }\n\n {\n if (!rootDidHavePassiveEffects) {\n // If there are no passive effects, then we can complete the pending interactions.\n // Otherwise, we'll wait until after the passive effects are flushed.\n // Wait to do this until after remaining work has been scheduled,\n // so that we don't prematurely signal complete for interactions when there's e.g. hidden work.\n finishPendingInteractions(root, lanes);\n }\n }\n\n if (remainingLanes === SyncLane) {\n // Count the number of times the root synchronously re-renders without\n // finishing. If there are too many, it indicates an infinite update loop.\n if (root === rootWithNestedUpdates) {\n nestedUpdateCount++;\n } else {\n nestedUpdateCount = 0;\n rootWithNestedUpdates = root;\n }\n } else {\n nestedUpdateCount = 0;\n }\n\n onCommitRoot(finishedWork.stateNode, renderPriorityLevel);\n\n {\n onCommitRoot$1();\n } // Always call this before exiting `commitRoot`, to ensure that any\n // additional work on this root is scheduled.\n\n\n ensureRootIsScheduled(root, now());\n\n if (hasUncaughtError) {\n hasUncaughtError = false;\n var _error3 = firstUncaughtError;\n firstUncaughtError = null;\n throw _error3;\n }\n\n if ((executionContext & LegacyUnbatchedContext) !== NoContext) {\n // a ReactDOM.render-ed root inside of batchedUpdates. The commit fired\n // synchronously, but layout updates should be deferred until the end\n // of the batch.\n\n\n return null;\n } // If layout work was scheduled, flush it now.\n\n\n flushSyncCallbackQueue();\n\n return null;\n}\n\nfunction commitBeforeMutationEffects() {\n while (nextEffect !== null) {\n var current = nextEffect.alternate;\n\n if (!shouldFireAfterActiveInstanceBlur && focusedInstanceHandle !== null) {\n if ((nextEffect.flags & Deletion) !== NoFlags) {\n if (doesFiberContain(nextEffect, focusedInstanceHandle)) {\n shouldFireAfterActiveInstanceBlur = true;\n }\n } else {\n // TODO: Move this out of the hot path using a dedicated effect tag.\n if (nextEffect.tag === SuspenseComponent && isSuspenseBoundaryBeingHidden(current, nextEffect) && doesFiberContain(nextEffect, focusedInstanceHandle)) {\n shouldFireAfterActiveInstanceBlur = true;\n }\n }\n }\n\n var flags = nextEffect.flags;\n\n if ((flags & Snapshot) !== NoFlags) {\n setCurrentFiber(nextEffect);\n commitBeforeMutationLifeCycles(current, nextEffect);\n resetCurrentFiber();\n }\n\n if ((flags & Passive) !== NoFlags) {\n // If there are passive effects, schedule a callback to flush at\n // the earliest opportunity.\n if (!rootDoesHavePassiveEffects) {\n rootDoesHavePassiveEffects = true;\n scheduleCallback(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n });\n }\n }\n\n nextEffect = nextEffect.nextEffect;\n }\n}\n\nfunction commitMutationEffects(root, renderPriorityLevel) {\n // TODO: Should probably move the bulk of this function to commitWork.\n while (nextEffect !== null) {\n setCurrentFiber(nextEffect);\n var flags = nextEffect.flags;\n\n if (flags & ContentReset) {\n commitResetTextContent(nextEffect);\n }\n\n if (flags & Ref) {\n var current = nextEffect.alternate;\n\n if (current !== null) {\n commitDetachRef(current);\n }\n } // The following switch statement is only concerned about placement,\n // updates, and deletions. To avoid needing to add a case for every possible\n // bitmap value, we remove the secondary effects from the effect tag and\n // switch on that value.\n\n\n var primaryFlags = flags & (Placement | Update | Deletion | Hydrating);\n\n switch (primaryFlags) {\n case Placement:\n {\n commitPlacement(nextEffect); // Clear the \"placement\" from effect tag so that we know that this is\n // inserted, before any life-cycles like componentDidMount gets called.\n // TODO: findDOMNode doesn't rely on this any more but isMounted does\n // and isMounted is deprecated anyway so we should be able to kill this.\n\n nextEffect.flags &= ~Placement;\n break;\n }\n\n case PlacementAndUpdate:\n {\n // Placement\n commitPlacement(nextEffect); // Clear the \"placement\" from effect tag so that we know that this is\n // inserted, before any life-cycles like componentDidMount gets called.\n\n nextEffect.flags &= ~Placement; // Update\n\n var _current = nextEffect.alternate;\n commitWork(_current, nextEffect);\n break;\n }\n\n case Hydrating:\n {\n nextEffect.flags &= ~Hydrating;\n break;\n }\n\n case HydratingAndUpdate:\n {\n nextEffect.flags &= ~Hydrating; // Update\n\n var _current2 = nextEffect.alternate;\n commitWork(_current2, nextEffect);\n break;\n }\n\n case Update:\n {\n var _current3 = nextEffect.alternate;\n commitWork(_current3, nextEffect);\n break;\n }\n\n case Deletion:\n {\n commitDeletion(root, nextEffect);\n break;\n }\n }\n\n resetCurrentFiber();\n nextEffect = nextEffect.nextEffect;\n }\n}\n\nfunction commitLayoutEffects(root, committedLanes) {\n\n\n while (nextEffect !== null) {\n setCurrentFiber(nextEffect);\n var flags = nextEffect.flags;\n\n if (flags & (Update | Callback)) {\n var current = nextEffect.alternate;\n commitLifeCycles(root, current, nextEffect);\n }\n\n {\n if (flags & Ref) {\n commitAttachRef(nextEffect);\n }\n }\n\n resetCurrentFiber();\n nextEffect = nextEffect.nextEffect;\n }\n}\n\nfunction flushPassiveEffects() {\n // Returns whether passive effects were flushed.\n if (pendingPassiveEffectsRenderPriority !== NoPriority$1) {\n var priorityLevel = pendingPassiveEffectsRenderPriority > NormalPriority$1 ? NormalPriority$1 : pendingPassiveEffectsRenderPriority;\n pendingPassiveEffectsRenderPriority = NoPriority$1;\n\n {\n return runWithPriority$1(priorityLevel, flushPassiveEffectsImpl);\n }\n }\n\n return false;\n}\nfunction enqueuePendingPassiveHookEffectMount(fiber, effect) {\n pendingPassiveHookEffectsMount.push(effect, fiber);\n\n if (!rootDoesHavePassiveEffects) {\n rootDoesHavePassiveEffects = true;\n scheduleCallback(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n });\n }\n}\nfunction enqueuePendingPassiveHookEffectUnmount(fiber, effect) {\n pendingPassiveHookEffectsUnmount.push(effect, fiber);\n\n {\n fiber.flags |= PassiveUnmountPendingDev;\n var alternate = fiber.alternate;\n\n if (alternate !== null) {\n alternate.flags |= PassiveUnmountPendingDev;\n }\n }\n\n if (!rootDoesHavePassiveEffects) {\n rootDoesHavePassiveEffects = true;\n scheduleCallback(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n });\n }\n}\n\nfunction invokePassiveEffectCreate(effect) {\n var create = effect.create;\n effect.destroy = create();\n}\n\nfunction flushPassiveEffectsImpl() {\n if (rootWithPendingPassiveEffects === null) {\n return false;\n }\n\n var root = rootWithPendingPassiveEffects;\n var lanes = pendingPassiveEffectsLanes;\n rootWithPendingPassiveEffects = null;\n pendingPassiveEffectsLanes = NoLanes;\n\n if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {\n {\n throw Error( \"Cannot flush passive effects while already rendering.\" );\n }\n }\n\n {\n isFlushingPassiveEffects = true;\n }\n\n var prevExecutionContext = executionContext;\n executionContext |= CommitContext;\n var prevInteractions = pushInteractions(root); // It's important that ALL pending passive effect destroy functions are called\n // before ANY passive effect create functions are called.\n // Otherwise effects in sibling components might interfere with each other.\n // e.g. a destroy function in one component may unintentionally override a ref\n // value set by a create function in another component.\n // Layout effects have the same constraint.\n // First pass: Destroy stale passive effects.\n\n var unmountEffects = pendingPassiveHookEffectsUnmount;\n pendingPassiveHookEffectsUnmount = [];\n\n for (var i = 0; i < unmountEffects.length; i += 2) {\n var _effect = unmountEffects[i];\n var fiber = unmountEffects[i + 1];\n var destroy = _effect.destroy;\n _effect.destroy = undefined;\n\n {\n fiber.flags &= ~PassiveUnmountPendingDev;\n var alternate = fiber.alternate;\n\n if (alternate !== null) {\n alternate.flags &= ~PassiveUnmountPendingDev;\n }\n }\n\n if (typeof destroy === 'function') {\n {\n setCurrentFiber(fiber);\n\n {\n invokeGuardedCallback(null, destroy, null);\n }\n\n if (hasCaughtError()) {\n if (!(fiber !== null)) {\n {\n throw Error( \"Should be working on an effect.\" );\n }\n }\n\n var error = clearCaughtError();\n captureCommitPhaseError(fiber, error);\n }\n\n resetCurrentFiber();\n }\n }\n } // Second pass: Create new passive effects.\n\n\n var mountEffects = pendingPassiveHookEffectsMount;\n pendingPassiveHookEffectsMount = [];\n\n for (var _i = 0; _i < mountEffects.length; _i += 2) {\n var _effect2 = mountEffects[_i];\n var _fiber = mountEffects[_i + 1];\n\n {\n setCurrentFiber(_fiber);\n\n {\n invokeGuardedCallback(null, invokePassiveEffectCreate, null, _effect2);\n }\n\n if (hasCaughtError()) {\n if (!(_fiber !== null)) {\n {\n throw Error( \"Should be working on an effect.\" );\n }\n }\n\n var _error4 = clearCaughtError();\n\n captureCommitPhaseError(_fiber, _error4);\n }\n\n resetCurrentFiber();\n }\n } // Note: This currently assumes there are no passive effects on the root fiber\n // because the root is not part of its own effect list.\n // This could change in the future.\n\n\n var effect = root.current.firstEffect;\n\n while (effect !== null) {\n var nextNextEffect = effect.nextEffect; // Remove nextEffect pointer to assist GC\n\n effect.nextEffect = null;\n\n if (effect.flags & Deletion) {\n detachFiberAfterEffects(effect);\n }\n\n effect = nextNextEffect;\n }\n\n {\n popInteractions(prevInteractions);\n finishPendingInteractions(root, lanes);\n }\n\n {\n isFlushingPassiveEffects = false;\n }\n\n executionContext = prevExecutionContext;\n flushSyncCallbackQueue(); // If additional passive effects were scheduled, increment a counter. If this\n // exceeds the limit, we'll fire a warning.\n\n nestedPassiveUpdateCount = rootWithPendingPassiveEffects === null ? 0 : nestedPassiveUpdateCount + 1;\n return true;\n}\n\nfunction isAlreadyFailedLegacyErrorBoundary(instance) {\n return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);\n}\nfunction markLegacyErrorBoundaryAsFailed(instance) {\n if (legacyErrorBoundariesThatAlreadyFailed === null) {\n legacyErrorBoundariesThatAlreadyFailed = new Set([instance]);\n } else {\n legacyErrorBoundariesThatAlreadyFailed.add(instance);\n }\n}\n\nfunction prepareToThrowUncaughtError(error) {\n if (!hasUncaughtError) {\n hasUncaughtError = true;\n firstUncaughtError = error;\n }\n}\n\nvar onUncaughtError = prepareToThrowUncaughtError;\n\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n var errorInfo = createCapturedValue(error, sourceFiber);\n var update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);\n enqueueUpdate(rootFiber, update);\n var eventTime = requestEventTime();\n var root = markUpdateLaneFromFiberToRoot(rootFiber, SyncLane);\n\n if (root !== null) {\n markRootUpdated(root, SyncLane, eventTime);\n ensureRootIsScheduled(root, eventTime);\n schedulePendingInteractions(root, SyncLane);\n }\n}\n\nfunction captureCommitPhaseError(sourceFiber, error) {\n if (sourceFiber.tag === HostRoot) {\n // Error was thrown at the root. There is no parent, so the root\n // itself should capture it.\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n return;\n }\n\n var fiber = sourceFiber.return;\n\n while (fiber !== null) {\n if (fiber.tag === HostRoot) {\n captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error);\n return;\n } else if (fiber.tag === ClassComponent) {\n var ctor = fiber.type;\n var instance = fiber.stateNode;\n\n if (typeof ctor.getDerivedStateFromError === 'function' || typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {\n var errorInfo = createCapturedValue(error, sourceFiber);\n var update = createClassErrorUpdate(fiber, errorInfo, SyncLane);\n enqueueUpdate(fiber, update);\n var eventTime = requestEventTime();\n var root = markUpdateLaneFromFiberToRoot(fiber, SyncLane);\n\n if (root !== null) {\n markRootUpdated(root, SyncLane, eventTime);\n ensureRootIsScheduled(root, eventTime);\n schedulePendingInteractions(root, SyncLane);\n } else {\n // This component has already been unmounted.\n // We can't schedule any follow up work for the root because the fiber is already unmounted,\n // but we can still call the log-only boundary so the error isn't swallowed.\n //\n // TODO This is only a temporary bandaid for the old reconciler fork.\n // We can delete this special case once the new fork is merged.\n if (typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {\n try {\n instance.componentDidCatch(error, errorInfo);\n } catch (errorToIgnore) {// TODO Ignore this error? Rethrow it?\n // This is kind of an edge case.\n }\n }\n }\n\n return;\n }\n }\n\n fiber = fiber.return;\n }\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n\n if (pingCache !== null) {\n // The wakeable resolved, so we no longer need to memoize, because it will\n // never be thrown again.\n pingCache.delete(wakeable);\n }\n\n var eventTime = requestEventTime();\n markRootPinged(root, pingedLanes);\n\n if (workInProgressRoot === root && isSubsetOfLanes(workInProgressRootRenderLanes, pingedLanes)) {\n // Received a ping at the same priority level at which we're currently\n // rendering. We might want to restart this render. This should mirror\n // the logic of whether or not a root suspends once it completes.\n // TODO: If we're rendering sync either due to Sync, Batched or expired,\n // we should probably never restart.\n // If we're suspended with delay, or if it's a retry, we'll always suspend\n // so we can always restart.\n if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && includesOnlyRetries(workInProgressRootRenderLanes) && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {\n // Restart from the root.\n prepareFreshStack(root, NoLanes);\n } else {\n // Even though we can't restart right now, we might get an\n // opportunity later. So we mark this render as having a ping.\n workInProgressRootPingedLanes = mergeLanes(workInProgressRootPingedLanes, pingedLanes);\n }\n }\n\n ensureRootIsScheduled(root, eventTime);\n schedulePendingInteractions(root, pingedLanes);\n}\n\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n // The boundary fiber (a Suspense component or SuspenseList component)\n // previously was rendered in its fallback state. One of the promises that\n // suspended it has resolved, which means at least part of the tree was\n // likely unblocked. Try rendering again, at a new expiration time.\n if (retryLane === NoLane) {\n retryLane = requestRetryLane(boundaryFiber);\n } // TODO: Special case idle priority?\n\n\n var eventTime = requestEventTime();\n var root = markUpdateLaneFromFiberToRoot(boundaryFiber, retryLane);\n\n if (root !== null) {\n markRootUpdated(root, retryLane, eventTime);\n ensureRootIsScheduled(root, eventTime);\n schedulePendingInteractions(root, retryLane);\n }\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = NoLane; // Default\n\n var retryCache;\n\n {\n retryCache = boundaryFiber.stateNode;\n }\n\n if (retryCache !== null) {\n // The wakeable resolved, so we no longer need to memoize, because it will\n // never be thrown again.\n retryCache.delete(wakeable);\n }\n\n retryTimedOutBoundary(boundaryFiber, retryLane);\n} // Computes the next Just Noticeable Difference (JND) boundary.\n// The theory is that a person can't tell the difference between small differences in time.\n// Therefore, if we wait a bit longer than necessary that won't translate to a noticeable\n// difference in the experience. However, waiting for longer might mean that we can avoid\n// showing an intermediate loading state. The longer we have already waited, the harder it\n// is to tell small differences in time. Therefore, the longer we've already waited,\n// the longer we can wait additionally. At some point we have to give up though.\n// We pick a train model where the next boundary commits at a consistent schedule.\n// These particular numbers are vague estimates. We expect to adjust them based on research.\n\nfunction jnd(timeElapsed) {\n return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3000 ? 3000 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960;\n}\n\nfunction checkForNestedUpdates() {\n if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {\n nestedUpdateCount = 0;\n rootWithNestedUpdates = null;\n\n {\n {\n throw Error( \"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\" );\n }\n }\n }\n\n {\n if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) {\n nestedPassiveUpdateCount = 0;\n\n error('Maximum update depth exceeded. This can happen when a component ' + \"calls setState inside useEffect, but useEffect either doesn't \" + 'have a dependency array, or one of the dependencies changes on ' + 'every render.');\n }\n }\n}\n\nfunction flushRenderPhaseStrictModeWarningsInDEV() {\n {\n ReactStrictModeWarnings.flushLegacyContextWarning();\n\n {\n ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();\n }\n }\n}\n\nvar didWarnStateUpdateForNotYetMountedComponent = null;\n\nfunction warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {\n {\n if ((executionContext & RenderContext) !== NoContext) {\n // We let the other warning about render phase updates deal with this one.\n return;\n }\n\n if (!(fiber.mode & (BlockingMode | ConcurrentMode))) {\n return;\n }\n\n var tag = fiber.tag;\n\n if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent && tag !== Block) {\n // Only warn for user-defined components, not internal ones like Suspense.\n return;\n } // We show the whole stack but dedupe on the top component's name because\n // the problematic code almost always lies inside that component.\n\n\n var componentName = getComponentName(fiber.type) || 'ReactComponent';\n\n if (didWarnStateUpdateForNotYetMountedComponent !== null) {\n if (didWarnStateUpdateForNotYetMountedComponent.has(componentName)) {\n return;\n }\n\n didWarnStateUpdateForNotYetMountedComponent.add(componentName);\n } else {\n didWarnStateUpdateForNotYetMountedComponent = new Set([componentName]);\n }\n\n var previousFiber = current;\n\n try {\n setCurrentFiber(fiber);\n\n error(\"Can't perform a React state update on a component that hasn't mounted yet. \" + 'This indicates that you have a side-effect in your render function that ' + 'asynchronously later calls tries to update the component. Move this work to ' + 'useEffect instead.');\n } finally {\n if (previousFiber) {\n setCurrentFiber(fiber);\n } else {\n resetCurrentFiber();\n }\n }\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = null;\n\nfunction warnAboutUpdateOnUnmountedFiberInDEV(fiber) {\n {\n var tag = fiber.tag;\n\n if (tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent && tag !== Block) {\n // Only warn for user-defined components, not internal ones like Suspense.\n return;\n } // If there are pending passive effects unmounts for this Fiber,\n // we can assume that they would have prevented this update.\n\n\n if ((fiber.flags & PassiveUnmountPendingDev) !== NoFlags) {\n return;\n } // We show the whole stack but dedupe on the top component's name because\n // the problematic code almost always lies inside that component.\n\n\n var componentName = getComponentName(fiber.type) || 'ReactComponent';\n\n if (didWarnStateUpdateForUnmountedComponent !== null) {\n if (didWarnStateUpdateForUnmountedComponent.has(componentName)) {\n return;\n }\n\n didWarnStateUpdateForUnmountedComponent.add(componentName);\n } else {\n didWarnStateUpdateForUnmountedComponent = new Set([componentName]);\n }\n\n if (isFlushingPassiveEffects) ; else {\n var previousFiber = current;\n\n try {\n setCurrentFiber(fiber);\n\n error(\"Can't perform a React state update on an unmounted component. This \" + 'is a no-op, but it indicates a memory leak in your application. To ' + 'fix, cancel all subscriptions and asynchronous tasks in %s.', tag === ClassComponent ? 'the componentWillUnmount method' : 'a useEffect cleanup function');\n } finally {\n if (previousFiber) {\n setCurrentFiber(fiber);\n } else {\n resetCurrentFiber();\n }\n }\n }\n }\n}\n\nvar beginWork$1;\n\n{\n var dummyFiber = null;\n\n beginWork$1 = function (current, unitOfWork, lanes) {\n // If a component throws an error, we replay it again in a synchronously\n // dispatched event, so that the debugger will treat it as an uncaught\n // error See ReactErrorUtils for more information.\n // Before entering the begin phase, copy the work-in-progress onto a dummy\n // fiber. If beginWork throws, we'll use this to reset the state.\n var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork);\n\n try {\n return beginWork(current, unitOfWork, lanes);\n } catch (originalError) {\n if (originalError !== null && typeof originalError === 'object' && typeof originalError.then === 'function') {\n // Don't replay promises. Treat everything else like an error.\n throw originalError;\n } // Keep this code in sync with handleError; any changes here must have\n // corresponding changes there.\n\n\n resetContextDependencies();\n resetHooksAfterThrow(); // Don't reset current debug fiber, since we're about to work on the\n // same fiber again.\n // Unwind the failed stack frame\n\n unwindInterruptedWork(unitOfWork); // Restore the original properties of the fiber.\n\n assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy);\n\n if ( unitOfWork.mode & ProfileMode) {\n // Reset the profiler timer.\n startProfilerTimer(unitOfWork);\n } // Run beginWork again.\n\n\n invokeGuardedCallback(null, beginWork, null, current, unitOfWork, lanes);\n\n if (hasCaughtError()) {\n var replayError = clearCaughtError(); // `invokeGuardedCallback` sometimes sets an expando `_suppressLogging`.\n // Rethrow this error instead of the original one.\n\n throw replayError;\n } else {\n // This branch is reachable if the render phase is impure.\n throw originalError;\n }\n }\n };\n}\n\nvar didWarnAboutUpdateInRender = false;\nvar didWarnAboutUpdateInRenderForAnotherComponent;\n\n{\n didWarnAboutUpdateInRenderForAnotherComponent = new Set();\n}\n\nfunction warnAboutRenderPhaseUpdatesInDEV(fiber) {\n {\n if (isRendering && (executionContext & RenderContext) !== NoContext && !getIsUpdatingOpaqueValueInRenderPhaseInDEV()) {\n switch (fiber.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n {\n var renderingComponentName = workInProgress && getComponentName(workInProgress.type) || 'Unknown'; // Dedupe by the rendering component because it's the one that needs to be fixed.\n\n var dedupeKey = renderingComponentName;\n\n if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) {\n didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);\n var setStateComponentName = getComponentName(fiber.type) || 'Unknown';\n\n error('Cannot update a component (`%s`) while rendering a ' + 'different component (`%s`). To locate the bad setState() call inside `%s`, ' + 'follow the stack trace as described in https://reactjs.org/link/setstate-in-render', setStateComponentName, renderingComponentName, renderingComponentName);\n }\n\n break;\n }\n\n case ClassComponent:\n {\n if (!didWarnAboutUpdateInRender) {\n error('Cannot update during an existing state transition (such as ' + 'within `render`). Render methods should be a pure ' + 'function of props and state.');\n\n didWarnAboutUpdateInRender = true;\n }\n\n break;\n }\n }\n }\n }\n} // a 'shared' variable that changes when act() opens/closes in tests.\n\n\nvar IsThisRendererActing = {\n current: false\n};\nfunction warnIfNotScopedWithMatchingAct(fiber) {\n {\n if ( IsSomeRendererActing.current === true && IsThisRendererActing.current !== true) {\n var previousFiber = current;\n\n try {\n setCurrentFiber(fiber);\n\n error(\"It looks like you're using the wrong act() around your test interactions.\\n\" + 'Be sure to use the matching version of act() corresponding to your renderer:\\n\\n' + '// for react-dom:\\n' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'import {act} fr' + \"om 'react-dom/test-utils';\\n\" + '// ...\\n' + 'act(() => ...);\\n\\n' + '// for react-test-renderer:\\n' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'import TestRenderer fr' + \"om react-test-renderer';\\n\" + 'const {act} = TestRenderer;\\n' + '// ...\\n' + 'act(() => ...);');\n } finally {\n if (previousFiber) {\n setCurrentFiber(fiber);\n } else {\n resetCurrentFiber();\n }\n }\n }\n }\n}\nfunction warnIfNotCurrentlyActingEffectsInDEV(fiber) {\n {\n if ( (fiber.mode & StrictMode) !== NoMode && IsSomeRendererActing.current === false && IsThisRendererActing.current === false) {\n error('An update to %s ran an effect, but was not wrapped in act(...).\\n\\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\\n\\n' + 'act(() => {\\n' + ' /* fire events that update state */\\n' + '});\\n' + '/* assert on the output */\\n\\n' + \"This ensures that you're testing the behavior the user would see \" + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act', getComponentName(fiber.type));\n }\n }\n}\n\nfunction warnIfNotCurrentlyActingUpdatesInDEV(fiber) {\n {\n if ( executionContext === NoContext && IsSomeRendererActing.current === false && IsThisRendererActing.current === false) {\n var previousFiber = current;\n\n try {\n setCurrentFiber(fiber);\n\n error('An update to %s inside a test was not wrapped in act(...).\\n\\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\\n\\n' + 'act(() => {\\n' + ' /* fire events that update state */\\n' + '});\\n' + '/* assert on the output */\\n\\n' + \"This ensures that you're testing the behavior the user would see \" + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act', getComponentName(fiber.type));\n } finally {\n if (previousFiber) {\n setCurrentFiber(fiber);\n } else {\n resetCurrentFiber();\n }\n }\n }\n }\n}\n\nvar warnIfNotCurrentlyActingUpdatesInDev = warnIfNotCurrentlyActingUpdatesInDEV; // In tests, we want to enforce a mocked scheduler.\n\nvar didWarnAboutUnmockedScheduler = false; // TODO Before we release concurrent mode, revisit this and decide whether a mocked\n// scheduler is the actual recommendation. The alternative could be a testing build,\n// a new lib, or whatever; we dunno just yet. This message is for early adopters\n// to get their tests right.\n\nfunction warnIfUnmockedScheduler(fiber) {\n {\n if (didWarnAboutUnmockedScheduler === false && Scheduler.unstable_flushAllWithoutAsserting === undefined) {\n if (fiber.mode & BlockingMode || fiber.mode & ConcurrentMode) {\n didWarnAboutUnmockedScheduler = true;\n\n error('In Concurrent or Sync modes, the \"scheduler\" module needs to be mocked ' + 'to guarantee consistent behaviour across tests and browsers. ' + 'For example, with jest: \\n' + // Break up requires to avoid accidentally parsing them as dependencies.\n \"jest.mock('scheduler', () => require\" + \"('scheduler/unstable_mock'));\\n\\n\" + 'For more info, visit https://reactjs.org/link/mock-scheduler');\n }\n }\n }\n}\n\nfunction computeThreadID(root, lane) {\n // Interaction threads are unique per root and expiration time.\n // NOTE: Intentionally unsound cast. All that matters is that it's a number\n // and it represents a batch of work. Could make a helper function instead,\n // but meh this is fine for now.\n return lane * 1000 + root.interactionThreadID;\n}\n\nfunction markSpawnedWork(lane) {\n\n if (spawnedWorkDuringRender === null) {\n spawnedWorkDuringRender = [lane];\n } else {\n spawnedWorkDuringRender.push(lane);\n }\n}\n\nfunction scheduleInteractions(root, lane, interactions) {\n\n if (interactions.size > 0) {\n var pendingInteractionMap = root.pendingInteractionMap;\n var pendingInteractions = pendingInteractionMap.get(lane);\n\n if (pendingInteractions != null) {\n interactions.forEach(function (interaction) {\n if (!pendingInteractions.has(interaction)) {\n // Update the pending async work count for previously unscheduled interaction.\n interaction.__count++;\n }\n\n pendingInteractions.add(interaction);\n });\n } else {\n pendingInteractionMap.set(lane, new Set(interactions)); // Update the pending async work count for the current interactions.\n\n interactions.forEach(function (interaction) {\n interaction.__count++;\n });\n }\n\n var subscriber = tracing.__subscriberRef.current;\n\n if (subscriber !== null) {\n var threadID = computeThreadID(root, lane);\n subscriber.onWorkScheduled(interactions, threadID);\n }\n }\n}\n\nfunction schedulePendingInteractions(root, lane) {\n\n scheduleInteractions(root, lane, tracing.__interactionsRef.current);\n}\n\nfunction startWorkOnPendingInteractions(root, lanes) {\n // we can accurately attribute time spent working on it, And so that cascading\n // work triggered during the render phase will be associated with it.\n\n\n var interactions = new Set();\n root.pendingInteractionMap.forEach(function (scheduledInteractions, scheduledLane) {\n if (includesSomeLane(lanes, scheduledLane)) {\n scheduledInteractions.forEach(function (interaction) {\n return interactions.add(interaction);\n });\n }\n }); // Store the current set of interactions on the FiberRoot for a few reasons:\n // We can re-use it in hot functions like performConcurrentWorkOnRoot()\n // without having to recalculate it. We will also use it in commitWork() to\n // pass to any Profiler onRender() hooks. This also provides DevTools with a\n // way to access it when the onCommitRoot() hook is called.\n\n root.memoizedInteractions = interactions;\n\n if (interactions.size > 0) {\n var subscriber = tracing.__subscriberRef.current;\n\n if (subscriber !== null) {\n var threadID = computeThreadID(root, lanes);\n\n try {\n subscriber.onWorkStarted(interactions, threadID);\n } catch (error) {\n // If the subscriber throws, rethrow it in a separate task\n scheduleCallback(ImmediatePriority$1, function () {\n throw error;\n });\n }\n }\n }\n}\n\nfunction finishPendingInteractions(root, committedLanes) {\n\n var remainingLanesAfterCommit = root.pendingLanes;\n var subscriber;\n\n try {\n subscriber = tracing.__subscriberRef.current;\n\n if (subscriber !== null && root.memoizedInteractions.size > 0) {\n // FIXME: More than one lane can finish in a single commit.\n var threadID = computeThreadID(root, committedLanes);\n subscriber.onWorkStopped(root.memoizedInteractions, threadID);\n }\n } catch (error) {\n // If the subscriber throws, rethrow it in a separate task\n scheduleCallback(ImmediatePriority$1, function () {\n throw error;\n });\n } finally {\n // Clear completed interactions from the pending Map.\n // Unless the render was suspended or cascading work was scheduled,\n // In which case\u2013 leave pending interactions until the subsequent render.\n var pendingInteractionMap = root.pendingInteractionMap;\n pendingInteractionMap.forEach(function (scheduledInteractions, lane) {\n // Only decrement the pending interaction count if we're done.\n // If there's still work at the current priority,\n // That indicates that we are waiting for suspense data.\n if (!includesSomeLane(remainingLanesAfterCommit, lane)) {\n pendingInteractionMap.delete(lane);\n scheduledInteractions.forEach(function (interaction) {\n interaction.__count--;\n\n if (subscriber !== null && interaction.__count === 0) {\n try {\n subscriber.onInteractionScheduledWorkCompleted(interaction);\n } catch (error) {\n // If the subscriber throws, rethrow it in a separate task\n scheduleCallback(ImmediatePriority$1, function () {\n throw error;\n });\n }\n }\n });\n }\n });\n }\n} // `act` testing API\n\nfunction shouldForceFlushFallbacksInDEV() {\n // Never force flush in production. This function should get stripped out.\n return actingUpdatesScopeDepth > 0;\n}\n// so we can tell if any async act() calls try to run in parallel.\n\n\nvar actingUpdatesScopeDepth = 0;\n\nfunction detachFiberAfterEffects(fiber) {\n fiber.sibling = null;\n fiber.stateNode = null;\n}\n\nvar resolveFamily = null; // $FlowFixMe Flow gets confused by a WeakSet feature check below.\n\nvar failedBoundaries = null;\nvar setRefreshHandler = function (handler) {\n {\n resolveFamily = handler;\n }\n};\nfunction resolveFunctionForHotReloading(type) {\n {\n if (resolveFamily === null) {\n // Hot reloading is disabled.\n return type;\n }\n\n var family = resolveFamily(type);\n\n if (family === undefined) {\n return type;\n } // Use the latest known implementation.\n\n\n return family.current;\n }\n}\nfunction resolveClassForHotReloading(type) {\n // No implementation differences.\n return resolveFunctionForHotReloading(type);\n}\nfunction resolveForwardRefForHotReloading(type) {\n {\n if (resolveFamily === null) {\n // Hot reloading is disabled.\n return type;\n }\n\n var family = resolveFamily(type);\n\n if (family === undefined) {\n // Check if we're dealing with a real forwardRef. Don't want to crash early.\n if (type !== null && type !== undefined && typeof type.render === 'function') {\n // ForwardRef is special because its resolved .type is an object,\n // but it's possible that we only have its inner render function in the map.\n // If that inner render function is different, we'll build a new forwardRef type.\n var currentRender = resolveFunctionForHotReloading(type.render);\n\n if (type.render !== currentRender) {\n var syntheticType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: currentRender\n };\n\n if (type.displayName !== undefined) {\n syntheticType.displayName = type.displayName;\n }\n\n return syntheticType;\n }\n }\n\n return type;\n } // Use the latest known implementation.\n\n\n return family.current;\n }\n}\nfunction isCompatibleFamilyForHotReloading(fiber, element) {\n {\n if (resolveFamily === null) {\n // Hot reloading is disabled.\n return false;\n }\n\n var prevType = fiber.elementType;\n var nextType = element.type; // If we got here, we know types aren't === equal.\n\n var needsCompareFamilies = false;\n var $$typeofNextType = typeof nextType === 'object' && nextType !== null ? nextType.$$typeof : null;\n\n switch (fiber.tag) {\n case ClassComponent:\n {\n if (typeof nextType === 'function') {\n needsCompareFamilies = true;\n }\n\n break;\n }\n\n case FunctionComponent:\n {\n if (typeof nextType === 'function') {\n needsCompareFamilies = true;\n } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n // We don't know the inner type yet.\n // We're going to assume that the lazy inner type is stable,\n // and so it is sufficient to avoid reconciling it away.\n // We're not going to unwrap or actually use the new lazy type.\n needsCompareFamilies = true;\n }\n\n break;\n }\n\n case ForwardRef:\n {\n if ($$typeofNextType === REACT_FORWARD_REF_TYPE) {\n needsCompareFamilies = true;\n } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n needsCompareFamilies = true;\n }\n\n break;\n }\n\n case MemoComponent:\n case SimpleMemoComponent:\n {\n if ($$typeofNextType === REACT_MEMO_TYPE) {\n // TODO: if it was but can no longer be simple,\n // we shouldn't set this.\n needsCompareFamilies = true;\n } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n needsCompareFamilies = true;\n }\n\n break;\n }\n\n default:\n return false;\n } // Check if both types have a family and it's the same one.\n\n\n if (needsCompareFamilies) {\n // Note: memo() and forwardRef() we'll compare outer rather than inner type.\n // This means both of them need to be registered to preserve state.\n // If we unwrapped and compared the inner types for wrappers instead,\n // then we would risk falsely saying two separate memo(Foo)\n // calls are equivalent because they wrap the same Foo function.\n var prevFamily = resolveFamily(prevType);\n\n if (prevFamily !== undefined && prevFamily === resolveFamily(nextType)) {\n return true;\n }\n }\n\n return false;\n }\n}\nfunction markFailedErrorBoundaryForHotReloading(fiber) {\n {\n if (resolveFamily === null) {\n // Hot reloading is disabled.\n return;\n }\n\n if (typeof WeakSet !== 'function') {\n return;\n }\n\n if (failedBoundaries === null) {\n failedBoundaries = new WeakSet();\n }\n\n failedBoundaries.add(fiber);\n }\n}\nvar scheduleRefresh = function (root, update) {\n {\n if (resolveFamily === null) {\n // Hot reloading is disabled.\n return;\n }\n\n var staleFamilies = update.staleFamilies,\n updatedFamilies = update.updatedFamilies;\n flushPassiveEffects();\n flushSync(function () {\n scheduleFibersWithFamiliesRecursively(root.current, updatedFamilies, staleFamilies);\n });\n }\n};\nvar scheduleRoot = function (root, element) {\n {\n if (root.context !== emptyContextObject) {\n // Super edge case: root has a legacy _renderSubtree context\n // but we don't know the parentComponent so we can't pass it.\n // Just ignore. We'll delete this with _renderSubtree code path later.\n return;\n }\n\n flushPassiveEffects();\n flushSync(function () {\n updateContainer(element, root, null, null);\n });\n }\n};\n\nfunction scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {\n {\n var alternate = fiber.alternate,\n child = fiber.child,\n sibling = fiber.sibling,\n tag = fiber.tag,\n type = fiber.type;\n var candidateType = null;\n\n switch (tag) {\n case FunctionComponent:\n case SimpleMemoComponent:\n case ClassComponent:\n candidateType = type;\n break;\n\n case ForwardRef:\n candidateType = type.render;\n break;\n }\n\n if (resolveFamily === null) {\n throw new Error('Expected resolveFamily to be set during hot reload.');\n }\n\n var needsRender = false;\n var needsRemount = false;\n\n if (candidateType !== null) {\n var family = resolveFamily(candidateType);\n\n if (family !== undefined) {\n if (staleFamilies.has(family)) {\n needsRemount = true;\n } else if (updatedFamilies.has(family)) {\n if (tag === ClassComponent) {\n needsRemount = true;\n } else {\n needsRender = true;\n }\n }\n }\n }\n\n if (failedBoundaries !== null) {\n if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) {\n needsRemount = true;\n }\n }\n\n if (needsRemount) {\n fiber._debugNeedsRemount = true;\n }\n\n if (needsRemount || needsRender) {\n scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n }\n\n if (child !== null && !needsRemount) {\n scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies);\n }\n\n if (sibling !== null) {\n scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies);\n }\n }\n}\n\nvar findHostInstancesForRefresh = function (root, families) {\n {\n var hostInstances = new Set();\n var types = new Set(families.map(function (family) {\n return family.current;\n }));\n findHostInstancesForMatchingFibersRecursively(root.current, types, hostInstances);\n return hostInstances;\n }\n};\n\nfunction findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) {\n {\n var child = fiber.child,\n sibling = fiber.sibling,\n tag = fiber.tag,\n type = fiber.type;\n var candidateType = null;\n\n switch (tag) {\n case FunctionComponent:\n case SimpleMemoComponent:\n case ClassComponent:\n candidateType = type;\n break;\n\n case ForwardRef:\n candidateType = type.render;\n break;\n }\n\n var didMatch = false;\n\n if (candidateType !== null) {\n if (types.has(candidateType)) {\n didMatch = true;\n }\n }\n\n if (didMatch) {\n // We have a match. This only drills down to the closest host components.\n // There's no need to search deeper because for the purpose of giving\n // visual feedback, \"flashing\" outermost parent rectangles is sufficient.\n findHostInstancesForFiberShallowly(fiber, hostInstances);\n } else {\n // If there's no match, maybe there will be one further down in the child tree.\n if (child !== null) {\n findHostInstancesForMatchingFibersRecursively(child, types, hostInstances);\n }\n }\n\n if (sibling !== null) {\n findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances);\n }\n }\n}\n\nfunction findHostInstancesForFiberShallowly(fiber, hostInstances) {\n {\n var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances);\n\n if (foundHostInstances) {\n return;\n } // If we didn't find any host children, fallback to closest host parent.\n\n\n var node = fiber;\n\n while (true) {\n switch (node.tag) {\n case HostComponent:\n hostInstances.add(node.stateNode);\n return;\n\n case HostPortal:\n hostInstances.add(node.stateNode.containerInfo);\n return;\n\n case HostRoot:\n hostInstances.add(node.stateNode.containerInfo);\n return;\n }\n\n if (node.return === null) {\n throw new Error('Expected to reach root first.');\n }\n\n node = node.return;\n }\n }\n}\n\nfunction findChildHostInstancesForFiberShallowly(fiber, hostInstances) {\n {\n var node = fiber;\n var foundHostInstances = false;\n\n while (true) {\n if (node.tag === HostComponent) {\n // We got a match.\n foundHostInstances = true;\n hostInstances.add(node.stateNode); // There may still be more, so keep searching.\n } else if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === fiber) {\n return foundHostInstances;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === fiber) {\n return foundHostInstances;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n\n return false;\n}\n\nvar hasBadMapPolyfill;\n\n{\n hasBadMapPolyfill = false;\n\n try {\n var nonExtensibleObject = Object.preventExtensions({});\n /* eslint-disable no-new */\n\n new Map([[nonExtensibleObject, null]]);\n new Set([nonExtensibleObject]);\n /* eslint-enable no-new */\n } catch (e) {\n // TODO: Consider warning about bad polyfills\n hasBadMapPolyfill = true;\n }\n}\n\nvar debugCounter = 1;\n\nfunction FiberNode(tag, pendingProps, key, mode) {\n // Instance\n this.tag = tag;\n this.key = key;\n this.elementType = null;\n this.type = null;\n this.stateNode = null; // Fiber\n\n this.return = null;\n this.child = null;\n this.sibling = null;\n this.index = 0;\n this.ref = null;\n this.pendingProps = pendingProps;\n this.memoizedProps = null;\n this.updateQueue = null;\n this.memoizedState = null;\n this.dependencies = null;\n this.mode = mode; // Effects\n\n this.flags = NoFlags;\n this.nextEffect = null;\n this.firstEffect = null;\n this.lastEffect = null;\n this.lanes = NoLanes;\n this.childLanes = NoLanes;\n this.alternate = null;\n\n {\n // Note: The following is done to avoid a v8 performance cliff.\n //\n // Initializing the fields below to smis and later updating them with\n // double values will cause Fibers to end up having separate shapes.\n // This behavior/bug has something to do with Object.preventExtension().\n // Fortunately this only impacts DEV builds.\n // Unfortunately it makes React unusably slow for some applications.\n // To work around this, initialize the fields below with doubles.\n //\n // Learn more about this here:\n // https://github.com/facebook/react/issues/14365\n // https://bugs.chromium.org/p/v8/issues/detail?id=8538\n this.actualDuration = Number.NaN;\n this.actualStartTime = Number.NaN;\n this.selfBaseDuration = Number.NaN;\n this.treeBaseDuration = Number.NaN; // It's okay to replace the initial doubles with smis after initialization.\n // This won't trigger the performance cliff mentioned above,\n // and it simplifies other profiler code (including DevTools).\n\n this.actualDuration = 0;\n this.actualStartTime = -1;\n this.selfBaseDuration = 0;\n this.treeBaseDuration = 0;\n }\n\n {\n // This isn't directly used but is handy for debugging internals:\n this._debugID = debugCounter++;\n this._debugSource = null;\n this._debugOwner = null;\n this._debugNeedsRemount = false;\n this._debugHookTypes = null;\n\n if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {\n Object.preventExtensions(this);\n }\n }\n} // This is a constructor function, rather than a POJO constructor, still\n// please ensure we do the following:\n// 1) Nobody should add any instance methods on this. Instance methods can be\n// more difficult to predict when they get optimized and they are almost\n// never inlined properly in static compilers.\n// 2) Nobody should rely on `instanceof Fiber` for type testing. We should\n// always know when it is a fiber.\n// 3) We might want to experiment with using numeric keys since they are easier\n// to optimize in a non-JIT environment.\n// 4) We can easily go from a constructor to a createFiber object literal if that\n// is faster.\n// 5) It should be easy to port this to a C struct and keep a C implementation\n// compatible.\n\n\nvar createFiber = function (tag, pendingProps, key, mode) {\n // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors\n return new FiberNode(tag, pendingProps, key, mode);\n};\n\nfunction shouldConstruct$1(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction isSimpleFunctionComponent(type) {\n return typeof type === 'function' && !shouldConstruct$1(type) && type.defaultProps === undefined;\n}\nfunction resolveLazyComponentTag(Component) {\n if (typeof Component === 'function') {\n return shouldConstruct$1(Component) ? ClassComponent : FunctionComponent;\n } else if (Component !== undefined && Component !== null) {\n var $$typeof = Component.$$typeof;\n\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n return ForwardRef;\n }\n\n if ($$typeof === REACT_MEMO_TYPE) {\n return MemoComponent;\n }\n }\n\n return IndeterminateComponent;\n} // This is used to create an alternate fiber to do work on.\n\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n\n if (workInProgress === null) {\n // We use a double buffering pooling technique because we know that we'll\n // only ever need at most two versions of a tree. We pool the \"other\" unused\n // node that we're free to reuse. This is lazily created to avoid allocating\n // extra objects for things that are never updated. It also allow us to\n // reclaim the extra memory if needed.\n workInProgress = createFiber(current.tag, pendingProps, current.key, current.mode);\n workInProgress.elementType = current.elementType;\n workInProgress.type = current.type;\n workInProgress.stateNode = current.stateNode;\n\n {\n // DEV-only fields\n workInProgress._debugID = current._debugID;\n workInProgress._debugSource = current._debugSource;\n workInProgress._debugOwner = current._debugOwner;\n workInProgress._debugHookTypes = current._debugHookTypes;\n }\n\n workInProgress.alternate = current;\n current.alternate = workInProgress;\n } else {\n workInProgress.pendingProps = pendingProps; // Needed because Blocks store data on type.\n\n workInProgress.type = current.type; // We already have an alternate.\n // Reset the effect tag.\n\n workInProgress.flags = NoFlags; // The effect list is no longer valid.\n\n workInProgress.nextEffect = null;\n workInProgress.firstEffect = null;\n workInProgress.lastEffect = null;\n\n {\n // We intentionally reset, rather than copy, actualDuration & actualStartTime.\n // This prevents time from endlessly accumulating in new commits.\n // This has the downside of resetting values for different priority renders,\n // But works for yielding (the common case) and should support resuming.\n workInProgress.actualDuration = 0;\n workInProgress.actualStartTime = -1;\n }\n }\n\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so\n // it cannot be shared with the current fiber.\n\n var currentDependencies = current.dependencies;\n workInProgress.dependencies = currentDependencies === null ? null : {\n lanes: currentDependencies.lanes,\n firstContext: currentDependencies.firstContext\n }; // These will be overridden during the parent's reconciliation\n\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n\n {\n workInProgress.selfBaseDuration = current.selfBaseDuration;\n workInProgress.treeBaseDuration = current.treeBaseDuration;\n }\n\n {\n workInProgress._debugNeedsRemount = current._debugNeedsRemount;\n\n switch (workInProgress.tag) {\n case IndeterminateComponent:\n case FunctionComponent:\n case SimpleMemoComponent:\n workInProgress.type = resolveFunctionForHotReloading(current.type);\n break;\n\n case ClassComponent:\n workInProgress.type = resolveClassForHotReloading(current.type);\n break;\n\n case ForwardRef:\n workInProgress.type = resolveForwardRefForHotReloading(current.type);\n break;\n }\n }\n\n return workInProgress;\n} // Used to reuse a Fiber for a second pass.\n\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n // This resets the Fiber to what createFiber or createWorkInProgress would\n // have set the values to before during the first pass. Ideally this wouldn't\n // be necessary but unfortunately many code paths reads from the workInProgress\n // when they should be reading from current and writing to workInProgress.\n // We assume pendingProps, index, key, ref, return are still untouched to\n // avoid doing another reconciliation.\n // Reset the effect tag but keep any Placement tags, since that's something\n // that child fiber is setting, not the reconciliation.\n workInProgress.flags &= Placement; // The effect list is no longer valid.\n\n workInProgress.nextEffect = null;\n workInProgress.firstEffect = null;\n workInProgress.lastEffect = null;\n var current = workInProgress.alternate;\n\n if (current === null) {\n // Reset to createFiber's initial values.\n workInProgress.childLanes = NoLanes;\n workInProgress.lanes = renderLanes;\n workInProgress.child = null;\n workInProgress.memoizedProps = null;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.dependencies = null;\n workInProgress.stateNode = null;\n\n {\n // Note: We don't reset the actualTime counts. It's useful to accumulate\n // actual time across multiple render passes.\n workInProgress.selfBaseDuration = 0;\n workInProgress.treeBaseDuration = 0;\n }\n } else {\n // Reset to the cloned values that createWorkInProgress would've.\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue; // Needed because Blocks store data on type.\n\n workInProgress.type = current.type; // Clone the dependencies object. This is mutated during the render phase, so\n // it cannot be shared with the current fiber.\n\n var currentDependencies = current.dependencies;\n workInProgress.dependencies = currentDependencies === null ? null : {\n lanes: currentDependencies.lanes,\n firstContext: currentDependencies.firstContext\n };\n\n {\n // Note: We don't reset the actualTime counts. It's useful to accumulate\n // actual time across multiple render passes.\n workInProgress.selfBaseDuration = current.selfBaseDuration;\n workInProgress.treeBaseDuration = current.treeBaseDuration;\n }\n }\n\n return workInProgress;\n}\nfunction createHostRootFiber(tag) {\n var mode;\n\n if (tag === ConcurrentRoot) {\n mode = ConcurrentMode | BlockingMode | StrictMode;\n } else if (tag === BlockingRoot) {\n mode = BlockingMode | StrictMode;\n } else {\n mode = NoMode;\n }\n\n if ( isDevToolsPresent) {\n // Always collect profile timings when DevTools are present.\n // This enables DevTools to start capturing timing at any point\u2013\n // Without some nodes in the tree having empty base times.\n mode |= ProfileMode;\n }\n\n return createFiber(HostRoot, null, null, mode);\n}\nfunction createFiberFromTypeAndProps(type, // React$ElementType\nkey, pendingProps, owner, mode, lanes) {\n var fiberTag = IndeterminateComponent; // The resolved type is set if we know what the final type will be. I.e. it's not lazy.\n\n var resolvedType = type;\n\n if (typeof type === 'function') {\n if (shouldConstruct$1(type)) {\n fiberTag = ClassComponent;\n\n {\n resolvedType = resolveClassForHotReloading(resolvedType);\n }\n } else {\n {\n resolvedType = resolveFunctionForHotReloading(resolvedType);\n }\n }\n } else if (typeof type === 'string') {\n fiberTag = HostComponent;\n } else {\n getTag: switch (type) {\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n\n case REACT_DEBUG_TRACING_MODE_TYPE:\n fiberTag = Mode;\n mode |= DebugTracingMode;\n break;\n\n case REACT_STRICT_MODE_TYPE:\n fiberTag = Mode;\n mode |= StrictMode;\n break;\n\n case REACT_PROFILER_TYPE:\n return createFiberFromProfiler(pendingProps, mode, lanes, key);\n\n case REACT_SUSPENSE_TYPE:\n return createFiberFromSuspense(pendingProps, mode, lanes, key);\n\n case REACT_SUSPENSE_LIST_TYPE:\n return createFiberFromSuspenseList(pendingProps, mode, lanes, key);\n\n case REACT_OFFSCREEN_TYPE:\n return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n\n case REACT_LEGACY_HIDDEN_TYPE:\n return createFiberFromLegacyHidden(pendingProps, mode, lanes, key);\n\n case REACT_SCOPE_TYPE:\n\n // eslint-disable-next-line no-fallthrough\n\n default:\n {\n if (typeof type === 'object' && type !== null) {\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n fiberTag = ContextProvider;\n break getTag;\n\n case REACT_CONTEXT_TYPE:\n // This is a consumer\n fiberTag = ContextConsumer;\n break getTag;\n\n case REACT_FORWARD_REF_TYPE:\n fiberTag = ForwardRef;\n\n {\n resolvedType = resolveForwardRefForHotReloading(resolvedType);\n }\n\n break getTag;\n\n case REACT_MEMO_TYPE:\n fiberTag = MemoComponent;\n break getTag;\n\n case REACT_LAZY_TYPE:\n fiberTag = LazyComponent;\n resolvedType = null;\n break getTag;\n\n case REACT_BLOCK_TYPE:\n fiberTag = Block;\n break getTag;\n }\n }\n\n var info = '';\n\n {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and \" + 'named imports.';\n }\n\n var ownerName = owner ? getComponentName(owner.type) : null;\n\n if (ownerName) {\n info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n }\n }\n\n {\n {\n throw Error( \"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: \" + (type == null ? type : typeof type) + \".\" + info );\n }\n }\n }\n }\n }\n\n var fiber = createFiber(fiberTag, pendingProps, key, mode);\n fiber.elementType = type;\n fiber.type = resolvedType;\n fiber.lanes = lanes;\n\n {\n fiber._debugOwner = owner;\n }\n\n return fiber;\n}\nfunction createFiberFromElement(element, mode, lanes) {\n var owner = null;\n\n {\n owner = element._owner;\n }\n\n var type = element.type;\n var key = element.key;\n var pendingProps = element.props;\n var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes);\n\n {\n fiber._debugSource = element._source;\n fiber._debugOwner = element._owner;\n }\n\n return fiber;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n var fiber = createFiber(Fragment, elements, key, mode);\n fiber.lanes = lanes;\n return fiber;\n}\n\nfunction createFiberFromProfiler(pendingProps, mode, lanes, key) {\n {\n if (typeof pendingProps.id !== 'string') {\n error('Profiler must specify an \"id\" as a prop');\n }\n }\n\n var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode); // TODO: The Profiler fiber shouldn't have a type. It has a tag.\n\n fiber.elementType = REACT_PROFILER_TYPE;\n fiber.type = REACT_PROFILER_TYPE;\n fiber.lanes = lanes;\n\n {\n fiber.stateNode = {\n effectDuration: 0,\n passiveEffectDuration: 0\n };\n }\n\n return fiber;\n}\n\nfunction createFiberFromSuspense(pendingProps, mode, lanes, key) {\n var fiber = createFiber(SuspenseComponent, pendingProps, key, mode); // TODO: The SuspenseComponent fiber shouldn't have a type. It has a tag.\n // This needs to be fixed in getComponentName so that it relies on the tag\n // instead.\n\n fiber.type = REACT_SUSPENSE_TYPE;\n fiber.elementType = REACT_SUSPENSE_TYPE;\n fiber.lanes = lanes;\n return fiber;\n}\nfunction createFiberFromSuspenseList(pendingProps, mode, lanes, key) {\n var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);\n\n {\n // TODO: The SuspenseListComponent fiber shouldn't have a type. It has a tag.\n // This needs to be fixed in getComponentName so that it relies on the tag\n // instead.\n fiber.type = REACT_SUSPENSE_LIST_TYPE;\n }\n\n fiber.elementType = REACT_SUSPENSE_LIST_TYPE;\n fiber.lanes = lanes;\n return fiber;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n var fiber = createFiber(OffscreenComponent, pendingProps, key, mode); // TODO: The OffscreenComponent fiber shouldn't have a type. It has a tag.\n // This needs to be fixed in getComponentName so that it relies on the tag\n // instead.\n\n {\n fiber.type = REACT_OFFSCREEN_TYPE;\n }\n\n fiber.elementType = REACT_OFFSCREEN_TYPE;\n fiber.lanes = lanes;\n return fiber;\n}\nfunction createFiberFromLegacyHidden(pendingProps, mode, lanes, key) {\n var fiber = createFiber(LegacyHiddenComponent, pendingProps, key, mode); // TODO: The LegacyHidden fiber shouldn't have a type. It has a tag.\n // This needs to be fixed in getComponentName so that it relies on the tag\n // instead.\n\n {\n fiber.type = REACT_LEGACY_HIDDEN_TYPE;\n }\n\n fiber.elementType = REACT_LEGACY_HIDDEN_TYPE;\n fiber.lanes = lanes;\n return fiber;\n}\nfunction createFiberFromText(content, mode, lanes) {\n var fiber = createFiber(HostText, content, null, mode);\n fiber.lanes = lanes;\n return fiber;\n}\nfunction createFiberFromHostInstanceForDeletion() {\n var fiber = createFiber(HostComponent, null, null, NoMode); // TODO: These should not need a type.\n\n fiber.elementType = 'DELETED';\n fiber.type = 'DELETED';\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n var pendingProps = portal.children !== null ? portal.children : [];\n var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);\n fiber.lanes = lanes;\n fiber.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n // Used by persistent updates\n implementation: portal.implementation\n };\n return fiber;\n} // Used for stashing WIP properties to replay failed work in DEV.\n\nfunction assignFiberPropertiesInDEV(target, source) {\n if (target === null) {\n // This Fiber's initial properties will always be overwritten.\n // We only use a Fiber to ensure the same hidden class so DEV isn't slow.\n target = createFiber(IndeterminateComponent, null, null, NoMode);\n } // This is intentionally written as a list of all properties.\n // We tried to use Object.assign() instead but this is called in\n // the hottest path, and Object.assign() was too slow:\n // https://github.com/facebook/react/issues/12502\n // This code is DEV-only so size is not a concern.\n\n\n target.tag = source.tag;\n target.key = source.key;\n target.elementType = source.elementType;\n target.type = source.type;\n target.stateNode = source.stateNode;\n target.return = source.return;\n target.child = source.child;\n target.sibling = source.sibling;\n target.index = source.index;\n target.ref = source.ref;\n target.pendingProps = source.pendingProps;\n target.memoizedProps = source.memoizedProps;\n target.updateQueue = source.updateQueue;\n target.memoizedState = source.memoizedState;\n target.dependencies = source.dependencies;\n target.mode = source.mode;\n target.flags = source.flags;\n target.nextEffect = source.nextEffect;\n target.firstEffect = source.firstEffect;\n target.lastEffect = source.lastEffect;\n target.lanes = source.lanes;\n target.childLanes = source.childLanes;\n target.alternate = source.alternate;\n\n {\n target.actualDuration = source.actualDuration;\n target.actualStartTime = source.actualStartTime;\n target.selfBaseDuration = source.selfBaseDuration;\n target.treeBaseDuration = source.treeBaseDuration;\n }\n\n target._debugID = source._debugID;\n target._debugSource = source._debugSource;\n target._debugOwner = source._debugOwner;\n target._debugNeedsRemount = source._debugNeedsRemount;\n target._debugHookTypes = source._debugHookTypes;\n return target;\n}\n\nfunction FiberRootNode(containerInfo, tag, hydrate) {\n this.tag = tag;\n this.containerInfo = containerInfo;\n this.pendingChildren = null;\n this.current = null;\n this.pingCache = null;\n this.finishedWork = null;\n this.timeoutHandle = noTimeout;\n this.context = null;\n this.pendingContext = null;\n this.hydrate = hydrate;\n this.callbackNode = null;\n this.callbackPriority = NoLanePriority;\n this.eventTimes = createLaneMap(NoLanes);\n this.expirationTimes = createLaneMap(NoTimestamp);\n this.pendingLanes = NoLanes;\n this.suspendedLanes = NoLanes;\n this.pingedLanes = NoLanes;\n this.expiredLanes = NoLanes;\n this.mutableReadLanes = NoLanes;\n this.finishedLanes = NoLanes;\n this.entangledLanes = NoLanes;\n this.entanglements = createLaneMap(NoLanes);\n\n {\n this.mutableSourceEagerHydrationData = null;\n }\n\n {\n this.interactionThreadID = tracing.unstable_getThreadID();\n this.memoizedInteractions = new Set();\n this.pendingInteractionMap = new Map();\n }\n\n {\n switch (tag) {\n case BlockingRoot:\n this._debugRootType = 'createBlockingRoot()';\n break;\n\n case ConcurrentRoot:\n this._debugRootType = 'createRoot()';\n break;\n\n case LegacyRoot:\n this._debugRootType = 'createLegacyRoot()';\n break;\n }\n }\n}\n\nfunction createFiberRoot(containerInfo, tag, hydrate, hydrationCallbacks) {\n var root = new FiberRootNode(containerInfo, tag, hydrate);\n // stateNode is any.\n\n\n var uninitializedFiber = createHostRootFiber(tag);\n root.current = uninitializedFiber;\n uninitializedFiber.stateNode = root;\n initializeUpdateQueue(uninitializedFiber);\n return root;\n}\n\n// This ensures that the version used for server rendering matches the one\n// that is eventually read during hydration.\n// If they don't match there's a potential tear and a full deopt render is required.\n\nfunction registerMutableSourceForHydration(root, mutableSource) {\n var getVersion = mutableSource._getVersion;\n var version = getVersion(mutableSource._source); // TODO Clear this data once all pending hydration work is finished.\n // Retaining it forever may interfere with GC.\n\n if (root.mutableSourceEagerHydrationData == null) {\n root.mutableSourceEagerHydrationData = [mutableSource, version];\n } else {\n root.mutableSourceEagerHydrationData.push(mutableSource, version);\n }\n}\n\nfunction createPortal(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.\nimplementation) {\n var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return {\n // This tag allow us to uniquely identify this as a React Portal\n $$typeof: REACT_PORTAL_TYPE,\n key: key == null ? null : '' + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\n\nvar didWarnAboutNestedUpdates;\nvar didWarnAboutFindNodeInStrictMode;\n\n{\n didWarnAboutNestedUpdates = false;\n didWarnAboutFindNodeInStrictMode = {};\n}\n\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) {\n return emptyContextObject;\n }\n\n var fiber = get(parentComponent);\n var parentContext = findCurrentUnmaskedContext(fiber);\n\n if (fiber.tag === ClassComponent) {\n var Component = fiber.type;\n\n if (isContextProvider(Component)) {\n return processChildContext(fiber, Component, parentContext);\n }\n }\n\n return parentContext;\n}\n\nfunction findHostInstanceWithWarning(component, methodName) {\n {\n var fiber = get(component);\n\n if (fiber === undefined) {\n if (typeof component.render === 'function') {\n {\n {\n throw Error( \"Unable to find node on an unmounted component.\" );\n }\n }\n } else {\n {\n {\n throw Error( \"Argument appears to not be a ReactComponent. Keys: \" + Object.keys(component) );\n }\n }\n }\n }\n\n var hostFiber = findCurrentHostFiber(fiber);\n\n if (hostFiber === null) {\n return null;\n }\n\n if (hostFiber.mode & StrictMode) {\n var componentName = getComponentName(fiber.type) || 'Component';\n\n if (!didWarnAboutFindNodeInStrictMode[componentName]) {\n didWarnAboutFindNodeInStrictMode[componentName] = true;\n var previousFiber = current;\n\n try {\n setCurrentFiber(hostFiber);\n\n if (fiber.mode & StrictMode) {\n error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which is inside StrictMode. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);\n } else {\n error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which renders StrictMode children. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);\n }\n } finally {\n // Ideally this should reset to previous but this shouldn't be called in\n // render and there's another warning for that anyway.\n if (previousFiber) {\n setCurrentFiber(previousFiber);\n } else {\n resetCurrentFiber();\n }\n }\n }\n }\n\n return hostFiber.stateNode;\n }\n}\n\nfunction createContainer(containerInfo, tag, hydrate, hydrationCallbacks) {\n return createFiberRoot(containerInfo, tag, hydrate);\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n {\n onScheduleRoot(container, element);\n }\n\n var current$1 = container.current;\n var eventTime = requestEventTime();\n\n {\n // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests\n if ('undefined' !== typeof jest) {\n warnIfUnmockedScheduler(current$1);\n warnIfNotScopedWithMatchingAct(current$1);\n }\n }\n\n var lane = requestUpdateLane(current$1);\n\n var context = getContextForSubtree(parentComponent);\n\n if (container.context === null) {\n container.context = context;\n } else {\n container.pendingContext = context;\n }\n\n {\n if (isRendering && current !== null && !didWarnAboutNestedUpdates) {\n didWarnAboutNestedUpdates = true;\n\n error('Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\\n\\n' + 'Check the render method of %s.', getComponentName(current.type) || 'Unknown');\n }\n }\n\n var update = createUpdate(eventTime, lane); // Caution: React DevTools currently depends on this property\n // being called \"element\".\n\n update.payload = {\n element: element\n };\n callback = callback === undefined ? null : callback;\n\n if (callback !== null) {\n {\n if (typeof callback !== 'function') {\n error('render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback);\n }\n }\n\n update.callback = callback;\n }\n\n enqueueUpdate(current$1, update);\n scheduleUpdateOnFiber(current$1, lane, eventTime);\n return lane;\n}\nfunction getPublicRootInstance(container) {\n var containerFiber = container.current;\n\n if (!containerFiber.child) {\n return null;\n }\n\n switch (containerFiber.child.tag) {\n case HostComponent:\n return getPublicInstance(containerFiber.child.stateNode);\n\n default:\n return containerFiber.child.stateNode;\n }\n}\n\nfunction markRetryLaneImpl(fiber, retryLane) {\n var suspenseState = fiber.memoizedState;\n\n if (suspenseState !== null && suspenseState.dehydrated !== null) {\n suspenseState.retryLane = higherPriorityLane(suspenseState.retryLane, retryLane);\n }\n} // Increases the priority of thennables when they resolve within this boundary.\n\n\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n var alternate = fiber.alternate;\n\n if (alternate) {\n markRetryLaneImpl(alternate, retryLane);\n }\n}\n\nfunction attemptUserBlockingHydration$1(fiber) {\n if (fiber.tag !== SuspenseComponent) {\n // We ignore HostRoots here because we can't increase\n // their priority and they should not suspend on I/O,\n // since you have to wrap anything that might suspend in\n // Suspense.\n return;\n }\n\n var eventTime = requestEventTime();\n var lane = InputDiscreteHydrationLane;\n scheduleUpdateOnFiber(fiber, lane, eventTime);\n markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction attemptContinuousHydration$1(fiber) {\n if (fiber.tag !== SuspenseComponent) {\n // We ignore HostRoots here because we can't increase\n // their priority and they should not suspend on I/O,\n // since you have to wrap anything that might suspend in\n // Suspense.\n return;\n }\n\n var eventTime = requestEventTime();\n var lane = SelectiveHydrationLane;\n scheduleUpdateOnFiber(fiber, lane, eventTime);\n markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction attemptHydrationAtCurrentPriority$1(fiber) {\n if (fiber.tag !== SuspenseComponent) {\n // We ignore HostRoots here because we can't increase\n // their priority other than synchronously flush it.\n return;\n }\n\n var eventTime = requestEventTime();\n var lane = requestUpdateLane(fiber);\n scheduleUpdateOnFiber(fiber, lane, eventTime);\n markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction runWithPriority$2(priority, fn) {\n\n try {\n setCurrentUpdateLanePriority(priority);\n return fn();\n } finally {\n }\n}\nfunction findHostInstanceWithNoPortals(fiber) {\n var hostFiber = findCurrentHostFiberWithNoPortals(fiber);\n\n if (hostFiber === null) {\n return null;\n }\n\n if (hostFiber.tag === FundamentalComponent) {\n return hostFiber.stateNode.instance;\n }\n\n return hostFiber.stateNode;\n}\n\nvar shouldSuspendImpl = function (fiber) {\n return false;\n};\n\nfunction shouldSuspend(fiber) {\n return shouldSuspendImpl(fiber);\n}\nvar overrideHookState = null;\nvar overrideHookStateDeletePath = null;\nvar overrideHookStateRenamePath = null;\nvar overrideProps = null;\nvar overridePropsDeletePath = null;\nvar overridePropsRenamePath = null;\nvar scheduleUpdate = null;\nvar setSuspenseHandler = null;\n\n{\n var copyWithDeleteImpl = function (obj, path, index) {\n var key = path[index];\n var updated = Array.isArray(obj) ? obj.slice() : _assign({}, obj);\n\n if (index + 1 === path.length) {\n if (Array.isArray(updated)) {\n updated.splice(key, 1);\n } else {\n delete updated[key];\n }\n\n return updated;\n } // $FlowFixMe number or string is fine here\n\n\n updated[key] = copyWithDeleteImpl(obj[key], path, index + 1);\n return updated;\n };\n\n var copyWithDelete = function (obj, path) {\n return copyWithDeleteImpl(obj, path, 0);\n };\n\n var copyWithRenameImpl = function (obj, oldPath, newPath, index) {\n var oldKey = oldPath[index];\n var updated = Array.isArray(obj) ? obj.slice() : _assign({}, obj);\n\n if (index + 1 === oldPath.length) {\n var newKey = newPath[index]; // $FlowFixMe number or string is fine here\n\n updated[newKey] = updated[oldKey];\n\n if (Array.isArray(updated)) {\n updated.splice(oldKey, 1);\n } else {\n delete updated[oldKey];\n }\n } else {\n // $FlowFixMe number or string is fine here\n updated[oldKey] = copyWithRenameImpl( // $FlowFixMe number or string is fine here\n obj[oldKey], oldPath, newPath, index + 1);\n }\n\n return updated;\n };\n\n var copyWithRename = function (obj, oldPath, newPath) {\n if (oldPath.length !== newPath.length) {\n warn('copyWithRename() expects paths of the same length');\n\n return;\n } else {\n for (var i = 0; i < newPath.length - 1; i++) {\n if (oldPath[i] !== newPath[i]) {\n warn('copyWithRename() expects paths to be the same except for the deepest key');\n\n return;\n }\n }\n }\n\n return copyWithRenameImpl(obj, oldPath, newPath, 0);\n };\n\n var copyWithSetImpl = function (obj, path, index, value) {\n if (index >= path.length) {\n return value;\n }\n\n var key = path[index];\n var updated = Array.isArray(obj) ? obj.slice() : _assign({}, obj); // $FlowFixMe number or string is fine here\n\n updated[key] = copyWithSetImpl(obj[key], path, index + 1, value);\n return updated;\n };\n\n var copyWithSet = function (obj, path, value) {\n return copyWithSetImpl(obj, path, 0, value);\n };\n\n var findHook = function (fiber, id) {\n // For now, the \"id\" of stateful hooks is just the stateful hook index.\n // This may change in the future with e.g. nested hooks.\n var currentHook = fiber.memoizedState;\n\n while (currentHook !== null && id > 0) {\n currentHook = currentHook.next;\n id--;\n }\n\n return currentHook;\n }; // Support DevTools editable values for useState and useReducer.\n\n\n overrideHookState = function (fiber, id, path, value) {\n var hook = findHook(fiber, id);\n\n if (hook !== null) {\n var newState = copyWithSet(hook.memoizedState, path, value);\n hook.memoizedState = newState;\n hook.baseState = newState; // We aren't actually adding an update to the queue,\n // because there is no update we can add for useReducer hooks that won't trigger an error.\n // (There's no appropriate action type for DevTools overrides.)\n // As a result though, React will see the scheduled update as a noop and bailout.\n // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n fiber.memoizedProps = _assign({}, fiber.memoizedProps);\n scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n }\n };\n\n overrideHookStateDeletePath = function (fiber, id, path) {\n var hook = findHook(fiber, id);\n\n if (hook !== null) {\n var newState = copyWithDelete(hook.memoizedState, path);\n hook.memoizedState = newState;\n hook.baseState = newState; // We aren't actually adding an update to the queue,\n // because there is no update we can add for useReducer hooks that won't trigger an error.\n // (There's no appropriate action type for DevTools overrides.)\n // As a result though, React will see the scheduled update as a noop and bailout.\n // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n fiber.memoizedProps = _assign({}, fiber.memoizedProps);\n scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n }\n };\n\n overrideHookStateRenamePath = function (fiber, id, oldPath, newPath) {\n var hook = findHook(fiber, id);\n\n if (hook !== null) {\n var newState = copyWithRename(hook.memoizedState, oldPath, newPath);\n hook.memoizedState = newState;\n hook.baseState = newState; // We aren't actually adding an update to the queue,\n // because there is no update we can add for useReducer hooks that won't trigger an error.\n // (There's no appropriate action type for DevTools overrides.)\n // As a result though, React will see the scheduled update as a noop and bailout.\n // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n fiber.memoizedProps = _assign({}, fiber.memoizedProps);\n scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n }\n }; // Support DevTools props for function components, forwardRef, memo, host components, etc.\n\n\n overrideProps = function (fiber, path, value) {\n fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value);\n\n if (fiber.alternate) {\n fiber.alternate.pendingProps = fiber.pendingProps;\n }\n\n scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n };\n\n overridePropsDeletePath = function (fiber, path) {\n fiber.pendingProps = copyWithDelete(fiber.memoizedProps, path);\n\n if (fiber.alternate) {\n fiber.alternate.pendingProps = fiber.pendingProps;\n }\n\n scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n };\n\n overridePropsRenamePath = function (fiber, oldPath, newPath) {\n fiber.pendingProps = copyWithRename(fiber.memoizedProps, oldPath, newPath);\n\n if (fiber.alternate) {\n fiber.alternate.pendingProps = fiber.pendingProps;\n }\n\n scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n };\n\n scheduleUpdate = function (fiber) {\n scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n };\n\n setSuspenseHandler = function (newShouldSuspendImpl) {\n shouldSuspendImpl = newShouldSuspendImpl;\n };\n}\n\nfunction findHostInstanceByFiber(fiber) {\n var hostFiber = findCurrentHostFiber(fiber);\n\n if (hostFiber === null) {\n return null;\n }\n\n return hostFiber.stateNode;\n}\n\nfunction emptyFindFiberByHostInstance(instance) {\n return null;\n}\n\nfunction getCurrentFiberForDevTools() {\n return current;\n}\n\nfunction injectIntoDevTools(devToolsConfig) {\n var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n return injectInternals({\n bundleType: devToolsConfig.bundleType,\n version: devToolsConfig.version,\n rendererPackageName: devToolsConfig.rendererPackageName,\n rendererConfig: devToolsConfig.rendererConfig,\n overrideHookState: overrideHookState,\n overrideHookStateDeletePath: overrideHookStateDeletePath,\n overrideHookStateRenamePath: overrideHookStateRenamePath,\n overrideProps: overrideProps,\n overridePropsDeletePath: overridePropsDeletePath,\n overridePropsRenamePath: overridePropsRenamePath,\n setSuspenseHandler: setSuspenseHandler,\n scheduleUpdate: scheduleUpdate,\n currentDispatcherRef: ReactCurrentDispatcher,\n findHostInstanceByFiber: findHostInstanceByFiber,\n findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance,\n // React Refresh\n findHostInstancesForRefresh: findHostInstancesForRefresh ,\n scheduleRefresh: scheduleRefresh ,\n scheduleRoot: scheduleRoot ,\n setRefreshHandler: setRefreshHandler ,\n // Enables DevTools to append owner stacks to error messages in DEV mode.\n getCurrentFiber: getCurrentFiberForDevTools \n });\n}\n\nfunction ReactDOMRoot(container, options) {\n this._internalRoot = createRootImpl(container, ConcurrentRoot, options);\n}\n\nfunction ReactDOMBlockingRoot(container, tag, options) {\n this._internalRoot = createRootImpl(container, tag, options);\n}\n\nReactDOMRoot.prototype.render = ReactDOMBlockingRoot.prototype.render = function (children) {\n var root = this._internalRoot;\n\n {\n if (typeof arguments[1] === 'function') {\n error('render(...): does not support the second callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');\n }\n\n var container = root.containerInfo;\n\n if (container.nodeType !== COMMENT_NODE) {\n var hostInstance = findHostInstanceWithNoPortals(root.current);\n\n if (hostInstance) {\n if (hostInstance.parentNode !== container) {\n error('render(...): It looks like the React-rendered content of the ' + 'root container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + \"root.unmount() to empty a root's container.\");\n }\n }\n }\n }\n\n updateContainer(children, root, null, null);\n};\n\nReactDOMRoot.prototype.unmount = ReactDOMBlockingRoot.prototype.unmount = function () {\n {\n if (typeof arguments[0] === 'function') {\n error('unmount(...): does not support a callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');\n }\n }\n\n var root = this._internalRoot;\n var container = root.containerInfo;\n updateContainer(null, root, null, function () {\n unmarkContainerAsRoot(container);\n });\n};\n\nfunction createRootImpl(container, tag, options) {\n // Tag is either LegacyRoot or Concurrent Root\n var hydrate = options != null && options.hydrate === true;\n var hydrationCallbacks = options != null && options.hydrationOptions || null;\n var mutableSources = options != null && options.hydrationOptions != null && options.hydrationOptions.mutableSources || null;\n var root = createContainer(container, tag, hydrate);\n markContainerAsRoot(root.current, container);\n var containerNodeType = container.nodeType;\n\n {\n var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n listenToAllSupportedEvents(rootContainerElement);\n }\n\n if (mutableSources) {\n for (var i = 0; i < mutableSources.length; i++) {\n var mutableSource = mutableSources[i];\n registerMutableSourceForHydration(root, mutableSource);\n }\n }\n\n return root;\n}\nfunction createLegacyRoot(container, options) {\n return new ReactDOMBlockingRoot(container, LegacyRoot, options);\n}\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable '));\n}\n\nvar ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;\nvar topLevelUpdateWarnings;\nvar warnedAboutHydrateAPI = false;\n\n{\n topLevelUpdateWarnings = function (container) {\n if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {\n var hostInstance = findHostInstanceWithNoPortals(container._reactRootContainer._internalRoot.current);\n\n if (hostInstance) {\n if (hostInstance.parentNode !== container) {\n error('render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.');\n }\n }\n }\n\n var isRootRenderedBySomeReact = !!container._reactRootContainer;\n var rootEl = getReactRootElementInContainer(container);\n var hasNonRootReactChild = !!(rootEl && getInstanceFromNode(rootEl));\n\n if (hasNonRootReactChild && !isRootRenderedBySomeReact) {\n error('render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.');\n }\n\n if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') {\n error('render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.');\n }\n };\n}\n\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOCUMENT_NODE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction shouldHydrateDueToLegacyHeuristic(container) {\n var rootElement = getReactRootElementInContainer(container);\n return !!(rootElement && rootElement.nodeType === ELEMENT_NODE && rootElement.hasAttribute(ROOT_ATTRIBUTE_NAME));\n}\n\nfunction legacyCreateRootFromDOMContainer(container, forceHydrate) {\n var shouldHydrate = forceHydrate || shouldHydrateDueToLegacyHeuristic(container); // First clear any existing content.\n\n if (!shouldHydrate) {\n var warned = false;\n var rootSibling;\n\n while (rootSibling = container.lastChild) {\n {\n if (!warned && rootSibling.nodeType === ELEMENT_NODE && rootSibling.hasAttribute(ROOT_ATTRIBUTE_NAME)) {\n warned = true;\n\n error('render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.');\n }\n }\n\n container.removeChild(rootSibling);\n }\n }\n\n {\n if (shouldHydrate && !forceHydrate && !warnedAboutHydrateAPI) {\n warnedAboutHydrateAPI = true;\n\n warn('render(): Calling ReactDOM.render() to hydrate server-rendered markup ' + 'will stop working in React v18. Replace the ReactDOM.render() call ' + 'with ReactDOM.hydrate() if you want React to attach to the server HTML.');\n }\n }\n\n return createLegacyRoot(container, shouldHydrate ? {\n hydrate: true\n } : undefined);\n}\n\nfunction warnOnInvalidCallback$1(callback, callerName) {\n {\n if (callback !== null && typeof callback !== 'function') {\n error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n }\n }\n}\n\nfunction legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {\n {\n topLevelUpdateWarnings(container);\n warnOnInvalidCallback$1(callback === undefined ? null : callback, 'render');\n } // TODO: Without `any` type, Flow says \"Property cannot be accessed on any\n // member of intersection type.\" Whyyyyyy.\n\n\n var root = container._reactRootContainer;\n var fiberRoot;\n\n if (!root) {\n // Initial mount\n root = container._reactRootContainer = legacyCreateRootFromDOMContainer(container, forceHydrate);\n fiberRoot = root._internalRoot;\n\n if (typeof callback === 'function') {\n var originalCallback = callback;\n\n callback = function () {\n var instance = getPublicRootInstance(fiberRoot);\n originalCallback.call(instance);\n };\n } // Initial mount should not be batched.\n\n\n unbatchedUpdates(function () {\n updateContainer(children, fiberRoot, parentComponent, callback);\n });\n } else {\n fiberRoot = root._internalRoot;\n\n if (typeof callback === 'function') {\n var _originalCallback = callback;\n\n callback = function () {\n var instance = getPublicRootInstance(fiberRoot);\n\n _originalCallback.call(instance);\n };\n } // Update\n\n\n updateContainer(children, fiberRoot, parentComponent, callback);\n }\n\n return getPublicRootInstance(fiberRoot);\n}\n\nfunction findDOMNode(componentOrElement) {\n {\n var owner = ReactCurrentOwner$3.current;\n\n if (owner !== null && owner.stateNode !== null) {\n var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;\n\n if (!warnedAboutRefsInRender) {\n error('%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(owner.type) || 'A component');\n }\n\n owner.stateNode._warnedAboutRefsInRender = true;\n }\n }\n\n if (componentOrElement == null) {\n return null;\n }\n\n if (componentOrElement.nodeType === ELEMENT_NODE) {\n return componentOrElement;\n }\n\n {\n return findHostInstanceWithWarning(componentOrElement, 'findDOMNode');\n }\n}\nfunction hydrate(element, container, callback) {\n if (!isValidContainer(container)) {\n {\n throw Error( \"Target container is not a DOM element.\" );\n }\n }\n\n {\n var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n if (isModernRoot) {\n error('You are calling ReactDOM.hydrate() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. ' + 'Did you mean to call createRoot(container, {hydrate: true}).render(element)?');\n }\n } // TODO: throw or warn if we couldn't hydrate?\n\n\n return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);\n}\nfunction render(element, container, callback) {\n if (!isValidContainer(container)) {\n {\n throw Error( \"Target container is not a DOM element.\" );\n }\n }\n\n {\n var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n if (isModernRoot) {\n error('You are calling ReactDOM.render() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. ' + 'Did you mean to call root.render(element)?');\n }\n }\n\n return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);\n}\nfunction unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n if (!isValidContainer(containerNode)) {\n {\n throw Error( \"Target container is not a DOM element.\" );\n }\n }\n\n if (!(parentComponent != null && has(parentComponent))) {\n {\n throw Error( \"parentComponent must be a valid React Component\" );\n }\n }\n\n return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);\n}\nfunction unmountComponentAtNode(container) {\n if (!isValidContainer(container)) {\n {\n throw Error( \"unmountComponentAtNode(...): Target container is not a DOM element.\" );\n }\n }\n\n {\n var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n if (isModernRoot) {\n error('You are calling ReactDOM.unmountComponentAtNode() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. Did you mean to call root.unmount()?');\n }\n }\n\n if (container._reactRootContainer) {\n {\n var rootEl = getReactRootElementInContainer(container);\n var renderedByDifferentReact = rootEl && !getInstanceFromNode(rootEl);\n\n if (renderedByDifferentReact) {\n error(\"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.');\n }\n } // Unmount should not be batched.\n\n\n unbatchedUpdates(function () {\n legacyRenderSubtreeIntoContainer(null, null, container, false, function () {\n // $FlowFixMe This should probably use `delete container._reactRootContainer`\n container._reactRootContainer = null;\n unmarkContainerAsRoot(container);\n });\n }); // If you call unmountComponentAtNode twice in quick succession, you'll\n // get `true` twice. That's probably fine?\n\n return true;\n } else {\n {\n var _rootEl = getReactRootElementInContainer(container);\n\n var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode(_rootEl)); // Check if the container itself is a React root node.\n\n var isContainerReactRoot = container.nodeType === ELEMENT_NODE && isValidContainer(container.parentNode) && !!container.parentNode._reactRootContainer;\n\n if (hasNonRootReactChild) {\n error(\"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.');\n }\n }\n\n return false;\n }\n}\n\nsetAttemptUserBlockingHydration(attemptUserBlockingHydration$1);\nsetAttemptContinuousHydration(attemptContinuousHydration$1);\nsetAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);\nsetAttemptHydrationAtPriority(runWithPriority$2);\nvar didWarnAboutUnstableCreatePortal = false;\n\n{\n if (typeof Map !== 'function' || // $FlowIssue Flow incorrectly thinks Map has no prototype\n Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || // $FlowIssue Flow incorrectly thinks Set has no prototype\n Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') {\n error('React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills');\n }\n}\n\nsetRestoreImplementation(restoreControlledState$3);\nsetBatchingImplementation(batchedUpdates$1, discreteUpdates$1, flushDiscreteUpdates, batchedEventUpdates$1);\n\nfunction createPortal$1(children, container) {\n var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!isValidContainer(container)) {\n {\n throw Error( \"Target container is not a DOM element.\" );\n }\n } // TODO: pass ReactDOM portal implementation as third argument\n // $FlowFixMe The Flow type is opaque but there's no way to actually create it.\n\n\n return createPortal(children, container, null, key);\n}\n\nfunction renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n\n return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback);\n}\n\nfunction unstable_createPortal(children, container) {\n var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n {\n if (!didWarnAboutUnstableCreatePortal) {\n didWarnAboutUnstableCreatePortal = true;\n\n warn('The ReactDOM.unstable_createPortal() alias has been deprecated, ' + 'and will be removed in React 18+. Update your code to use ' + 'ReactDOM.createPortal() instead. It has the exact same API, ' + 'but without the \"unstable_\" prefix.');\n }\n }\n\n return createPortal$1(children, container, key);\n}\n\nvar Internals = {\n // Keep in sync with ReactTestUtils.js, and ReactTestUtilsAct.js.\n // This is an array for better minification.\n Events: [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, flushPassiveEffects, // TODO: This is related to `act`, not events. Move to separate key?\n IsThisRendererActing]\n};\nvar foundDevTools = injectIntoDevTools({\n findFiberByHostInstance: getClosestInstanceFromNode,\n bundleType: 1 ,\n version: ReactVersion,\n rendererPackageName: 'react-dom'\n});\n\n{\n if (!foundDevTools && canUseDOM && window.top === window.self) {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n var protocol = window.location.protocol; // Don't warn in exotic cases like chrome-extension://.\n\n if (/^(https?|file):$/.test(protocol)) {\n // eslint-disable-next-line react-internal/no-production-logging\n console.info('%cDownload the React DevTools ' + 'for a better development experience: ' + 'https://reactjs.org/link/react-devtools' + (protocol === 'file:' ? '\\nYou might need to use a local HTTP server (instead of file://): ' + 'https://reactjs.org/link/react-devtools-faq' : ''), 'font-weight:bold');\n }\n }\n }\n}\n\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;\nexports.createPortal = createPortal$1;\nexports.findDOMNode = findDOMNode;\nexports.flushSync = flushSync;\nexports.hydrate = hydrate;\nexports.render = render;\nexports.unmountComponentAtNode = unmountComponentAtNode;\nexports.unstable_batchedUpdates = batchedUpdates$1;\nexports.unstable_createPortal = unstable_createPortal;\nexports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer;\nexports.version = ReactVersion;\n })();\n}\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", "/** @license React v16.13.1\n * react-is.development.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';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\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", "/**\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", "/**\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 printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\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 ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\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 } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\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\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", "'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", "/** @license React v17.0.2\n * react-is.development.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';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE = 0xeac7;\nvar REACT_PORTAL_TYPE = 0xeaca;\nvar REACT_FRAGMENT_TYPE = 0xeacb;\nvar REACT_STRICT_MODE_TYPE = 0xeacc;\nvar REACT_PROFILER_TYPE = 0xead2;\nvar REACT_PROVIDER_TYPE = 0xeacd;\nvar REACT_CONTEXT_TYPE = 0xeace;\nvar REACT_FORWARD_REF_TYPE = 0xead0;\nvar REACT_SUSPENSE_TYPE = 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = 0xead8;\nvar REACT_MEMO_TYPE = 0xead3;\nvar REACT_LAZY_TYPE = 0xead4;\nvar REACT_BLOCK_TYPE = 0xead9;\nvar REACT_SERVER_BLOCK_TYPE = 0xeada;\nvar REACT_FUNDAMENTAL_TYPE = 0xead5;\nvar REACT_SCOPE_TYPE = 0xead7;\nvar REACT_OPAQUE_ID_TYPE = 0xeae0;\nvar REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;\nvar REACT_OFFSCREEN_TYPE = 0xeae2;\nvar REACT_LEGACY_HIDDEN_TYPE = 0xeae3;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n var symbolFor = Symbol.for;\n REACT_ELEMENT_TYPE = symbolFor('react.element');\n REACT_PORTAL_TYPE = symbolFor('react.portal');\n REACT_FRAGMENT_TYPE = symbolFor('react.fragment');\n REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode');\n REACT_PROFILER_TYPE = symbolFor('react.profiler');\n REACT_PROVIDER_TYPE = symbolFor('react.provider');\n REACT_CONTEXT_TYPE = symbolFor('react.context');\n REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');\n REACT_SUSPENSE_TYPE = symbolFor('react.suspense');\n REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');\n REACT_MEMO_TYPE = symbolFor('react.memo');\n REACT_LAZY_TYPE = symbolFor('react.lazy');\n REACT_BLOCK_TYPE = symbolFor('react.block');\n REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');\n REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');\n REACT_SCOPE_TYPE = symbolFor('react.scope');\n REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');\n REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');\n REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');\n REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');\n}\n\n// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_DEBUG_TRACING_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\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", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createCacheKeyComparator = createCacheKeyComparator;\nexports.defaultEqualityCheck = void 0;\nexports.defaultMemoize = defaultMemoize;\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\nvar defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\n\nexports.defaultEqualityCheck = defaultEqualityCheck;\n\nfunction 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\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nfunction 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}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSelector = void 0;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = void 0;\nObject.defineProperty(exports, \"defaultEqualityCheck\", {\n enumerable: true,\n get: function get() {\n return _defaultMemoize.defaultEqualityCheck;\n }\n});\nObject.defineProperty(exports, \"defaultMemoize\", {\n enumerable: true,\n get: function get() {\n return _defaultMemoize.defaultMemoize;\n }\n});\n\nvar _defaultMemoize = require(\"./defaultMemoize\");\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\nfunction 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}\n\nvar createSelector = /* #__PURE__ */createSelectorCreator(_defaultMemoize.defaultMemoize);\nexports.createSelector = createSelector;\n\n// Manual definition of state and output arguments\nvar 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};\n\nexports.createStructuredSelector = createStructuredSelector;", "/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.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;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\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 */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\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 * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\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 */\n function 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 */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\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 * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(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 */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\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 */\n function 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 `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names 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 key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\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 */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\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 */\n function strictIndexOf(array, value, fromIndex) {\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 * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\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 */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\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 */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\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 */\n function 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 --this.size;\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 */\n function 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 */\n function 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 */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function mapCacheClear() {\n this.size = 0;\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 */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\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 */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\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 */\n function 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 * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\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 */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\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 */\n function 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 * The base implementation of `_.keysIn` 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 */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\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 */\n function 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 property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\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 */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\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 */\n function 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 a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\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 */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function 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 suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function 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 * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\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 */\n function 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 * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\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 */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\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 */\n function 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 invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\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 */\n function 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 timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\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 clearTimeout(timerId);\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 * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\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 `clear`, `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 */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && 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) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\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 */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` 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 throttled 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 `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\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 */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function 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 */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(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 */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\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 */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\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 */\n function 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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\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\n * classified as numbers, use the `_.isFinite` method.\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 number, 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 */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\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 */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\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' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\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 */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\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 `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\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 */\n function 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 */\n function 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 an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 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 */\n function 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 = baseTrim(value);\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 * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\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 * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\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 */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('d\u00E9j\u00E0 vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n", "function isStringOrNumber(value) {\n return typeof value === 'string' || typeof value === 'number';\n}\n\nexport default isStringOrNumber;\n", "import isStringOrNumber from './util/isStringOrNumber';\n\nexport default class FlatObjectCache {\n constructor() {\n this._cache = {};\n }\n set(key, selectorFn) {\n this._cache[key] = selectorFn;\n }\n get(key) {\n return this._cache[key];\n }\n remove(key) {\n delete this._cache[key];\n }\n clear() {\n this._cache = {};\n }\n isValidCacheKey(cacheKey) {\n return isStringOrNumber(cacheKey);\n }\n}\n", "import {createSelector} from 'reselect';\nimport FlatObjectCache from './cache/FlatObjectCache';\n\nconst defaultCacheCreator = FlatObjectCache;\nconst defaultCacheKeyValidator = () => true;\n\nfunction parseReselectArgs(reselectArgs) {\n const args = [...reselectArgs];\n const lastArgument = args[args.length - 1];\n let resultFunc;\n let createSelectorOptions = undefined;\n\n // Last argument is resultFunc\n if (typeof lastArgument === 'function') {\n resultFunc = args.pop();\n } else {\n // Last argument is createSelectorOptions object\n createSelectorOptions = args.pop();\n resultFunc = args.pop();\n }\n\n return {\n inputSelectors: Array.isArray(args[0]) ? args[0] : [...args],\n resultFunc,\n createSelectorOptions,\n };\n}\n\nfunction createCachedSelector(...reselectArgs) {\n const {inputSelectors, resultFunc, createSelectorOptions} =\n parseReselectArgs(reselectArgs);\n\n return polymorphicOptions => {\n const options =\n typeof polymorphicOptions === 'function'\n ? {keySelector: polymorphicOptions}\n : Object.assign({}, polymorphicOptions);\n\n // https://github.com/reduxjs/reselect/blob/v4.0.0/src/index.js#L54\n let recomputations = 0;\n const resultFuncWithRecomputations = (...args) => {\n recomputations++;\n return resultFunc(...args);\n };\n\n // Patch reselect call arguments with a custom resultFunc\n const patchedReselectArgs = [inputSelectors, resultFuncWithRecomputations];\n if (createSelectorOptions) {\n patchedReselectArgs.push(createSelectorOptions);\n }\n\n const cache = options.cacheObject || new defaultCacheCreator();\n const selectorCreator = options.selectorCreator || createSelector;\n const isValidCacheKey = cache.isValidCacheKey || defaultCacheKeyValidator;\n\n if (options.keySelectorCreator) {\n options.keySelector = options.keySelectorCreator({\n keySelector: options.keySelector,\n inputSelectors,\n resultFunc,\n });\n }\n\n // User receives this function\n const selector = function (...args) {\n const cacheKey = options.keySelector(...args);\n\n if (isValidCacheKey(cacheKey)) {\n let cacheResponse = cache.get(cacheKey);\n\n if (cacheResponse === undefined) {\n cacheResponse = selectorCreator(...patchedReselectArgs);\n cache.set(cacheKey, cacheResponse);\n }\n\n return cacheResponse(...args);\n }\n console.warn(\n `[re-reselect] Invalid cache key \"${cacheKey}\" has been returned by keySelector function.`\n );\n return undefined;\n };\n\n // Further selector methods\n selector.getMatchingSelector = (...args) => {\n const cacheKey = options.keySelector(...args);\n // @NOTE It might update cache hit count in LRU-like caches\n return cache.get(cacheKey);\n };\n\n selector.removeMatchingSelector = (...args) => {\n const cacheKey = options.keySelector(...args);\n cache.remove(cacheKey);\n };\n\n selector.clearCache = () => {\n cache.clear();\n };\n\n selector.resultFunc = resultFunc;\n\n selector.dependencies = inputSelectors;\n\n selector.cache = cache;\n\n selector.recomputations = () => recomputations;\n\n selector.resetRecomputations = () => (recomputations = 0);\n\n selector.keySelector = options.keySelector;\n\n return selector;\n };\n}\n\nexport default createCachedSelector;\n", "import {createStructuredSelector} from 'reselect';\nimport createCachedSelector from './createCachedSelector';\n\nfunction createStructuredCachedSelector(selectors) {\n return createStructuredSelector(selectors, createCachedSelector);\n}\n\nexport default createStructuredCachedSelector;\n", "function validateCacheSize(cacheSize) {\n if (cacheSize === undefined) {\n throw new Error('Missing the required property \"cacheSize\".');\n }\n if (!Number.isInteger(cacheSize) || cacheSize <= 0) {\n throw new Error(\n 'The \"cacheSize\" property must be a positive integer value.'\n );\n }\n}\n\nexport default validateCacheSize;\n", "import validateCacheSize from './util/validateCacheSize';\nimport isStringOrNumber from './util/isStringOrNumber';\n\nexport default class FifoObjectCache {\n constructor({cacheSize} = {}) {\n validateCacheSize(cacheSize);\n this._cache = {};\n this._cacheOrdering = [];\n this._cacheSize = cacheSize;\n }\n set(key, selectorFn) {\n this._cache[key] = selectorFn;\n this._cacheOrdering.push(key);\n\n if (this._cacheOrdering.length > this._cacheSize) {\n const earliest = this._cacheOrdering[0];\n this.remove(earliest);\n }\n }\n get(key) {\n return this._cache[key];\n }\n remove(key) {\n const index = this._cacheOrdering.indexOf(key);\n\n if (index > -1) {\n this._cacheOrdering.splice(index, 1);\n }\n delete this._cache[key];\n }\n clear() {\n this._cache = {};\n this._cacheOrdering = [];\n }\n isValidCacheKey(cacheKey) {\n return isStringOrNumber(cacheKey);\n }\n}\n", "import validateCacheSize from './util/validateCacheSize';\nimport isStringOrNumber from './util/isStringOrNumber';\n\nexport default class LruObjectCache {\n constructor({cacheSize} = {}) {\n validateCacheSize(cacheSize);\n this._cache = {};\n this._cacheOrdering = [];\n this._cacheSize = cacheSize;\n }\n set(key, selectorFn) {\n this._cache[key] = selectorFn;\n this._registerCacheHit(key);\n\n if (this._cacheOrdering.length > this._cacheSize) {\n const earliest = this._cacheOrdering[0];\n this.remove(earliest);\n }\n }\n get(key) {\n this._registerCacheHit(key);\n return this._cache[key];\n }\n remove(key) {\n this._deleteCacheHit(key);\n delete this._cache[key];\n }\n clear() {\n this._cache = {};\n this._cacheOrdering = [];\n }\n _registerCacheHit(key) {\n this._deleteCacheHit(key);\n this._cacheOrdering.push(key);\n }\n _deleteCacheHit(key) {\n const index = this._cacheOrdering.indexOf(key);\n if (index > -1) {\n this._cacheOrdering.splice(index, 1);\n }\n }\n isValidCacheKey(cacheKey) {\n return isStringOrNumber(cacheKey);\n }\n}\n", "export default class FlatMapCache {\n constructor() {\n this._cache = new Map();\n }\n set(key, selectorFn) {\n this._cache.set(key, selectorFn);\n }\n get(key) {\n return this._cache.get(key);\n }\n remove(key) {\n this._cache.delete(key);\n }\n clear() {\n this._cache.clear();\n }\n}\n", "import validateCacheSize from './util/validateCacheSize';\n\nexport default class FifoMapCache {\n constructor({cacheSize} = {}) {\n validateCacheSize(cacheSize);\n this._cache = new Map();\n this._cacheSize = cacheSize;\n }\n set(key, selectorFn) {\n this._cache.set(key, selectorFn);\n\n if (this._cache.size > this._cacheSize) {\n const earliest = this._cache.keys().next().value;\n this.remove(earliest);\n }\n }\n get(key) {\n return this._cache.get(key);\n }\n remove(key) {\n this._cache.delete(key);\n }\n clear() {\n this._cache.clear();\n }\n}\n", "import validateCacheSize from './util/validateCacheSize';\n\nexport default class LruMapCache {\n constructor({cacheSize} = {}) {\n validateCacheSize(cacheSize);\n this._cache = new Map();\n this._cacheSize = cacheSize;\n }\n set(key, selectorFn) {\n this._cache.set(key, selectorFn);\n\n if (this._cache.size > this._cacheSize) {\n const earliest = this._cache.keys().next().value;\n this.remove(earliest);\n }\n }\n get(key) {\n const value = this._cache.get(key);\n\n // Register cache hit\n if (this._cache.has(key)) {\n this.remove(key);\n this._cache.set(key, value);\n }\n return value;\n }\n remove(key) {\n this._cache.delete(key);\n }\n clear() {\n this._cache.clear();\n }\n}\n", "/*!\n * accounting.js v0.4.1\n * Copyright 2014 Open Exchange Rates\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://openexchangerates.github.io/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.4.1';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn obj && toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * Alias: `accounting.parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (defaults to\n\t * accounting.settings.number.decimal), so if the number uses a non-standard decimal \n\t * separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point comes from settings, but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || lib.settings.number.decimal;\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '') // strip out any cruft\n\t\t\t\t.replace(decimal, '.') // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\t\tvar power = Math.pow(10, precision);\n\n\t\t// Multiply up by precision, round accurately, then divide and use native toFixed():\n\t\treturn (Math.round(lib.unformat(value) * power) / power).toFixed(precision);\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t * Alias: `accounting.format()`\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n", "(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}(g.braintree || (g.braintree = {})).dataCollector = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){\n\"use strict\";\nvar scriptPromiseCache = {};\nfunction loadScript(options) {\n var scriptLoadPromise;\n var stringifiedOptions = JSON.stringify(options);\n if (!options.forceScriptReload) {\n scriptLoadPromise = scriptPromiseCache[stringifiedOptions];\n if (scriptLoadPromise) {\n return scriptLoadPromise;\n }\n }\n var script = document.createElement(\"script\");\n var attrs = options.dataAttributes || {};\n var container = options.container || document.head;\n script.src = options.src;\n script.id = options.id || \"\";\n script.async = true;\n if (options.type) {\n script.setAttribute(\"type\", \"\".concat(options.type));\n }\n if (options.crossorigin) {\n script.setAttribute(\"crossorigin\", \"\".concat(options.crossorigin));\n }\n Object.keys(attrs).forEach(function (key) {\n script.setAttribute(\"data-\".concat(key), \"\".concat(attrs[key]));\n });\n scriptLoadPromise = new Promise(function (resolve, reject) {\n script.addEventListener(\"load\", function () {\n resolve(script);\n });\n script.addEventListener(\"error\", function () {\n reject(new Error(\"\".concat(options.src, \" failed to load.\")));\n });\n script.addEventListener(\"abort\", function () {\n reject(new Error(\"\".concat(options.src, \" has aborted.\")));\n });\n container.appendChild(script);\n });\n scriptPromiseCache[stringifiedOptions] = scriptLoadPromise;\n return scriptLoadPromise;\n}\nloadScript.clearCache = function () {\n scriptPromiseCache = {};\n};\nmodule.exports = loadScript;\n\n},{}],2:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/load-script\");\n\n},{\"./dist/load-script\":1}],3:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction deferred(fn) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n setTimeout(function () {\n try {\n fn.apply(void 0, args);\n }\n catch (err) {\n /* eslint-disable no-console */\n console.log(\"Error in callback function\");\n console.log(err);\n /* eslint-enable no-console */\n }\n }, 1);\n };\n}\nexports.deferred = deferred;\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction once(fn) {\n var called = false;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n fn.apply(void 0, args);\n }\n };\n}\nexports.once = once;\n\n},{}],5:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable consistent-return */\nfunction promiseOrCallback(promise, callback) {\n if (!callback) {\n return promise;\n }\n promise.then(function (data) { return callback(null, data); }).catch(function (err) { return callback(err); });\n}\nexports.promiseOrCallback = promiseOrCallback;\n\n},{}],6:[function(_dereq_,module,exports){\n\"use strict\";\nvar deferred_1 = _dereq_(\"./lib/deferred\");\nvar once_1 = _dereq_(\"./lib/once\");\nvar promise_or_callback_1 = _dereq_(\"./lib/promise-or-callback\");\nfunction wrapPromise(fn) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var callback;\n var lastArg = args[args.length - 1];\n if (typeof lastArg === \"function\") {\n callback = args.pop();\n callback = once_1.once(deferred_1.deferred(callback));\n }\n // I know, I know, this looks bad. But it's a quirk of the library that\n // we need to allow passing the this context to the original function\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore: this has an implicit any\n return promise_or_callback_1.promiseOrCallback(fn.apply(this, args), callback); // eslint-disable-line no-invalid-this\n };\n}\nwrapPromise.wrapPrototype = function (target, options) {\n if (options === void 0) { options = {}; }\n var ignoreMethods = options.ignoreMethods || [];\n var includePrivateMethods = options.transformPrivateMethods === true;\n var methods = Object.getOwnPropertyNames(target.prototype).filter(function (method) {\n var isNotPrivateMethod;\n var isNonConstructorFunction = method !== \"constructor\" &&\n typeof target.prototype[method] === \"function\";\n var isNotAnIgnoredMethod = ignoreMethods.indexOf(method) === -1;\n if (includePrivateMethods) {\n isNotPrivateMethod = true;\n }\n else {\n isNotPrivateMethod = method.charAt(0) !== \"_\";\n }\n return (isNonConstructorFunction && isNotPrivateMethod && isNotAnIgnoredMethod);\n });\n methods.forEach(function (method) {\n var original = target.prototype[method];\n target.prototype[method] = wrapPromise(original);\n });\n return target;\n};\nmodule.exports = wrapPromise;\n\n},{\"./lib/deferred\":3,\"./lib/once\":4,\"./lib/promise-or-callback\":5}],7:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Data Collector - Creation Error Codes\n * @description Errors that occur when [creating the Data Collector component](./module-braintree-web_data-collector.html#.create).\n * @property {MERCHANT} DATA_COLLECTOR_KOUNT_NOT_ENABLED Occurs when Kount is enabled in creation options but is not enabled on the Braintree control panel.\n * @property {MERCHANT} DATA_COLLECTOR_KOUNT_ERROR Occurs when Kount errors while setting up.\n * @property {MERCHANT} DATA_COLLECTOR_REQUIRES_CREATE_OPTIONS Occurs when Kount or PayPal Fraudnet could not be enabled.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n DATA_COLLECTOR_KOUNT_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"DATA_COLLECTOR_KOUNT_NOT_ENABLED\",\n message: \"Kount is not enabled for this merchant.\",\n },\n DATA_COLLECTOR_KOUNT_ERROR: {\n type: BraintreeError.types.MERCHANT,\n code: \"DATA_COLLECTOR_KOUNT_ERROR\",\n },\n DATA_COLLECTOR_REQUIRES_CREATE_OPTIONS: {\n type: BraintreeError.types.MERCHANT,\n code: \"DATA_COLLECTOR_REQUIRES_CREATE_OPTIONS\",\n message: \"Data Collector must be created with Kount and/or PayPal.\",\n },\n};\n\n},{\"../lib/braintree-error\":14}],8:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar FRAUDNET_FNCLS = _dereq_(\"../lib/constants\").FRAUDNET_FNCLS;\nvar FRAUDNET_SOURCE = _dereq_(\"../lib/constants\").FRAUDNET_SOURCE;\nvar FRAUDNET_URL = _dereq_(\"../lib/constants\").FRAUDNET_URL;\nvar loadScript = _dereq_(\"../lib/assets\").loadScript;\n\nvar cachedSessionId;\n\nfunction setup(options) {\n var fraudNet = new Fraudnet();\n\n options = options || {};\n\n if (!options.sessionId && cachedSessionId) {\n fraudNet.sessionId = cachedSessionId;\n\n return Promise.resolve(fraudNet);\n }\n\n return fraudNet.initialize(options);\n}\n\nfunction clearSessionIdCache() {\n cachedSessionId = null;\n}\n\nfunction Fraudnet() {}\n\nFraudnet.prototype.initialize = function (options) {\n var environment = options.environment;\n var self = this;\n\n this.sessionId = options.sessionId || _generateSessionId();\n if (!options.sessionId) {\n cachedSessionId = this.sessionId;\n }\n this._beaconId = _generateBeaconId(this.sessionId);\n this._parameterBlock = _createParameterBlock(\n this.sessionId,\n this._beaconId,\n environment\n );\n\n return loadScript({\n src: FRAUDNET_URL,\n })\n .then(function (block) {\n self._thirdPartyBlock = block;\n\n return self;\n })\n .catch(function () {\n // if the fraudnet script fails to load\n // we just resolve with nothing\n // and data collector ignores it\n return null;\n });\n};\n\nFraudnet.prototype.teardown = function () {\n removeElementIfOnPage(document.querySelector('iframe[title=\"ppfniframe\"]'));\n removeElementIfOnPage(document.querySelector('iframe[title=\"pbf\"]'));\n\n removeElementIfOnPage(this._parameterBlock);\n removeElementIfOnPage(this._thirdPartyBlock);\n};\n\nfunction removeElementIfOnPage(element) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nfunction _generateSessionId() {\n var i;\n var id = \"\";\n\n for (i = 0; i < 32; i++) {\n id += Math.floor(Math.random() * 16).toString(16);\n }\n\n return id;\n}\n\nfunction _generateBeaconId(sessionId) {\n var timestamp = new Date().getTime() / 1000;\n\n return (\n \"https://b.stats.paypal.com/counter.cgi\" +\n \"?i=127.0.0.1\" +\n \"&p=\" +\n sessionId +\n \"&t=\" +\n timestamp +\n \"&a=14\"\n );\n}\n\nfunction _createParameterBlock(sessionId, beaconId, environment) {\n var el = document.body.appendChild(document.createElement(\"script\"));\n var config = {\n f: sessionId,\n s: FRAUDNET_SOURCE,\n b: beaconId,\n };\n\n // for some reason, the presence of the sandbox\n // attribute in a production environment causes\n // some weird behavior with what url paths are\n // hit, so instead, we only apply this attribute\n // when it is not a production environment\n if (environment !== \"production\") {\n config.sandbox = true;\n }\n\n el.type = \"application/json\";\n el.setAttribute(\"fncls\", FRAUDNET_FNCLS);\n el.text = JSON.stringify(config);\n\n return el;\n}\n\nmodule.exports = {\n setup: setup,\n clearSessionIdCache: clearSessionIdCache,\n};\n\n},{\"../lib/assets\":12,\"../lib/constants\":16}],9:[function(_dereq_,module,exports){\n\"use strict\";\n/** @module braintree-web/data-collector */\n\nvar kount = _dereq_(\"./kount\");\nvar fraudnet = _dereq_(\"./fraudnet\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar methods = _dereq_(\"../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar errors = _dereq_(\"./errors\");\n\n/**\n * @class\n * @global\n * @name DataCollector\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/data-collector.create|braintree-web.data-collector.create} instead.</strong>\n * @classdesc This class is used for fraud integration with PayPal and Kount. Instances of this class have {@link DataCollector#deviceData|deviceData} which is used to correlate user sessions with server transactions.\n */\n\n/**\n * @memberof DataCollector\n * @name deviceData\n * @type string\n * @description JSON string to pass with server transactions.\n * @instance\n */\n\n/**\n * @memberof DataCollector\n * @name rawDeviceData\n * @type object\n * @description The device data as an object instead of a string.\n * @instance\n */\n\n/**\n * @memberof DataCollector\n * @name teardown\n * @function\n * @description Cleanly remove anything set up by {@link module:braintree-web/data-collector.create|create}.\n * @param {callback} [callback] Called on completion. If no callback is provided, `teardown` returns a promise.\n * @instance\n * @example\n * dataCollectorInstance.teardown();\n * @example <caption>With callback</caption>\n * dataCollectorInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\n\n/**\n * @memberof DataCollector\n * @name getDeviceData\n * @function\n * @description Resolves with device data once it is ready.\n * @param {object} [options] Options for how device data is resolved.\n * @param {boolean} [options.raw=false] When set to true, the device data will resolve as an object instead of a JSON string.\n * @param {callback} [callback] Called on completion. If no callback is provided, `getDeviceData` returns a promise.\n * @instance\n * @example\n * dataCollectorInstance.getDeviceData();\n * @example <caption>Without options</caption>\n * dataCollectorInstance.getDeviceData().then(function (deviceData) {\n * // typeof deviceData === 'string'\n * // pass onto your server with the payment method nonce\n * });\n * @example <caption>With options</caption>\n * dataCollectorInstance.getDeviceData({\n * raw: true\n * }).then(function (deviceData) {\n * // typeof deviceData === 'object'\n * // for if you'd like to parse the data before sending it to your server\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\n\n/**\n * @static\n * @function create\n * @description Creates a DataCollector instance and collects device data based on your merchant configuration. We recommend that you call this method as early as possible, e.g. as soon as your website loads. If that's too early, call it at the beginning of customer checkout.\n * **Note:** To use your own Kount ID, contact our support team ([support@braintreepayments.com](mailto:support@braintreepayments.com) or [877.434.2894](tel:877.434.2894)).\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {boolean} [options.useDeferredClient] Used in conjunction with `authorization`, allows the Data Collector instance to be available right away by fetching the client configuration in the background. When this option is used, {@link GooglePayment#getDeviceData} must be used to collect the device data.\n * @param {boolean} [options.kount] Kount fraud data collection will occur if the merchant configuration has it enabled.\n * **Note:** the data sent to Kount is asynchronous and may not have completed by the time the data collector create call is complete. In most cases, this will not matter, but if you create the data collector instance and immediately navigate away from the page, the device information may fail to be sent to Kount.\n * @param {boolean} [options.paypal] *Deprecated:* PayPal fraud data collection will occur when the DataCollector instance is created.\n * @param {string} [options.riskCorrelationId] Pass a custom risk correlation id when creating the data collector.\n * @param {string} [options.clientMetadataId] Deprecated. Use `options.riskCorrelationId` instead.\n * @param {string} [options.correlationId] Deprecated. Use `options.riskCorrelationId` instead.\n * @param {callback} [callback] The second argument, `data`, is the {@link DataCollector} instance.\n * @returns {(Promise|void)} Returns a promise that resolves the {@link DataCollector} instance if no callback is provided.\n */\nfunction create(options) {\n var name = \"Data Collector\";\n var result = {\n _instances: [],\n };\n var data;\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n result._instantiatedWithAClient = !options.useDeferredClient;\n result._createPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n })\n .then(function (client) {\n var kountInstance;\n var config = client.getConfiguration();\n\n if (options.kount === true && config.gatewayConfiguration.kount) {\n try {\n kountInstance = kount.setup({\n environment: config.gatewayConfiguration.environment,\n merchantId: config.gatewayConfiguration.kount.kountMerchantId,\n });\n } catch (err) {\n return Promise.reject(\n new BraintreeError({\n type: errors.DATA_COLLECTOR_KOUNT_ERROR.type,\n code: errors.DATA_COLLECTOR_KOUNT_ERROR.code,\n message: err.message,\n })\n );\n }\n\n data = kountInstance.deviceData;\n result._instances.push(kountInstance);\n } else {\n data = {};\n }\n\n return Promise.resolve(client);\n })\n .then(function (client) {\n return fraudnet\n .setup({\n sessionId:\n options.riskCorrelationId ||\n options.clientMetadataId ||\n options.correlationId,\n environment:\n client.getConfiguration().gatewayConfiguration.environment,\n })\n .then(function (fraudnetInstance) {\n if (fraudnetInstance) {\n data.correlation_id = fraudnetInstance.sessionId; // eslint-disable-line camelcase\n result._instances.push(fraudnetInstance);\n }\n });\n })\n .then(function () {\n if (result._instances.length === 0) {\n // NEXT_MAJOR_VERSION either this should error with a specific error that\n // no data collector instances could be set up, or we should just swallow\n // the error and document that no device data will be returned if\n // data collector cannot be instantiated. We can't change the error code here\n // without possibly breaking merchant integrations relying on this inccorrect\n // behavior.\n return Promise.reject(\n new BraintreeError(errors.DATA_COLLECTOR_REQUIRES_CREATE_OPTIONS)\n );\n }\n\n result.deviceData = JSON.stringify(data);\n result.rawDeviceData = data;\n\n return result;\n });\n\n result.teardown = createTeardownMethod(result);\n result.getDeviceData = createGetDeviceDataMethod(result);\n\n if (result._instantiatedWithAClient) {\n return result._createPromise;\n }\n\n return result;\n });\n}\n\nfunction createTeardownMethod(result) {\n return wrapPromise(function teardown() {\n return result._createPromise.then(function () {\n result._instances.forEach(function (instance) {\n if (instance) {\n instance.teardown();\n }\n });\n\n convertMethodsToError(result, methods(result));\n });\n });\n}\n\nfunction createGetDeviceDataMethod(result) {\n return wrapPromise(function getDeviceData(options) {\n options = options || {};\n\n return result._createPromise.then(function () {\n if (options.raw) {\n return Promise.resolve(result.rawDeviceData);\n }\n\n return Promise.resolve(result.deviceData);\n });\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":13,\"../lib/braintree-error\":14,\"../lib/convert-methods-to-error\":17,\"../lib/create-assets-url\":18,\"../lib/create-deferred-client\":19,\"../lib/methods\":22,\"./errors\":7,\"./fraudnet\":8,\"./kount\":10,\"@braintree/wrap-promise\":6}],10:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar sjcl = _dereq_(\"./vendor/sjcl\");\nvar camelCaseToSnakeCase = _dereq_(\"../lib/camel-case-to-snake-case\");\n\nvar QA_URL = \"https://assets.qa.braintreepayments.com/data\";\nvar IFRAME_ID_PREFIX = \"braintreeDataFrame-\";\nvar environmentUrls = {\n development: QA_URL,\n qa: QA_URL,\n sandbox: \"https://assets.braintreegateway.com/sandbox/data\",\n production: \"https://assets.braintreegateway.com/data\",\n};\nvar cachedDeviceData = {};\n\nfunction setup(o) {\n var options = o != null ? o : {};\n\n return new Kount(options);\n}\n\nfunction Kount(options) {\n var previouslyInitializedDeviceData = Kount.getCachedDeviceData(\n options.merchantId\n );\n\n if (previouslyInitializedDeviceData) {\n this.deviceData = previouslyInitializedDeviceData;\n this._isCached = true;\n\n return;\n }\n\n this._currentEnvironment = this._initializeEnvironment(options);\n\n sjcl.random.startCollectors();\n\n this._deviceSessionId = this._generateDeviceSessionId();\n this.deviceData = this._getDeviceData();\n\n Kount.setCachedDeviceData(options.merchantId, this.deviceData);\n\n this._iframe = this._setupIFrame();\n}\n\nKount.getCachedDeviceData = function (merchantId) {\n return cachedDeviceData[merchantId];\n};\n\nKount.setCachedDeviceData = function (merchantId, data) {\n cachedDeviceData[merchantId] = data;\n};\n\nKount.prototype.teardown = function () {\n if (!this._isCached) {\n sjcl.random.stopCollectors();\n\n this._removeIframe();\n }\n};\n\nKount.prototype._removeIframe = function () {\n this._iframe.parentNode.removeChild(this._iframe);\n};\n\nKount.prototype._getDeviceData = function () {\n return camelCaseToSnakeCase({\n deviceSessionId: this._deviceSessionId,\n fraudMerchantId: this._currentEnvironment.id,\n });\n};\n\nKount.prototype._generateDeviceSessionId = function () {\n var bits, hexString;\n\n bits = sjcl.random.randomWords(4, 0);\n hexString = sjcl.codec.hex.fromBits(bits);\n\n return hexString;\n};\n\nKount.prototype._setupIFrame = function () {\n var params, iframe;\n var self = this;\n\n params = \"?m=\" + this._currentEnvironment.id + \"&s=\" + this._deviceSessionId;\n\n iframe = document.createElement(\"iframe\");\n iframe.width = 1;\n iframe.id = IFRAME_ID_PREFIX + this._deviceSessionId;\n iframe.height = 1;\n iframe.frameBorder = 0;\n iframe.scrolling = \"no\";\n iframe.style.position = \"fixed\";\n iframe.style.left = \"-999999px\";\n iframe.style.top = \"-999999px\";\n iframe.title = \"Braintree-Kount-iframe\";\n iframe.setAttribute(\"aria-hidden\", \"true\");\n\n document.body.appendChild(iframe);\n setTimeout(function () {\n iframe.src = self._currentEnvironment.url + \"/logo.htm\" + params;\n iframe.innerHTML =\n '<img src=\"' +\n self._currentEnvironment.url +\n \"/logo.gif\" +\n params +\n '\" alt=\"\" />';\n }, 10);\n\n return iframe;\n};\n\nKount.prototype._initializeEnvironment = function (options) {\n var url = environmentUrls[options.environment];\n\n if (url == null) {\n throw new Error(\n options.environment + \" is not a valid environment for kount.environment\"\n );\n }\n\n return {\n url: url,\n name: options.environment,\n id: options.merchantId,\n };\n};\n\nmodule.exports = {\n setup: setup,\n Kount: Kount,\n environmentUrls: environmentUrls,\n};\n\n},{\"../lib/camel-case-to-snake-case\":15,\"./vendor/sjcl\":11}],11:[function(_dereq_,module,exports){\n\"use strict\";\nvar sjcl = {\n cipher: {},\n hash: {},\n keyexchange: {},\n mode: {},\n misc: {},\n codec: {},\n exception: {\n corrupt: function (a) {\n this.toString = function () {\n return \"CORRUPT: \" + this.message;\n };\n this.message = a;\n },\n invalid: function (a) {\n this.toString = function () {\n return \"INVALID: \" + this.message;\n };\n this.message = a;\n },\n bug: function (a) {\n this.toString = function () {\n return \"BUG: \" + this.message;\n };\n this.message = a;\n },\n notReady: function (a) {\n this.toString = function () {\n return \"NOT READY: \" + this.message;\n };\n this.message = a;\n },\n },\n};\nsjcl.cipher.aes = function (a) {\n this.l[0][0][0] || this.G();\n var b,\n c,\n d,\n e,\n f = this.l[0][4],\n g = this.l[1];\n b = a.length;\n var k = 1;\n if (4 !== b && 6 !== b && 8 !== b)\n throw new sjcl.exception.invalid(\"invalid aes key size\");\n this.b = [(d = a.slice(0)), (e = [])];\n for (a = b; a < 4 * b + 28; a++) {\n c = d[a - 1];\n if (0 === a % b || (8 === b && 4 === a % b))\n (c =\n (f[c >>> 24] << 24) ^\n (f[(c >> 16) & 255] << 16) ^\n (f[(c >> 8) & 255] << 8) ^\n f[c & 255]),\n 0 === a % b &&\n ((c = (c << 8) ^ (c >>> 24) ^ (k << 24)),\n (k = (k << 1) ^ (283 * (k >> 7))));\n d[a] = d[a - b] ^ c;\n }\n for (b = 0; a; b++, a--)\n (c = d[b & 3 ? a : a - 4]),\n (e[b] =\n 4 >= a || 4 > b\n ? c\n : g[0][f[c >>> 24]] ^\n g[1][f[(c >> 16) & 255]] ^\n g[2][f[(c >> 8) & 255]] ^\n g[3][f[c & 255]]);\n};\nsjcl.cipher.aes.prototype = {\n encrypt: function (a) {\n return t(this, a, 0);\n },\n decrypt: function (a) {\n return t(this, a, 1);\n },\n l: [\n [[], [], [], [], []],\n [[], [], [], [], []],\n ],\n G: function () {\n var a = this.l[0],\n b = this.l[1],\n c = a[4],\n d = b[4],\n e,\n f,\n g,\n k = [],\n l = [],\n p,\n n,\n h,\n m;\n for (e = 0; 0x100 > e; e++) l[(k[e] = (e << 1) ^ (283 * (e >> 7))) ^ e] = e;\n for (f = g = 0; !c[f]; f ^= p || 1, g = l[g] || 1)\n for (\n h = g ^ (g << 1) ^ (g << 2) ^ (g << 3) ^ (g << 4),\n h = (h >> 8) ^ (h & 255) ^ 99,\n c[f] = h,\n d[h] = f,\n n = k[(e = k[(p = k[f])])],\n m = (0x1010101 * n) ^ (0x10001 * e) ^ (0x101 * p) ^ (0x1010100 * f),\n n = (0x101 * k[h]) ^ (0x1010100 * h),\n e = 0;\n 4 > e;\n e++\n )\n (a[e][f] = n = (n << 24) ^ (n >>> 8)),\n (b[e][h] = m = (m << 24) ^ (m >>> 8));\n for (e = 0; 5 > e; e++) (a[e] = a[e].slice(0)), (b[e] = b[e].slice(0));\n },\n};\nfunction t(a, b, c) {\n if (4 !== b.length)\n throw new sjcl.exception.invalid(\"invalid aes block size\");\n var d = a.b[c],\n e = b[0] ^ d[0],\n f = b[c ? 3 : 1] ^ d[1],\n g = b[2] ^ d[2];\n b = b[c ? 1 : 3] ^ d[3];\n var k,\n l,\n p,\n n = d.length / 4 - 2,\n h,\n m = 4,\n q = [0, 0, 0, 0];\n k = a.l[c];\n a = k[0];\n var r = k[1],\n v = k[2],\n w = k[3],\n x = k[4];\n for (h = 0; h < n; h++)\n (k =\n a[e >>> 24] ^ r[(f >> 16) & 255] ^ v[(g >> 8) & 255] ^ w[b & 255] ^ d[m]),\n (l =\n a[f >>> 24] ^\n r[(g >> 16) & 255] ^\n v[(b >> 8) & 255] ^\n w[e & 255] ^\n d[m + 1]),\n (p =\n a[g >>> 24] ^\n r[(b >> 16) & 255] ^\n v[(e >> 8) & 255] ^\n w[f & 255] ^\n d[m + 2]),\n (b =\n a[b >>> 24] ^\n r[(e >> 16) & 255] ^\n v[(f >> 8) & 255] ^\n w[g & 255] ^\n d[m + 3]),\n (m += 4),\n (e = k),\n (f = l),\n (g = p);\n for (h = 0; 4 > h; h++)\n (q[c ? 3 & -h : h] =\n (x[e >>> 24] << 24) ^\n (x[(f >> 16) & 255] << 16) ^\n (x[(g >> 8) & 255] << 8) ^\n x[b & 255] ^\n d[m++]),\n (k = e),\n (e = f),\n (f = g),\n (g = b),\n (b = k);\n return q;\n}\nsjcl.bitArray = {\n bitSlice: function (a, b, c) {\n a = sjcl.bitArray.M(a.slice(b / 32), 32 - (b & 31)).slice(1);\n return void 0 === c ? a : sjcl.bitArray.clamp(a, c - b);\n },\n extract: function (a, b, c) {\n var d = Math.floor((-b - c) & 31);\n return (\n (((b + c - 1) ^ b) & -32\n ? (a[(b / 32) | 0] << (32 - d)) ^ (a[(b / 32 + 1) | 0] >>> d)\n : a[(b / 32) | 0] >>> d) &\n ((1 << c) - 1)\n );\n },\n concat: function (a, b) {\n if (0 === a.length || 0 === b.length) return a.concat(b);\n var c = a[a.length - 1],\n d = sjcl.bitArray.getPartial(c);\n return 32 === d\n ? a.concat(b)\n : sjcl.bitArray.M(b, d, c | 0, a.slice(0, a.length - 1));\n },\n bitLength: function (a) {\n var b = a.length;\n return 0 === b ? 0 : 32 * (b - 1) + sjcl.bitArray.getPartial(a[b - 1]);\n },\n clamp: function (a, b) {\n if (32 * a.length < b) return a;\n a = a.slice(0, Math.ceil(b / 32));\n var c = a.length;\n b = b & 31;\n 0 < c &&\n b &&\n (a[c - 1] = sjcl.bitArray.partial(\n b,\n a[c - 1] & (2147483648 >> (b - 1)),\n 1\n ));\n return a;\n },\n partial: function (a, b, c) {\n return 32 === a ? b : (c ? b | 0 : b << (32 - a)) + 0x10000000000 * a;\n },\n getPartial: function (a) {\n return Math.round(a / 0x10000000000) || 32;\n },\n equal: function (a, b) {\n if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) return !1;\n var c = 0,\n d;\n for (d = 0; d < a.length; d++) c |= a[d] ^ b[d];\n return 0 === c;\n },\n M: function (a, b, c, d) {\n var e;\n e = 0;\n for (void 0 === d && (d = []); 32 <= b; b -= 32) d.push(c), (c = 0);\n if (0 === b) return d.concat(a);\n for (e = 0; e < a.length; e++)\n d.push(c | (a[e] >>> b)), (c = a[e] << (32 - b));\n e = a.length ? a[a.length - 1] : 0;\n a = sjcl.bitArray.getPartial(e);\n d.push(sjcl.bitArray.partial((b + a) & 31, 32 < b + a ? c : d.pop(), 1));\n return d;\n },\n Y: function (a, b) {\n return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]];\n },\n byteswapM: function (a) {\n var b, c;\n for (b = 0; b < a.length; ++b)\n (c = a[b]),\n (a[b] =\n (c >>> 24) | ((c >>> 8) & 0xff00) | ((c & 0xff00) << 8) | (c << 24));\n return a;\n },\n};\nsjcl.codec.utf8String = {\n fromBits: function (a) {\n var b = \"\",\n c = sjcl.bitArray.bitLength(a),\n d,\n e;\n for (d = 0; d < c / 8; d++)\n 0 === (d & 3) && (e = a[d / 4]),\n (b += String.fromCharCode(((e >>> 8) >>> 8) >>> 8)),\n (e <<= 8);\n return decodeURIComponent(escape(b));\n },\n toBits: function (a) {\n a = unescape(encodeURIComponent(a));\n var b = [],\n c,\n d = 0;\n for (c = 0; c < a.length; c++)\n (d = (d << 8) | a.charCodeAt(c)), 3 === (c & 3) && (b.push(d), (d = 0));\n c & 3 && b.push(sjcl.bitArray.partial(8 * (c & 3), d));\n return b;\n },\n};\nsjcl.codec.hex = {\n fromBits: function (a) {\n var b = \"\",\n c;\n for (c = 0; c < a.length; c++)\n b += ((a[c] | 0) + 0xf00000000000).toString(16).substr(4);\n return b.substr(0, sjcl.bitArray.bitLength(a) / 4);\n },\n toBits: function (a) {\n var b,\n c = [],\n d;\n a = a.replace(/\\s|0x/g, \"\");\n d = a.length;\n a = a + \"00000000\";\n for (b = 0; b < a.length; b += 8) c.push(parseInt(a.substr(b, 8), 16) ^ 0);\n return sjcl.bitArray.clamp(c, 4 * d);\n },\n};\nsjcl.hash.sha256 = function (a) {\n this.b[0] || this.G();\n a\n ? ((this.u = a.u.slice(0)), (this.o = a.o.slice(0)), (this.h = a.h))\n : this.reset();\n};\nsjcl.hash.sha256.hash = function (a) {\n return new sjcl.hash.sha256().update(a).finalize();\n};\nsjcl.hash.sha256.prototype = {\n blockSize: 512,\n reset: function () {\n this.u = this.K.slice(0);\n this.o = [];\n this.h = 0;\n return this;\n },\n update: function (a) {\n \"string\" === typeof a && (a = sjcl.codec.utf8String.toBits(a));\n var b,\n c = (this.o = sjcl.bitArray.concat(this.o, a));\n b = this.h;\n a = this.h = b + sjcl.bitArray.bitLength(a);\n if (0x1fffffffffffff < a)\n throw new sjcl.exception.invalid(\"Cannot hash more than 2^53 - 1 bits\");\n if (\"undefined\" !== typeof Uint32Array) {\n var d = new Uint32Array(c),\n e = 0;\n for (b = 512 + b - ((512 + b) & 0x1ff); b <= a; b += 512)\n u(this, d.subarray(16 * e, 16 * (e + 1))), (e += 1);\n c.splice(0, 16 * e);\n } else\n for (b = 512 + b - ((512 + b) & 0x1ff); b <= a; b += 512)\n u(this, c.splice(0, 16));\n return this;\n },\n finalize: function () {\n var a,\n b = this.o,\n c = this.u,\n b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1, 1)]);\n for (a = b.length + 2; a & 15; a++) b.push(0);\n b.push(Math.floor(this.h / 0x100000000));\n for (b.push(this.h | 0); b.length; ) u(this, b.splice(0, 16));\n this.reset();\n return c;\n },\n K: [],\n b: [],\n G: function () {\n function a(a) {\n return (0x100000000 * (a - Math.floor(a))) | 0;\n }\n for (var b = 0, c = 2, d, e; 64 > b; c++) {\n e = !0;\n for (d = 2; d * d <= c; d++)\n if (0 === c % d) {\n e = !1;\n break;\n }\n e &&\n (8 > b && (this.K[b] = a(Math.pow(c, 0.5))),\n (this.b[b] = a(Math.pow(c, 1 / 3))),\n b++);\n }\n },\n};\nfunction u(a, b) {\n var c,\n d,\n e,\n f = a.u,\n g = a.b,\n k = f[0],\n l = f[1],\n p = f[2],\n n = f[3],\n h = f[4],\n m = f[5],\n q = f[6],\n r = f[7];\n for (c = 0; 64 > c; c++)\n 16 > c\n ? (d = b[c])\n : ((d = b[(c + 1) & 15]),\n (e = b[(c + 14) & 15]),\n (d = b[c & 15] =\n (((d >>> 7) ^ (d >>> 18) ^ (d >>> 3) ^ (d << 25) ^ (d << 14)) +\n ((e >>> 17) ^ (e >>> 19) ^ (e >>> 10) ^ (e << 15) ^ (e << 13)) +\n b[c & 15] +\n b[(c + 9) & 15]) |\n 0)),\n (d =\n d +\n r +\n ((h >>> 6) ^\n (h >>> 11) ^\n (h >>> 25) ^\n (h << 26) ^\n (h << 21) ^\n (h << 7)) +\n (q ^ (h & (m ^ q))) +\n g[c]),\n (r = q),\n (q = m),\n (m = h),\n (h = (n + d) | 0),\n (n = p),\n (p = l),\n (l = k),\n (k =\n (d +\n ((l & p) ^ (n & (l ^ p))) +\n ((l >>> 2) ^\n (l >>> 13) ^\n (l >>> 22) ^\n (l << 30) ^\n (l << 19) ^\n (l << 10))) |\n 0);\n f[0] = (f[0] + k) | 0;\n f[1] = (f[1] + l) | 0;\n f[2] = (f[2] + p) | 0;\n f[3] = (f[3] + n) | 0;\n f[4] = (f[4] + h) | 0;\n f[5] = (f[5] + m) | 0;\n f[6] = (f[6] + q) | 0;\n f[7] = (f[7] + r) | 0;\n}\nsjcl.prng = function (a) {\n this.c = [new sjcl.hash.sha256()];\n this.i = [0];\n this.H = 0;\n this.v = {};\n this.F = 0;\n this.J = {};\n this.L = this.f = this.j = this.T = 0;\n this.b = [0, 0, 0, 0, 0, 0, 0, 0];\n this.g = [0, 0, 0, 0];\n this.C = void 0;\n this.D = a;\n this.s = !1;\n this.B = { progress: {}, seeded: {} };\n this.m = this.S = 0;\n this.w = 1;\n this.A = 2;\n this.O = 0x10000;\n this.I = [0, 48, 64, 96, 128, 192, 0x100, 384, 512, 768, 1024];\n this.P = 3e4;\n this.N = 80;\n};\nsjcl.prng.prototype = {\n randomWords: function (a, b) {\n var c = [],\n d;\n d = this.isReady(b);\n var e;\n if (d === this.m)\n throw new sjcl.exception.notReady(\"generator isn't seeded\");\n if (d & this.A) {\n d = !(d & this.w);\n e = [];\n var f = 0,\n g;\n this.L = e[0] = new Date().valueOf() + this.P;\n for (g = 0; 16 > g; g++) e.push((0x100000000 * Math.random()) | 0);\n for (\n g = 0;\n g < this.c.length &&\n ((e = e.concat(this.c[g].finalize())),\n (f += this.i[g]),\n (this.i[g] = 0),\n d || !(this.H & (1 << g)));\n g++\n );\n this.H >= 1 << this.c.length &&\n (this.c.push(new sjcl.hash.sha256()), this.i.push(0));\n this.f -= f;\n f > this.j && (this.j = f);\n this.H++;\n this.b = sjcl.hash.sha256.hash(this.b.concat(e));\n this.C = new sjcl.cipher.aes(this.b);\n for (\n d = 0;\n 4 > d && ((this.g[d] = (this.g[d] + 1) | 0), !this.g[d]);\n d++\n );\n }\n for (d = 0; d < a; d += 4)\n 0 === (d + 1) % this.O && y(this),\n (e = z(this)),\n c.push(e[0], e[1], e[2], e[3]);\n y(this);\n return c.slice(0, a);\n },\n setDefaultParanoia: function (a, b) {\n if (\n 0 === a &&\n \"Setting paranoia=0 will ruin your security; use it only for testing\" !==\n b\n )\n throw new sjcl.exception.invalid(\n \"Setting paranoia=0 will ruin your security; use it only for testing\"\n );\n this.D = a;\n },\n addEntropy: function (a, b, c) {\n c = c || \"user\";\n var d,\n e,\n f = new Date().valueOf(),\n g = this.v[c],\n k = this.isReady(),\n l = 0;\n d = this.J[c];\n void 0 === d && (d = this.J[c] = this.T++);\n void 0 === g && (g = this.v[c] = 0);\n this.v[c] = (this.v[c] + 1) % this.c.length;\n switch (typeof a) {\n case \"number\":\n void 0 === b && (b = 1);\n this.c[g].update([d, this.F++, 1, b, f, 1, a | 0]);\n break;\n case \"object\":\n c = Object.prototype.toString.call(a);\n if (\"[object Uint32Array]\" === c) {\n e = [];\n for (c = 0; c < a.length; c++) e.push(a[c]);\n a = e;\n } else\n for (\n \"[object Array]\" !== c && (l = 1), c = 0;\n c < a.length && !l;\n c++\n )\n \"number\" !== typeof a[c] && (l = 1);\n if (!l) {\n if (void 0 === b)\n for (c = b = 0; c < a.length; c++)\n for (e = a[c]; 0 < e; ) b++, (e = e >>> 1);\n this.c[g].update([d, this.F++, 2, b, f, a.length].concat(a));\n }\n break;\n case \"string\":\n void 0 === b && (b = a.length);\n this.c[g].update([d, this.F++, 3, b, f, a.length]);\n this.c[g].update(a);\n break;\n default:\n l = 1;\n }\n if (l)\n throw new sjcl.exception.bug(\n \"random: addEntropy only supports number, array of numbers or string\"\n );\n this.i[g] += b;\n this.f += b;\n k === this.m &&\n (this.isReady() !== this.m && A(\"seeded\", Math.max(this.j, this.f)),\n A(\"progress\", this.getProgress()));\n },\n isReady: function (a) {\n a = this.I[void 0 !== a ? a : this.D];\n return this.j && this.j >= a\n ? this.i[0] > this.N && new Date().valueOf() > this.L\n ? this.A | this.w\n : this.w\n : this.f >= a\n ? this.A | this.m\n : this.m;\n },\n getProgress: function (a) {\n a = this.I[a ? a : this.D];\n return this.j >= a ? 1 : this.f > a ? 1 : this.f / a;\n },\n startCollectors: function () {\n if (!this.s) {\n this.a = {\n loadTimeCollector: B(this, this.V),\n mouseCollector: B(this, this.W),\n keyboardCollector: B(this, this.U),\n accelerometerCollector: B(this, this.R),\n touchCollector: B(this, this.X),\n };\n if (window.addEventListener)\n window.addEventListener(\"load\", this.a.loadTimeCollector, !1),\n window.addEventListener(\"mousemove\", this.a.mouseCollector, !1),\n window.addEventListener(\"keypress\", this.a.keyboardCollector, !1),\n window.addEventListener(\n \"devicemotion\",\n this.a.accelerometerCollector,\n !1\n ),\n window.addEventListener(\"touchmove\", this.a.touchCollector, !1);\n else if (document.attachEvent)\n document.attachEvent(\"onload\", this.a.loadTimeCollector),\n document.attachEvent(\"onmousemove\", this.a.mouseCollector),\n document.attachEvent(\"keypress\", this.a.keyboardCollector);\n else throw new sjcl.exception.bug(\"can't attach event\");\n this.s = !0;\n }\n },\n stopCollectors: function () {\n this.s &&\n (window.removeEventListener\n ? (window.removeEventListener(\"load\", this.a.loadTimeCollector, !1),\n window.removeEventListener(\"mousemove\", this.a.mouseCollector, !1),\n window.removeEventListener(\"keypress\", this.a.keyboardCollector, !1),\n window.removeEventListener(\n \"devicemotion\",\n this.a.accelerometerCollector,\n !1\n ),\n window.removeEventListener(\"touchmove\", this.a.touchCollector, !1))\n : document.detachEvent &&\n (document.detachEvent(\"onload\", this.a.loadTimeCollector),\n document.detachEvent(\"onmousemove\", this.a.mouseCollector),\n document.detachEvent(\"keypress\", this.a.keyboardCollector)),\n (this.s = !1));\n },\n addEventListener: function (a, b) {\n this.B[a][this.S++] = b;\n },\n removeEventListener: function (a, b) {\n var c,\n d,\n e = this.B[a],\n f = [];\n for (d in e) e.hasOwnProperty(d) && e[d] === b && f.push(d);\n for (c = 0; c < f.length; c++) (d = f[c]), delete e[d];\n },\n U: function () {\n C(this, 1);\n },\n W: function (a) {\n var b, c;\n try {\n (b = a.x || a.clientX || a.offsetX || 0),\n (c = a.y || a.clientY || a.offsetY || 0);\n } catch (d) {\n c = b = 0;\n }\n 0 != b && 0 != c && this.addEntropy([b, c], 2, \"mouse\");\n C(this, 0);\n },\n X: function (a) {\n a = a.touches[0] || a.changedTouches[0];\n this.addEntropy([a.pageX || a.clientX, a.pageY || a.clientY], 1, \"touch\");\n C(this, 0);\n },\n V: function () {\n C(this, 2);\n },\n R: function (a) {\n a =\n a.accelerationIncludingGravity.x ||\n a.accelerationIncludingGravity.y ||\n a.accelerationIncludingGravity.z;\n if (window.orientation) {\n var b = window.orientation;\n \"number\" === typeof b && this.addEntropy(b, 1, \"accelerometer\");\n }\n a && this.addEntropy(a, 2, \"accelerometer\");\n C(this, 0);\n },\n};\nfunction A(a, b) {\n var c,\n d = sjcl.random.B[a],\n e = [];\n for (c in d) d.hasOwnProperty(c) && e.push(d[c]);\n for (c = 0; c < e.length; c++) e[c](b);\n}\nfunction C(a, b) {\n \"undefined\" !== typeof window &&\n window.performance &&\n \"function\" === typeof window.performance.now\n ? a.addEntropy(window.performance.now(), b, \"loadtime\")\n : a.addEntropy(new Date().valueOf(), b, \"loadtime\");\n}\nfunction y(a) {\n a.b = z(a).concat(z(a));\n a.C = new sjcl.cipher.aes(a.b);\n}\nfunction z(a) {\n for (var b = 0; 4 > b && ((a.g[b] = (a.g[b] + 1) | 0), !a.g[b]); b++);\n return a.C.encrypt(a.g);\n}\nfunction B(a, b) {\n return function () {\n b.apply(a, arguments);\n };\n}\nsjcl.random = new sjcl.prng(6);\na: try {\n var D, E, F, G;\n if ((G = \"undefined\" !== typeof module && module.exports)) {\n var H;\n try {\n H = _dereq_(\"crypto\");\n } catch (a) {\n H = null;\n }\n G = E = H;\n }\n if (G && E.randomBytes)\n (D = E.randomBytes(128)),\n (D = new Uint32Array(new Uint8Array(D).buffer)),\n sjcl.random.addEntropy(D, 1024, \"crypto['randomBytes']\");\n else if (\n \"undefined\" !== typeof window &&\n \"undefined\" !== typeof Uint32Array\n ) {\n F = new Uint32Array(32);\n if (window.crypto && window.crypto.getRandomValues)\n window.crypto.getRandomValues(F);\n else if (window.msCrypto && window.msCrypto.getRandomValues)\n window.msCrypto.getRandomValues(F);\n else break a;\n sjcl.random.addEntropy(F, 1024, \"crypto['getRandomValues']\");\n }\n} catch (a) {\n \"undefined\" !== typeof window &&\n window.console &&\n (console.log(\"There was an error collecting entropy from the browser:\"),\n console.log(a));\n}\n\"undefined\" !== typeof module && module.exports && (module.exports = sjcl);\n\"function\" === typeof define &&\n define([], function () {\n return sjcl;\n });\n\n},{\"crypto\":undefined}],12:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar loadScript = _dereq_(\"@braintree/asset-loader/load-script\");\n\nmodule.exports = {\n loadScript: loadScript,\n};\n\n},{\"@braintree/asset-loader/load-script\":2}],13:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar sharedErrors = _dereq_(\"./errors\");\nvar VERSION = \"3.103.0\";\n\nfunction basicComponentVerification(options) {\n var client, authorization, name;\n\n if (!options) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INVALID_USE_OF_INTERNAL_FUNCTION.type,\n code: sharedErrors.INVALID_USE_OF_INTERNAL_FUNCTION.code,\n message:\n \"Options must be passed to basicComponentVerification function.\",\n })\n );\n }\n\n name = options.name;\n client = options.client;\n authorization = options.authorization;\n\n if (!client && !authorization) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INSTANTIATION_OPTION_REQUIRED.type,\n code: sharedErrors.INSTANTIATION_OPTION_REQUIRED.code,\n // NEXT_MAJOR_VERSION in major version, we expose passing in authorization for all components\n // instead of passing in a client instance. Leave this a silent feature for now.\n message: \"options.client is required when instantiating \" + name + \".\",\n })\n );\n }\n\n if (!authorization && client.getVersion() !== VERSION) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INCOMPATIBLE_VERSIONS.type,\n code: sharedErrors.INCOMPATIBLE_VERSIONS.code,\n message:\n \"Client (version \" +\n client.getVersion() +\n \") and \" +\n name +\n \" (version \" +\n VERSION +\n \") components must be from the same SDK version.\",\n })\n );\n }\n\n return Promise.resolve();\n}\n\nmodule.exports = {\n verify: basicComponentVerification,\n};\n\n},{\"./braintree-error\":14,\"./errors\":21}],14:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"./enumerate\");\n\n/**\n * @class\n * @global\n * @param {object} options Construction options\n * @classdesc This class is used to report error conditions, frequently as the first parameter to callbacks throughout the Braintree SDK.\n * @description <strong>You cannot use this constructor directly. Interact with instances of this class through {@link callback callbacks}.</strong>\n */\nfunction BraintreeError(options) {\n if (!BraintreeError.types.hasOwnProperty(options.type)) {\n throw new Error(options.type + \" is not a valid type.\");\n }\n\n if (!options.code) {\n throw new Error(\"Error code required.\");\n }\n\n if (!options.message) {\n throw new Error(\"Error message required.\");\n }\n\n this.name = \"BraintreeError\";\n\n /**\n * @type {string}\n * @description A code that corresponds to specific errors.\n */\n this.code = options.code;\n\n /**\n * @type {string}\n * @description A short description of the error.\n */\n this.message = options.message;\n\n /**\n * @type {BraintreeError.types}\n * @description The type of error.\n */\n this.type = options.type;\n\n /**\n * @type {object=}\n * @description Additional information about the error, such as an underlying network error response.\n */\n this.details = options.details;\n}\n\nBraintreeError.prototype = Object.create(Error.prototype);\nBraintreeError.prototype.constructor = BraintreeError;\n\n/**\n * Enum for {@link BraintreeError} types.\n * @name BraintreeError.types\n * @enum\n * @readonly\n * @memberof BraintreeError\n * @property {string} CUSTOMER An error caused by the customer.\n * @property {string} MERCHANT An error that is actionable by the merchant.\n * @property {string} NETWORK An error due to a network problem.\n * @property {string} INTERNAL An error caused by Braintree code.\n * @property {string} UNKNOWN An error where the origin is unknown.\n */\nBraintreeError.types = enumerate([\n \"CUSTOMER\",\n \"MERCHANT\",\n \"NETWORK\",\n \"INTERNAL\",\n \"UNKNOWN\",\n]);\n\nBraintreeError.findRootError = function (err) {\n if (\n err instanceof BraintreeError &&\n err.details &&\n err.details.originalError\n ) {\n return BraintreeError.findRootError(err.details.originalError);\n }\n\n return err;\n};\n\nmodule.exports = BraintreeError;\n\n},{\"./enumerate\":20}],15:[function(_dereq_,module,exports){\n\"use strict\";\n\n// Taken from https://github.com/sindresorhus/decamelize/blob/95980ab6fb44c40eaca7792bdf93aff7c210c805/index.js\nfunction transformKey(key) {\n return key\n .replace(/([a-z\\d])([A-Z])/g, \"$1_$2\")\n .replace(/([A-Z]+)([A-Z][a-z\\d]+)/g, \"$1_$2\")\n .toLowerCase();\n}\n\nmodule.exports = function (obj) {\n return Object.keys(obj).reduce(function (newObj, key) {\n var transformedKey = transformKey(key);\n\n newObj[transformedKey] = obj[key];\n\n return newObj;\n }, {});\n};\n\n},{}],16:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar VERSION = \"3.103.0\";\nvar PLATFORM = \"web\";\n\nvar CLIENT_API_URLS = {\n production: \"https://api.braintreegateway.com:443\",\n sandbox: \"https://api.sandbox.braintreegateway.com:443\",\n};\n\nvar ASSETS_URLS = {\n production: \"https://assets.braintreegateway.com\",\n sandbox: \"https://assets.braintreegateway.com\",\n};\n\nvar GRAPHQL_URLS = {\n production: \"https://payments.braintree-api.com/graphql\",\n sandbox: \"https://payments.sandbox.braintree-api.com/graphql\",\n};\n\n// endRemoveIf(production)\n\nmodule.exports = {\n ANALYTICS_PREFIX: PLATFORM + \".\",\n ANALYTICS_REQUEST_TIMEOUT_MS: 2000,\n ASSETS_URLS: ASSETS_URLS,\n CLIENT_API_URLS: CLIENT_API_URLS,\n FRAUDNET_SOURCE: \"BRAINTREE_SIGNIN\",\n FRAUDNET_FNCLS: \"fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99\",\n FRAUDNET_URL: \"https://c.paypal.com/da/r/fb.js\",\n BUS_CONFIGURATION_REQUEST_EVENT: \"BUS_CONFIGURATION_REQUEST\",\n GRAPHQL_URLS: GRAPHQL_URLS,\n INTEGRATION_TIMEOUT_MS: 60000,\n VERSION: VERSION,\n INTEGRATION: \"custom\",\n SOURCE: \"client\",\n PLATFORM: PLATFORM,\n BRAINTREE_LIBRARY_VERSION: \"braintree/\" + PLATFORM + \"/\" + VERSION,\n};\n\n},{}],17:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar sharedErrors = _dereq_(\"./errors\");\n\nmodule.exports = function (instance, methodNames) {\n methodNames.forEach(function (methodName) {\n instance[methodName] = function () {\n throw new BraintreeError({\n type: sharedErrors.METHOD_CALLED_AFTER_TEARDOWN.type,\n code: sharedErrors.METHOD_CALLED_AFTER_TEARDOWN.code,\n message: methodName + \" cannot be called after teardown.\",\n });\n };\n });\n};\n\n},{\"./braintree-error\":14,\"./errors\":21}],18:[function(_dereq_,module,exports){\n\"use strict\";\n\n// endRemoveIf(production)\nvar ASSETS_URLS = _dereq_(\"./constants\").ASSETS_URLS;\n\nfunction createAssetsUrl(authorization) {\n // endRemoveIf(production)\n\n return ASSETS_URLS.production;\n}\n/* eslint-enable */\n\nmodule.exports = {\n create: createAssetsUrl,\n};\n\n},{\"./constants\":16}],19:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar assets = _dereq_(\"./assets\");\nvar sharedErrors = _dereq_(\"./errors\");\n\nvar VERSION = \"3.103.0\";\n\nfunction createDeferredClient(options) {\n var promise = Promise.resolve();\n\n if (options.client) {\n return Promise.resolve(options.client);\n }\n\n if (!(window.braintree && window.braintree.client)) {\n promise = assets\n .loadScript({\n src: options.assetsUrl + \"/web/\" + VERSION + \"/js/client.min.js\",\n })\n .catch(function (err) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.type,\n code: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.code,\n message: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n }\n\n return promise.then(function () {\n if (window.braintree.client.VERSION !== VERSION) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INCOMPATIBLE_VERSIONS.type,\n code: sharedErrors.INCOMPATIBLE_VERSIONS.code,\n message:\n \"Client (version \" +\n window.braintree.client.VERSION +\n \") and \" +\n options.name +\n \" (version \" +\n VERSION +\n \") components must be from the same SDK version.\",\n })\n );\n }\n\n return window.braintree.client.create({\n authorization: options.authorization,\n debug: options.debug,\n });\n });\n}\n\nmodule.exports = {\n create: createDeferredClient,\n};\n\n},{\"./assets\":12,\"./braintree-error\":14,\"./errors\":21}],20:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction enumerate(values, prefix) {\n prefix = prefix == null ? \"\" : prefix;\n\n return values.reduce(function (enumeration, value) {\n enumeration[value] = prefix + value;\n\n return enumeration;\n }, {});\n}\n\nmodule.exports = enumerate;\n\n},{}],21:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Shared Internal Error Codes\n * @ignore\n * @description These codes should never be experienced by the merchant directly.\n * @property {INTERNAL} INVALID_USE_OF_INTERNAL_FUNCTION Occurs when the client is created without a gateway configuration. Should never happen.\n */\n\n/**\n * @name BraintreeError.Shared Errors - Component Creation Error Codes\n * @description Errors that occur when creating components.\n * @property {MERCHANT} INSTANTIATION_OPTION_REQUIRED Occurs when a component is created that is missing a required option.\n * @property {MERCHANT} INCOMPATIBLE_VERSIONS Occurs when a component is created with a client with a different version than the component.\n * @property {NETWORK} CLIENT_SCRIPT_FAILED_TO_LOAD Occurs when a component attempts to load the Braintree client script, but the request fails.\n */\n\n/**\n * @name BraintreeError.Shared Errors - Component Instance Error Codes\n * @description Errors that occur when using instances of components.\n * @property {MERCHANT} METHOD_CALLED_AFTER_TEARDOWN Occurs when a method is called on a component instance after it has been torn down.\n */\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\n\nmodule.exports = {\n INVALID_USE_OF_INTERNAL_FUNCTION: {\n type: BraintreeError.types.INTERNAL,\n code: \"INVALID_USE_OF_INTERNAL_FUNCTION\",\n },\n INSTANTIATION_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"INSTANTIATION_OPTION_REQUIRED\",\n },\n INCOMPATIBLE_VERSIONS: {\n type: BraintreeError.types.MERCHANT,\n code: \"INCOMPATIBLE_VERSIONS\",\n },\n CLIENT_SCRIPT_FAILED_TO_LOAD: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_SCRIPT_FAILED_TO_LOAD\",\n message: \"Braintree client script could not be loaded.\",\n },\n METHOD_CALLED_AFTER_TEARDOWN: {\n type: BraintreeError.types.MERCHANT,\n code: \"METHOD_CALLED_AFTER_TEARDOWN\",\n },\n};\n\n},{\"./braintree-error\":14}],22:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (obj) {\n return Object.keys(obj).filter(function (key) {\n return typeof obj[key] === \"function\";\n });\n};\n\n},{}]},{},[9])(9)\n});\n", "(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}(g.braintree || (g.braintree = {})).client = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){\n\"use strict\";\nvar scriptPromiseCache = {};\nfunction loadScript(options) {\n var scriptLoadPromise;\n var stringifiedOptions = JSON.stringify(options);\n if (!options.forceScriptReload) {\n scriptLoadPromise = scriptPromiseCache[stringifiedOptions];\n if (scriptLoadPromise) {\n return scriptLoadPromise;\n }\n }\n var script = document.createElement(\"script\");\n var attrs = options.dataAttributes || {};\n var container = options.container || document.head;\n script.src = options.src;\n script.id = options.id || \"\";\n script.async = true;\n if (options.type) {\n script.setAttribute(\"type\", \"\".concat(options.type));\n }\n if (options.crossorigin) {\n script.setAttribute(\"crossorigin\", \"\".concat(options.crossorigin));\n }\n Object.keys(attrs).forEach(function (key) {\n script.setAttribute(\"data-\".concat(key), \"\".concat(attrs[key]));\n });\n scriptLoadPromise = new Promise(function (resolve, reject) {\n script.addEventListener(\"load\", function () {\n resolve(script);\n });\n script.addEventListener(\"error\", function () {\n reject(new Error(\"\".concat(options.src, \" failed to load.\")));\n });\n script.addEventListener(\"abort\", function () {\n reject(new Error(\"\".concat(options.src, \" has aborted.\")));\n });\n container.appendChild(script);\n });\n scriptPromiseCache[stringifiedOptions] = scriptLoadPromise;\n return scriptLoadPromise;\n}\nloadScript.clearCache = function () {\n scriptPromiseCache = {};\n};\nmodule.exports = loadScript;\n\n},{}],2:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/load-script\");\n\n},{\"./dist/load-script\":1}],3:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction uuid() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0;\n var v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n\nmodule.exports = uuid;\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction deferred(fn) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n setTimeout(function () {\n try {\n fn.apply(void 0, args);\n }\n catch (err) {\n /* eslint-disable no-console */\n console.log(\"Error in callback function\");\n console.log(err);\n /* eslint-enable no-console */\n }\n }, 1);\n };\n}\nexports.deferred = deferred;\n\n},{}],5:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction once(fn) {\n var called = false;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n fn.apply(void 0, args);\n }\n };\n}\nexports.once = once;\n\n},{}],6:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable consistent-return */\nfunction promiseOrCallback(promise, callback) {\n if (!callback) {\n return promise;\n }\n promise.then(function (data) { return callback(null, data); }).catch(function (err) { return callback(err); });\n}\nexports.promiseOrCallback = promiseOrCallback;\n\n},{}],7:[function(_dereq_,module,exports){\n\"use strict\";\nvar deferred_1 = _dereq_(\"./lib/deferred\");\nvar once_1 = _dereq_(\"./lib/once\");\nvar promise_or_callback_1 = _dereq_(\"./lib/promise-or-callback\");\nfunction wrapPromise(fn) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var callback;\n var lastArg = args[args.length - 1];\n if (typeof lastArg === \"function\") {\n callback = args.pop();\n callback = once_1.once(deferred_1.deferred(callback));\n }\n // I know, I know, this looks bad. But it's a quirk of the library that\n // we need to allow passing the this context to the original function\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore: this has an implicit any\n return promise_or_callback_1.promiseOrCallback(fn.apply(this, args), callback); // eslint-disable-line no-invalid-this\n };\n}\nwrapPromise.wrapPrototype = function (target, options) {\n if (options === void 0) { options = {}; }\n var ignoreMethods = options.ignoreMethods || [];\n var includePrivateMethods = options.transformPrivateMethods === true;\n var methods = Object.getOwnPropertyNames(target.prototype).filter(function (method) {\n var isNotPrivateMethod;\n var isNonConstructorFunction = method !== \"constructor\" &&\n typeof target.prototype[method] === \"function\";\n var isNotAnIgnoredMethod = ignoreMethods.indexOf(method) === -1;\n if (includePrivateMethods) {\n isNotPrivateMethod = true;\n }\n else {\n isNotPrivateMethod = method.charAt(0) !== \"_\";\n }\n return (isNonConstructorFunction && isNotPrivateMethod && isNotAnIgnoredMethod);\n });\n methods.forEach(function (method) {\n var original = target.prototype[method];\n target.prototype[method] = wrapPromise(original);\n });\n return target;\n};\nmodule.exports = wrapPromise;\n\n},{\"./lib/deferred\":4,\"./lib/once\":5,\"./lib/promise-or-callback\":6}],8:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BRAINTREE_VERSION = _dereq_(\"./constants\").BRAINTREE_VERSION;\n\nvar GraphQL = _dereq_(\"./request/graphql\");\nvar request = _dereq_(\"./request\");\nvar isVerifiedDomain = _dereq_(\"../lib/is-verified-domain\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar convertToBraintreeError = _dereq_(\"../lib/convert-to-braintree-error\");\nvar getGatewayConfiguration = _dereq_(\"./get-configuration\").getConfiguration;\nvar createAuthorizationData = _dereq_(\"../lib/create-authorization-data\");\nvar addMetadata = _dereq_(\"../lib/add-metadata\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar once = _dereq_(\"../lib/once\");\nvar deferred = _dereq_(\"../lib/deferred\");\nvar assign = _dereq_(\"../lib/assign\").assign;\nvar analytics = _dereq_(\"../lib/analytics\");\nvar errors = _dereq_(\"./errors\");\nvar VERSION = _dereq_(\"../lib/constants\").VERSION;\nvar GRAPHQL_URLS = _dereq_(\"../lib/constants\").GRAPHQL_URLS;\nvar methods = _dereq_(\"../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar assets = _dereq_(\"../lib/assets\");\nvar FRAUDNET_FNCLS = _dereq_(\"../lib/constants\").FRAUDNET_FNCLS;\nvar FRAUDNET_SOURCE = _dereq_(\"../lib/constants\").FRAUDNET_SOURCE;\nvar FRAUDNET_URL = _dereq_(\"../lib/constants\").FRAUDNET_URL;\n\nvar cachedClients = {};\n\n/**\n * This object is returned by {@link Client#getConfiguration|getConfiguration}. This information is used extensively by other Braintree modules to properly configure themselves.\n * @typedef {object} Client~configuration\n * @property {object} client The braintree-web/client parameters.\n * @property {string} client.authorization A tokenizationKey or clientToken.\n * @property {object} gatewayConfiguration Gateway-supplied configuration.\n * @property {object} analyticsMetadata Analytics-specific data.\n * @property {string} analyticsMetadata.sessionId Uniquely identifies a browsing session.\n * @property {string} analyticsMetadata.sdkVersion The braintree.js version.\n * @property {string} analyticsMetadata.merchantAppId Identifies the merchant's web app.\n */\n\n/**\n * @class\n * @param {Client~configuration} configuration Options\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/client.create|braintree.client.create} instead.</strong>\n * @classdesc This class is required by many other Braintree components. It serves as the base API layer that communicates with our servers. It is also capable of being used to formulate direct calls to our servers, such as direct credit card tokenization. See {@link Client#request}.\n */\nfunction Client(configuration) {\n var configurationJSON, gatewayConfiguration;\n\n configuration = configuration || {};\n\n configurationJSON = JSON.stringify(configuration);\n gatewayConfiguration = configuration.gatewayConfiguration;\n\n if (!gatewayConfiguration) {\n throw new BraintreeError(errors.CLIENT_MISSING_GATEWAY_CONFIGURATION);\n }\n\n [\"assetsUrl\", \"clientApiUrl\", \"configUrl\"].forEach(function (property) {\n if (\n property in gatewayConfiguration &&\n !isVerifiedDomain(gatewayConfiguration[property])\n ) {\n throw new BraintreeError({\n type: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.type,\n code: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.code,\n message: property + \" property is on an invalid domain.\",\n });\n }\n });\n\n /**\n * Returns a copy of the configuration values.\n * @public\n * @returns {Client~configuration} configuration\n */\n this.getConfiguration = function () {\n return JSON.parse(configurationJSON);\n };\n\n this._request = request;\n this._configuration = this.getConfiguration();\n\n this._clientApiBaseUrl = gatewayConfiguration.clientApiUrl + \"/v1/\";\n\n if (gatewayConfiguration.graphQL) {\n if (!isVerifiedDomain(gatewayConfiguration.graphQL.url)) {\n throw new BraintreeError({\n type: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.type,\n code: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.code,\n message: \"graphQL.url property is on an invalid domain.\",\n });\n }\n\n this._graphQL = new GraphQL({\n graphQL: gatewayConfiguration.graphQL,\n });\n }\n}\n\nClient.initialize = function (options) {\n var clientInstance, authData;\n var promise = cachedClients[options.authorization];\n\n if (promise) {\n analytics.sendEvent(promise, \"custom.client.load.cached\");\n\n return promise;\n }\n\n try {\n authData = createAuthorizationData(options.authorization);\n } catch (err) {\n return Promise.reject(\n new BraintreeError(errors.CLIENT_INVALID_AUTHORIZATION)\n );\n }\n\n promise = getGatewayConfiguration(authData).then(function (configuration) {\n if (options.debug) {\n configuration.isDebug = true;\n }\n\n configuration.authorization = options.authorization;\n\n clientInstance = new Client(configuration);\n\n return clientInstance;\n });\n\n cachedClients[options.authorization] = promise;\n\n analytics.sendEvent(promise, \"custom.client.load.initialized\");\n\n return promise\n .then(function (client) {\n analytics.sendEvent(clientInstance, \"custom.client.load.succeeded\");\n\n return client;\n })\n .catch(function (err) {\n delete cachedClients[options.authorization];\n\n return Promise.reject(err);\n });\n};\n\n// Primarily used for testing the client initalization call\nClient.clearCache = function () {\n cachedClients = {};\n};\n\nClient.prototype._findOrCreateFraudnetJSON = function (clientMetadataId) {\n var el = document.querySelector('script[fncls=\"' + FRAUDNET_FNCLS + '\"]');\n var config, additionalData, authorizationFingerprint, parameters;\n\n if (!el) {\n el = document.body.appendChild(document.createElement(\"script\"));\n el.type = \"application/json\";\n el.setAttribute(\"fncls\", FRAUDNET_FNCLS);\n }\n\n config = this.getConfiguration();\n additionalData = {\n rda_tenant: \"bt_card\", // eslint-disable-line camelcase\n mid: config.gatewayConfiguration.merchantId,\n };\n authorizationFingerprint = config.authorizationFingerprint;\n\n if (authorizationFingerprint) {\n authorizationFingerprint.split(\"&\").forEach(function (pieces) {\n var component = pieces.split(\"=\");\n\n if (component[0] === \"customer_id\" && component.length > 1) {\n additionalData.cid = component[1];\n }\n });\n }\n\n parameters = {\n f: clientMetadataId.substr(0, 32),\n fp: additionalData,\n bu: false,\n s: FRAUDNET_SOURCE,\n };\n el.text = JSON.stringify(parameters);\n};\n\n/**\n * Used by other modules to formulate all network requests to the Braintree gateway. It is also capable of being used directly from your own form to tokenize credit card information. However, be sure to satisfy PCI compliance if you use direct card tokenization.\n * @public\n * @param {object} options Request options:\n * @param {string} options.method HTTP method, e.g. \"get\" or \"post\".\n * @param {string} options.endpoint Endpoint path, e.g. \"payment_methods\".\n * @param {object} options.data Data to send with the request.\n * @param {number} [options.timeout=60000] Set a timeout (in milliseconds) for the request.\n * @param {callback} [callback] The second argument, <code>data</code>, is the returned server data.\n * @example\n * <caption>Direct Credit Card Tokenization</caption>\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * var form = document.getElementById('my-form-id');\n * var data = {\n * creditCard: {\n * number: form['cc-number'].value,\n * cvv: form['cc-cvv'].value,\n * expirationDate: form['cc-expiration-date'].value,\n * billingAddress: {\n * postalCode: form['cc-postal-code'].value\n * },\n * options: {\n * validate: false\n * }\n * }\n * };\n *\n * // Warning: For a merchant to be eligible for the easiest level of PCI compliance (SAQ A),\n * // payment fields cannot be hosted on your checkout page.\n * // For an alternative to the following, use Hosted Fields.\n * clientInstance.request({\n * endpoint: 'payment_methods/credit_cards',\n * method: 'post',\n * data: data\n * }, function (requestErr, response) {\n * // More detailed example of handling API errors: https://codepen.io/braintree/pen/MbwjdM\n * if (requestErr) { throw new Error(requestErr); }\n *\n * console.log('Got nonce:', response.creditCards[0].nonce);\n * });\n * });\n * @example\n * <caption>Tokenizing Fields for AVS Checks</caption>\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * var form = document.getElementById('my-form-id');\n * var data = {\n * creditCard: {\n * number: form['cc-number'].value,\n * cvv: form['cc-cvv'].value,\n * expirationDate: form['cc-date'].value,\n * // The billing address can be checked with AVS rules.\n * // See: https://articles.braintreepayments.com/support/guides/fraud-tools/basic/avs-cvv-rules\n * billingAddress: {\n * postalCode: form['cc-postal-code'].value,\n * streetAddress: form['cc-street-address'].value,\n * countryName: form['cc-country-name'].value,\n * countryCodeAlpha2: form['cc-country-alpha2'].value,\n * countryCodeAlpha3: form['cc-country-alpha3'].value,\n * countryCodeNumeric: form['cc-country-numeric'].value\n * },\n * options: {\n * validate: false\n * }\n * }\n * };\n *\n * // Warning: For a merchant to be eligible for the easiest level of PCI compliance (SAQ A),\n * // payment fields cannot be hosted on your checkout page.\n * // For an alternative to the following, use Hosted Fields.\n * clientInstance.request({\n * endpoint: 'payment_methods/credit_cards',\n * method: 'post',\n * data: data\n * }, function (requestErr, response) {\n * // More detailed example of handling API errors: https://codepen.io/braintree/pen/MbwjdM\n * if (requestErr) { throw new Error(requestErr); }\n *\n * console.log('Got nonce:', response.creditCards[0].nonce);\n * });\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nClient.prototype.request = function (options, callback) {\n var self = this; // eslint-disable-line no-invalid-this\n var requestPromise = new Promise(function (resolve, reject) {\n var optionName, api, baseUrl, requestOptions;\n var shouldCollectData = Boolean(\n options.endpoint === \"payment_methods/credit_cards\" &&\n self.getConfiguration().gatewayConfiguration.creditCards\n .collectDeviceData\n );\n\n if (options.api !== \"graphQLApi\") {\n if (!options.method) {\n optionName = \"options.method\";\n } else if (!options.endpoint) {\n optionName = \"options.endpoint\";\n }\n }\n\n if (optionName) {\n throw new BraintreeError({\n type: errors.CLIENT_OPTION_REQUIRED.type,\n code: errors.CLIENT_OPTION_REQUIRED.code,\n message: optionName + \" is required when making a request.\",\n });\n }\n\n if (\"api\" in options) {\n api = options.api;\n } else {\n api = \"clientApi\";\n }\n\n requestOptions = {\n method: options.method,\n graphQL: self._graphQL,\n timeout: options.timeout,\n metadata: self._configuration.analyticsMetadata,\n };\n\n if (api === \"clientApi\") {\n baseUrl = self._clientApiBaseUrl;\n\n requestOptions.data = addMetadata(self._configuration, options.data);\n } else if (api === \"graphQLApi\") {\n baseUrl =\n GRAPHQL_URLS[self._configuration.gatewayConfiguration.environment];\n options.endpoint = \"\";\n requestOptions.method = \"post\";\n requestOptions.data = assign(\n {\n clientSdkMetadata: {\n platform: self._configuration.analyticsMetadata.platform,\n source: self._configuration.analyticsMetadata.source,\n integration: self._configuration.analyticsMetadata.integration,\n sessionId: self._configuration.analyticsMetadata.sessionId,\n version: VERSION,\n },\n },\n options.data\n );\n\n requestOptions.headers = getAuthorizationHeadersForGraphQL(\n self._configuration\n );\n } else {\n throw new BraintreeError({\n type: errors.CLIENT_OPTION_INVALID.type,\n code: errors.CLIENT_OPTION_INVALID.code,\n message: \"options.api is invalid.\",\n });\n }\n\n requestOptions.url = baseUrl + options.endpoint;\n requestOptions.sendAnalyticsEvent = function (kind) {\n analytics.sendEvent(self, kind);\n };\n\n self._request(requestOptions, function (err, data, status) {\n var resolvedData, requestError;\n\n requestError = formatRequestError(status, err);\n\n if (requestError) {\n reject(requestError);\n\n return;\n }\n\n if (api === \"graphQLApi\" && data.errors) {\n reject(\n convertToBraintreeError(data.errors, {\n type: errors.CLIENT_GRAPHQL_REQUEST_ERROR.type,\n code: errors.CLIENT_GRAPHQL_REQUEST_ERROR.code,\n message: errors.CLIENT_GRAPHQL_REQUEST_ERROR.message,\n })\n );\n\n return;\n }\n\n resolvedData = assign({ _httpStatus: status }, data);\n\n if (\n shouldCollectData &&\n resolvedData.creditCards &&\n resolvedData.creditCards.length > 0\n ) {\n self._findOrCreateFraudnetJSON(resolvedData.creditCards[0].nonce);\n\n assets.loadScript({\n src: FRAUDNET_URL,\n forceScriptReload: true,\n });\n }\n resolve(resolvedData);\n });\n });\n\n if (typeof callback === \"function\") {\n callback = once(deferred(callback));\n\n requestPromise\n .then(function (response) {\n callback(null, response, response._httpStatus);\n })\n .catch(function (err) {\n var status = err && err.details && err.details.httpStatus;\n\n callback(err, null, status);\n });\n\n return;\n }\n\n return requestPromise; // eslint-disable-line consistent-return\n};\n\n// eslint-disable-next-line consistent-return\nfunction formatRequestError(status, err) {\n var requestError;\n\n if (status === -1) {\n requestError = new BraintreeError(errors.CLIENT_REQUEST_TIMEOUT);\n } else if (status === 401) {\n requestError = new BraintreeError(errors.CLIENT_AUTHORIZATION_INVALID);\n } else if (status === 403) {\n requestError = new BraintreeError(errors.CLIENT_AUTHORIZATION_INSUFFICIENT);\n } else if (status === 429) {\n requestError = new BraintreeError(errors.CLIENT_RATE_LIMITED);\n } else if (status >= 500) {\n requestError = new BraintreeError(errors.CLIENT_GATEWAY_NETWORK);\n } else if (status < 200 || status >= 400) {\n requestError = convertToBraintreeError(err, {\n type: errors.CLIENT_REQUEST_ERROR.type,\n code: errors.CLIENT_REQUEST_ERROR.code,\n message: errors.CLIENT_REQUEST_ERROR.message,\n });\n }\n\n if (requestError) {\n requestError.details = requestError.details || {};\n requestError.details.httpStatus = status;\n\n return requestError;\n }\n}\n\nClient.prototype.toJSON = function () {\n return this.getConfiguration();\n};\n\n/**\n * Returns the Client version.\n * @public\n * @returns {String} The created client's version.\n * @example\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * console.log(clientInstance.getVersion()); // Ex: 1.0.0\n * });\n * @returns {void}\n */\nClient.prototype.getVersion = function () {\n return VERSION;\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/client.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * clientInstance.teardown();\n * @example <caption>With callback</caption>\n * clientInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nClient.prototype.teardown = wrapPromise(function () {\n var self = this; // eslint-disable-line no-invalid-this\n\n delete cachedClients[self.getConfiguration().authorization];\n convertMethodsToError(self, methods(Client.prototype));\n\n return Promise.resolve();\n});\n\nfunction getAuthorizationHeadersForGraphQL(configuration) {\n var token =\n configuration.authorizationFingerprint || configuration.authorization;\n\n return {\n Authorization: \"Bearer \" + token,\n \"Braintree-Version\": BRAINTREE_VERSION,\n };\n}\n\nmodule.exports = Client;\n\n},{\"../lib/add-metadata\":26,\"../lib/analytics\":27,\"../lib/assets\":28,\"../lib/assign\":29,\"../lib/braintree-error\":30,\"../lib/constants\":31,\"../lib/convert-methods-to-error\":32,\"../lib/convert-to-braintree-error\":33,\"../lib/create-authorization-data\":34,\"../lib/deferred\":35,\"../lib/is-verified-domain\":39,\"../lib/methods\":41,\"../lib/once\":42,\"./constants\":9,\"./errors\":10,\"./get-configuration\":11,\"./request\":22,\"./request/graphql\":20,\"@braintree/wrap-promise\":7}],9:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n BRAINTREE_VERSION: \"2018-05-10\",\n};\n\n},{}],10:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Client - Internal Error Codes\n * @ignore\n * @description These codes should never be experienced by the merchant directly.\n * @property {MERCHANT} CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN An error to prevent client creation for domains that are not allowed in the JS.\n * @property {INTERNAL} CLIENT_MISSING_GATEWAY_CONFIGURATION Occurs when the client is created without a gateway configuration. Should never happen.\n */\n\n/**\n * @name BraintreeError.Client - Create Error Codes\n * @description Errors that may occur when [creating the client](./module-braintree-web_client.html#.create)\n * @property {MERCHANT} CLIENT_INVALID_AUTHORIZATION Occurs when client token cannot be parsed.\n */\n\n/**\n * @name BraintreeError.Client - Request Error Codes\n * @description Errors that may occur when [using the request method](./Client.html#request)\n * @property {MERCHANT} CLIENT_OPTION_REQUIRED An option required in the request method was not provided. Usually `options.method` or `options.endpoint`\n * @property {MERCHANT} CLIENT_OPTION_INVALID The request option provided is invalid.\n * @property {MERCHANT} CLIENT_GATEWAY_NETWORK The Braintree gateway could not be contacted.\n * @property {NETWORK} CLIENT_REQUEST_TIMEOUT The request took too long to complete and timed out.\n * @property {NETWORK} CLIENT_REQUEST_ERROR The response from a request had status 400 or greater.\n * @property {NETWORK} CLIENT_GRAPHQL_REQUEST_ERROR The response from a request to GraphQL contained an error.\n * @property {MERCHANT} CLIENT_RATE_LIMITED The response from a request had a status of 429, indicating rate limiting.\n * @property {MERCHANT} CLIENT_AUTHORIZATION_INSUFFICIENT The user associated with the client token or tokenization key does not have permissions to make the request.\n * @property {MERCHANT} CLIENT_AUTHORIZATION_INVALID The provided authorization could not be found. Either the client token has expired and a new client token must be generated or the tokenization key used is set to be inactive or has been deleted.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN\",\n },\n CLIENT_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_OPTION_REQUIRED\",\n },\n CLIENT_OPTION_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_OPTION_INVALID\",\n },\n CLIENT_MISSING_GATEWAY_CONFIGURATION: {\n type: BraintreeError.types.INTERNAL,\n code: \"CLIENT_MISSING_GATEWAY_CONFIGURATION\",\n message: \"Missing gatewayConfiguration.\",\n },\n CLIENT_INVALID_AUTHORIZATION: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_INVALID_AUTHORIZATION\",\n message:\n \"Authorization is invalid. Make sure your client token or tokenization key is valid.\",\n },\n CLIENT_GATEWAY_NETWORK: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_GATEWAY_NETWORK\",\n message: \"Cannot contact the gateway at this time.\",\n },\n CLIENT_REQUEST_TIMEOUT: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_REQUEST_TIMEOUT\",\n message: \"Request timed out waiting for a reply.\",\n },\n CLIENT_REQUEST_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_REQUEST_ERROR\",\n message: \"There was a problem with your request.\",\n },\n CLIENT_GRAPHQL_REQUEST_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_GRAPHQL_REQUEST_ERROR\",\n message: \"There was a problem with your request.\",\n },\n CLIENT_RATE_LIMITED: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_RATE_LIMITED\",\n message: \"You are being rate-limited; please try again in a few minutes.\",\n },\n CLIENT_AUTHORIZATION_INSUFFICIENT: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_AUTHORIZATION_INSUFFICIENT\",\n message: \"The authorization used has insufficient privileges.\",\n },\n CLIENT_AUTHORIZATION_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_AUTHORIZATION_INVALID\",\n message:\n \"Either the client token has expired and a new one should be generated or the tokenization key has been deactivated or deleted.\",\n },\n};\n\n},{\"../lib/braintree-error\":30}],11:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar request = _dereq_(\"./request\");\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar constants = _dereq_(\"../lib/constants\");\nvar errors = _dereq_(\"./errors\");\nvar GraphQL = _dereq_(\"./request/graphql\");\nvar GRAPHQL_URLS = _dereq_(\"../lib/constants\").GRAPHQL_URLS;\nvar isDateStringBeforeOrOn = _dereq_(\"../lib/is-date-string-before-or-on\");\n\nvar BRAINTREE_VERSION = _dereq_(\"./constants\").BRAINTREE_VERSION;\n\nfunction getConfiguration(authData) {\n return new Promise(function (resolve, reject) {\n var configuration, attrs, configUrl, reqOptions;\n var sessionId = uuid();\n var analyticsMetadata = {\n merchantAppId: window.location.host,\n platform: constants.PLATFORM,\n sdkVersion: constants.VERSION,\n source: constants.SOURCE,\n // NEXT_MAJOR_VERSION remove one of these to not duplicate data. Target parity with mobile platforms approach.\n integration: constants.INTEGRATION,\n integrationType: constants.INTEGRATION,\n sessionId: sessionId,\n };\n\n attrs = authData.attrs;\n configUrl = authData.configUrl;\n\n attrs._meta = analyticsMetadata;\n attrs.braintreeLibraryVersion = constants.BRAINTREE_LIBRARY_VERSION;\n attrs.configVersion = \"3\";\n\n reqOptions = {\n url: configUrl,\n method: \"GET\",\n data: attrs,\n };\n\n if (attrs.authorizationFingerprint && authData.graphQL) {\n if (isDateStringBeforeOrOn(authData.graphQL.date, BRAINTREE_VERSION)) {\n reqOptions.graphQL = new GraphQL({\n graphQL: {\n url: authData.graphQL.url,\n features: [\"configuration\"],\n },\n });\n }\n\n reqOptions.metadata = analyticsMetadata;\n } else if (attrs.tokenizationKey) {\n reqOptions.graphQL = new GraphQL({\n graphQL: {\n url: GRAPHQL_URLS[authData.environment],\n features: [\"configuration\"],\n },\n });\n\n reqOptions.metadata = analyticsMetadata;\n }\n\n // NEXT_MAJOR_VERSION\n // there are various issues with the config endpoint where the values returned\n // do not match the values from the merchant account id passed into a client token\n // we need to update the configuration request endpoint to be able to pass the\n // correct values. The following ones are incorrect\n // * applePayWeb - definitely supportedNetworks, which compiles all the card\n // networks from all the merchant accounts instead of providing just the\n // ones from the specified one. The same is probably true for ios apple pay\n // Also the merchantidentifier\n // NEXT_MAJOR_VERSION Allow passing in merchant account id when creating the component\n // to fetch the config for that merchant account id (particularly helpful when using\n // a tokenization key for authorization)\n request(reqOptions, function (err, response, status) {\n var errorTemplate;\n\n if (err) {\n if (status === 403) {\n errorTemplate = errors.CLIENT_AUTHORIZATION_INSUFFICIENT;\n } else if (status === 401) {\n errorTemplate = errors.CLIENT_AUTHORIZATION_INVALID;\n } else {\n errorTemplate = errors.CLIENT_GATEWAY_NETWORK;\n }\n\n reject(\n new BraintreeError({\n type: errorTemplate.type,\n code: errorTemplate.code,\n message: errorTemplate.message,\n details: {\n originalError: err,\n },\n })\n );\n\n return;\n }\n\n configuration = {\n authorizationType: attrs.tokenizationKey\n ? \"TOKENIZATION_KEY\"\n : \"CLIENT_TOKEN\",\n authorizationFingerprint: attrs.authorizationFingerprint,\n analyticsMetadata: analyticsMetadata,\n gatewayConfiguration: response,\n };\n\n resolve(configuration);\n });\n });\n}\n\nmodule.exports = {\n getConfiguration: wrapPromise(getConfiguration),\n};\n\n},{\"../lib/braintree-error\":30,\"../lib/constants\":31,\"../lib/is-date-string-before-or-on\":38,\"./constants\":9,\"./errors\":10,\"./request\":22,\"./request/graphql\":20,\"@braintree/uuid\":3,\"@braintree/wrap-promise\":7}],12:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar Client = _dereq_(\"./client\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar sharedErrors = _dereq_(\"../lib/errors\");\n\n/** @module braintree-web/client */\n\n/**\n * @function create\n * @description This function is the entry point for the <code>braintree.client</code> module. It is used for creating {@link Client} instances that service communication to Braintree servers.\n * @param {object} options Object containing all {@link Client} options:\n * @param {string} options.authorization A tokenizationKey or clientToken.\n * @param {callback} [callback] The second argument, <code>data</code>, is the {@link Client} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * if (createErr) {\n * if (createErr.code === 'CLIENT_AUTHORIZATION_INVALID') {\n * // either the client token has expired, and a new one should be generated\n * // or the tokenization key was deactivated or deleted\n * } else {\n * console.log('something went wrong creating the client instance', createErr);\n * }\n * return;\n * }\n *\n * // set up other components\n * });\n * @static\n */\nfunction create(options) {\n if (!options.authorization) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INSTANTIATION_OPTION_REQUIRED.type,\n code: sharedErrors.INSTANTIATION_OPTION_REQUIRED.code,\n message:\n \"options.authorization is required when instantiating a client.\",\n })\n );\n }\n\n return Client.initialize(options);\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/braintree-error\":30,\"../lib/errors\":37,\"./client\":8,\"@braintree/wrap-promise\":7}],13:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar querystring = _dereq_(\"../../lib/querystring\");\nvar assign = _dereq_(\"../../lib/assign\").assign;\nvar prepBody = _dereq_(\"./prep-body\");\nvar parseBody = _dereq_(\"./parse-body\");\nvar xhr = _dereq_(\"./xhr\");\nvar isXHRAvailable = xhr.isAvailable;\nvar GraphQLRequest = _dereq_(\"./graphql/request\");\nvar DefaultRequest = _dereq_(\"./default-request\");\n\nvar MAX_TCP_RETRYCOUNT = 1;\nvar TCP_PRECONNECT_BUG_STATUS_CODE = 408;\n\nfunction requestShouldRetry(status) {\n return !status || status === TCP_PRECONNECT_BUG_STATUS_CODE;\n}\n\nfunction graphQLRequestShouldRetryWithClientApi(body) {\n var errorClass =\n !body.data &&\n body.errors &&\n body.errors[0] &&\n body.errors[0].extensions &&\n body.errors[0].extensions.errorClass;\n\n return errorClass === \"UNKNOWN\" || errorClass === \"INTERNAL\";\n}\n\nfunction _requestWithRetry(options, tcpRetryCount, cb) {\n var status, resBody, ajaxRequest, body, method, headers, parsedBody;\n var url = options.url;\n var graphQL = options.graphQL;\n var timeout = options.timeout;\n var req = xhr.getRequestObject();\n var callback = cb;\n var isGraphQLRequest = Boolean(\n graphQL && graphQL.isGraphQLRequest(url, options.data)\n );\n\n options.headers = assign(\n { \"Content-Type\": \"application/json\" },\n options.headers\n );\n\n if (isGraphQLRequest) {\n ajaxRequest = new GraphQLRequest(options);\n } else {\n ajaxRequest = new DefaultRequest(options);\n }\n\n url = ajaxRequest.getUrl();\n body = ajaxRequest.getBody();\n method = ajaxRequest.getMethod();\n headers = ajaxRequest.getHeaders();\n\n if (method === \"GET\") {\n url = querystring.queryify(url, body);\n body = null;\n }\n\n if (isXHRAvailable) {\n req.onreadystatechange = function () {\n if (req.readyState !== 4) {\n return;\n }\n\n if (req.status === 0 && isGraphQLRequest) {\n // If a merchant experiences a connection\n // issue to the GraphQL endpoint (possibly\n // due to a Content Security Policy), retry\n // the request against the old client API.\n delete options.graphQL;\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n\n parsedBody = parseBody(req.responseText);\n resBody = ajaxRequest.adaptResponseBody(parsedBody);\n status = ajaxRequest.determineStatus(req.status, parsedBody);\n\n if (status >= 400 || status < 200) {\n if (\n isGraphQLRequest &&\n graphQLRequestShouldRetryWithClientApi(parsedBody)\n ) {\n delete options.graphQL;\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n\n if (tcpRetryCount < MAX_TCP_RETRYCOUNT && requestShouldRetry(status)) {\n tcpRetryCount++;\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n callback(resBody || \"error\", null, status || 500);\n } else {\n callback(null, resBody, status);\n }\n };\n } else {\n if (options.headers) {\n url = querystring.queryify(url, headers);\n }\n\n req.onload = function () {\n callback(null, parseBody(req.responseText), req.status);\n };\n\n req.onerror = function () {\n // XDomainRequest does not report a body or status for errors, so\n // hardcode to 'error' and 500, respectively\n callback(\"error\", null, 500);\n };\n\n // This must remain for IE9 to work\n req.onprogress = function () {};\n\n req.ontimeout = function () {\n callback(\"timeout\", null, -1);\n };\n }\n\n try {\n req.open(method, url, true);\n } catch (requestOpenError) {\n // If a merchant has a Content Security Policy and they have\n // not allowed our endpoints, some browsers may\n // synchronously throw an error. If it is not a GraphQL\n // request, we throw the error. If it is a GraphQL request\n // we remove the GraphQL option and try the request against\n // the old client API.\n if (!isGraphQLRequest) {\n throw requestOpenError;\n }\n\n delete options.graphQL;\n\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n\n req.timeout = timeout;\n\n if (isXHRAvailable) {\n Object.keys(headers).forEach(function (headerKey) {\n req.setRequestHeader(headerKey, headers[headerKey]);\n });\n }\n\n try {\n req.send(prepBody(method, body));\n } catch (e) {\n /* ignored */\n }\n}\n\nfunction request(options, cb) {\n _requestWithRetry(options, 0, cb);\n}\n\nmodule.exports = {\n request: request,\n};\n\n},{\"../../lib/assign\":29,\"../../lib/querystring\":43,\"./default-request\":14,\"./graphql/request\":21,\"./parse-body\":23,\"./prep-body\":24,\"./xhr\":25}],14:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction DefaultRequest(options) {\n this._url = options.url;\n this._data = options.data;\n this._method = options.method;\n this._headers = options.headers;\n}\n\nDefaultRequest.prototype.getUrl = function () {\n return this._url;\n};\n\nDefaultRequest.prototype.getBody = function () {\n return this._data;\n};\n\nDefaultRequest.prototype.getMethod = function () {\n return this._method;\n};\n\nDefaultRequest.prototype.getHeaders = function () {\n return this._headers;\n};\n\nDefaultRequest.prototype.adaptResponseBody = function (parsedBody) {\n return parsedBody;\n};\n\nDefaultRequest.prototype.determineStatus = function (status) {\n return status;\n};\n\nmodule.exports = DefaultRequest;\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar errorResponseAdapter = _dereq_(\"./error\");\nvar assign = _dereq_(\"../../../../lib/assign\").assign;\n\n/* eslint-disable camelcase */\nvar cardTypeTransforms = {\n creditCard: {\n AMERICAN_EXPRESS: \"American Express\",\n DISCOVER: \"Discover\",\n INTERNATIONAL_MAESTRO: \"Maestro\",\n JCB: \"JCB\",\n MASTERCARD: \"MasterCard\",\n SOLO: \"Solo\",\n UK_MAESTRO: \"UK Maestro\",\n UNION_PAY: \"UnionPay\",\n VISA: \"Visa\",\n ELO: \"Elo\",\n HIPER: \"Hiper\",\n HIPERCARD: \"Hipercard\",\n },\n applePayWeb: {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n DISCOVER: \"discover\",\n AMERICAN_EXPRESS: \"amex\",\n INTERNATIONAL_MAESTRO: \"maestro\",\n ELO: \"elo\",\n },\n visaCheckout: {\n VISA: \"Visa\",\n MASTERCARD: \"MasterCard\",\n DISCOVER: \"Discover\",\n AMERICAN_EXPRESS: \"American Express\",\n },\n googlePay: {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n DISCOVER: \"discover\",\n AMERICAN_EXPRESS: \"amex\",\n INTERNATIONAL_MAESTRO: \"maestro\",\n ELO: \"elo\",\n },\n masterpass: {\n VISA: \"visa\",\n MASTERCARD: \"master\",\n DISCOVER: \"discover\",\n AMERICAN_EXPRESS: \"amex\",\n DINERS: \"diners\",\n INTERNATIONAL_MAESTRO: \"maestro\",\n JCB: \"jcb\",\n },\n};\n/* eslint-enable camelcase */\n\nfunction configurationResponseAdapter(responseBody, ctx) {\n var adaptedResponse;\n\n if (responseBody.data && !responseBody.errors) {\n adaptedResponse = adaptConfigurationResponseBody(responseBody, ctx);\n } else {\n adaptedResponse = errorResponseAdapter(responseBody);\n }\n\n return adaptedResponse;\n}\n\nfunction adaptConfigurationResponseBody(body, ctx) {\n var configuration = body.data.clientConfiguration;\n var response;\n\n response = {\n environment: configuration.environment.toLowerCase(),\n clientApiUrl: configuration.clientApiUrl,\n assetsUrl: configuration.assetsUrl,\n analytics: {\n url: configuration.analyticsUrl,\n },\n merchantId: configuration.merchantId,\n venmo: \"off\",\n };\n\n if (configuration.supportedFeatures) {\n response.graphQL = {\n url: ctx._graphQL._config.url,\n features: configuration.supportedFeatures.map(function (feature) {\n return feature.toLowerCase();\n }),\n };\n }\n\n if (configuration.braintreeApi) {\n response.braintreeApi = configuration.braintreeApi;\n }\n\n if (configuration.applePayWeb) {\n response.applePayWeb = configuration.applePayWeb;\n response.applePayWeb.supportedNetworks = mapCardTypes(\n configuration.applePayWeb.supportedCardBrands,\n cardTypeTransforms.applePayWeb\n );\n\n delete response.applePayWeb.supportedCardBrands;\n }\n\n if (configuration.ideal) {\n response.ideal = configuration.ideal;\n }\n\n if (configuration.kount) {\n response.kount = {\n kountMerchantId: configuration.kount.merchantId,\n };\n }\n\n if (configuration.creditCard) {\n response.challenges = configuration.creditCard.challenges.map(function (\n challenge\n ) {\n return challenge.toLowerCase();\n });\n\n response.creditCards = {\n supportedCardTypes: mapCardTypes(\n configuration.creditCard.supportedCardBrands,\n cardTypeTransforms.creditCard\n ),\n };\n response.threeDSecureEnabled = configuration.creditCard.threeDSecureEnabled;\n response.threeDSecure = configuration.creditCard.threeDSecure;\n } else {\n response.challenges = [];\n response.creditCards = {\n supportedCardTypes: [],\n };\n response.threeDSecureEnabled = false;\n }\n\n if (configuration.googlePay) {\n response.androidPay = {\n displayName: configuration.googlePay.displayName,\n enabled: true,\n environment: configuration.googlePay.environment.toLowerCase(),\n googleAuthorizationFingerprint:\n configuration.googlePay.googleAuthorization,\n paypalClientId: configuration.googlePay.paypalClientId,\n supportedNetworks: mapCardTypes(\n configuration.googlePay.supportedCardBrands,\n cardTypeTransforms.googlePay\n ),\n };\n }\n\n if (configuration.venmo) {\n response.payWithVenmo = {\n merchantId: configuration.venmo.merchantId,\n accessToken: configuration.venmo.accessToken,\n environment: configuration.venmo.environment.toLowerCase(),\n enrichedCustomerDataEnabled:\n configuration.venmo.enrichedCustomerDataEnabled,\n };\n }\n\n if (configuration.paypal) {\n response.paypalEnabled = true;\n response.paypal = assign({}, configuration.paypal);\n response.paypal.currencyIsoCode = response.paypal.currencyCode;\n response.paypal.environment = response.paypal.environment.toLowerCase();\n\n delete response.paypal.currencyCode;\n } else {\n response.paypalEnabled = false;\n }\n\n if (configuration.unionPay) {\n response.unionPay = {\n enabled: true,\n merchantAccountId: configuration.unionPay.merchantAccountId,\n };\n }\n\n if (configuration.visaCheckout) {\n response.visaCheckout = {\n apikey: configuration.visaCheckout.apiKey,\n encryptionKey: configuration.visaCheckout.encryptionKey,\n externalClientId: configuration.visaCheckout.externalClientId,\n supportedCardTypes: mapCardTypes(\n configuration.visaCheckout.supportedCardBrands,\n cardTypeTransforms.visaCheckout\n ),\n };\n }\n\n if (configuration.masterpass) {\n response.masterpass = {\n merchantCheckoutId: configuration.masterpass.merchantCheckoutId,\n supportedNetworks: mapCardTypes(\n configuration.masterpass.supportedCardBrands,\n cardTypeTransforms.masterpass\n ),\n };\n }\n\n if (configuration.usBankAccount) {\n response.usBankAccount = {\n routeId: configuration.usBankAccount.routeId,\n plaid: {\n publicKey: configuration.usBankAccount.plaidPublicKey,\n },\n };\n }\n\n return response;\n}\n\nfunction mapCardTypes(cardTypes, cardTypeTransformMap) {\n return cardTypes.reduce(function (acc, type) {\n if (cardTypeTransformMap.hasOwnProperty(type)) {\n return acc.concat(cardTypeTransformMap[type]);\n }\n\n return acc;\n }, []);\n}\n\nmodule.exports = configurationResponseAdapter;\n\n},{\"../../../../lib/assign\":29,\"./error\":17}],16:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar errorResponseAdapter = _dereq_(\"./error\");\n\nvar CARD_BRAND_MAP = {\n /* eslint-disable camelcase */\n AMERICAN_EXPRESS: \"American Express\",\n DINERS: \"Discover\",\n DISCOVER: \"Discover\",\n ELO: \"Elo\",\n HIPER: \"Hiper\",\n HIPERCARD: \"Hipercard\",\n INTERNATIONAL_MAESTRO: \"Maestro\",\n JCB: \"JCB\",\n MASTERCARD: \"MasterCard\",\n UK_MAESTRO: \"Maestro\",\n UNION_PAY: \"UnionPay\",\n VISA: \"Visa\",\n /* eslint-enable camelcase */\n};\n\nvar BIN_DATA_MAP = {\n YES: \"Yes\",\n NO: \"No\",\n UNKNOWN: \"Unknown\",\n};\n\nvar AUTHENTICATION_INSIGHT_MAP = {\n PSDTWO: \"psd2\",\n};\n\nfunction creditCardTokenizationResponseAdapter(responseBody) {\n var adaptedResponse;\n\n if (responseBody.data && !responseBody.errors) {\n adaptedResponse = adaptTokenizeCreditCardResponseBody(responseBody);\n } else {\n adaptedResponse = errorResponseAdapter(responseBody);\n }\n\n return adaptedResponse;\n}\n\nfunction adaptTokenizeCreditCardResponseBody(body) {\n var data = body.data.tokenizeCreditCard;\n var creditCard = data.creditCard;\n var lastTwo = creditCard.last4 ? creditCard.last4.substr(2, 4) : \"\";\n var binData = creditCard.binData;\n var response, regulationEnvironment;\n\n if (binData) {\n [\n \"commercial\",\n \"debit\",\n \"durbinRegulated\",\n \"healthcare\",\n \"payroll\",\n \"prepaid\",\n ].forEach(function (key) {\n if (binData[key]) {\n binData[key] = BIN_DATA_MAP[binData[key]];\n } else {\n binData[key] = \"Unknown\";\n }\n });\n\n [\"issuingBank\", \"countryOfIssuance\", \"productId\"].forEach(function (key) {\n if (!binData[key]) {\n binData[key] = \"Unknown\";\n }\n });\n }\n\n response = {\n creditCards: [\n {\n binData: binData,\n consumed: false,\n description: lastTwo ? \"ending in \" + lastTwo : \"\",\n nonce: data.token,\n details: {\n cardholderName: creditCard.cardholderName,\n expirationMonth: creditCard.expirationMonth,\n expirationYear: creditCard.expirationYear,\n bin: creditCard.bin || \"\",\n cardType: CARD_BRAND_MAP[creditCard.brandCode] || \"Unknown\",\n lastFour: creditCard.last4 || \"\",\n lastTwo: lastTwo,\n },\n type: \"CreditCard\",\n threeDSecureInfo: null,\n },\n ],\n };\n\n if (data.authenticationInsight) {\n regulationEnvironment =\n data.authenticationInsight.customerAuthenticationRegulationEnvironment;\n response.creditCards[0].authenticationInsight = {\n regulationEnvironment:\n AUTHENTICATION_INSIGHT_MAP[regulationEnvironment] ||\n regulationEnvironment.toLowerCase(),\n };\n }\n\n return response;\n}\n\nmodule.exports = creditCardTokenizationResponseAdapter;\n\n},{\"./error\":17}],17:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction errorResponseAdapter(responseBody) {\n var response;\n var errorClass =\n responseBody.errors &&\n responseBody.errors[0] &&\n responseBody.errors[0].extensions &&\n responseBody.errors[0].extensions.errorClass;\n\n if (errorClass === \"VALIDATION\") {\n response = userErrorResponseAdapter(responseBody);\n } else if (errorClass) {\n response = errorWithClassResponseAdapter(responseBody);\n } else {\n response = {\n error: { message: \"There was a problem serving your request\" },\n fieldErrors: [],\n };\n }\n\n return response;\n}\n\nfunction errorWithClassResponseAdapter(responseBody) {\n return {\n error: { message: responseBody.errors[0].message },\n fieldErrors: [],\n };\n}\n\nfunction userErrorResponseAdapter(responseBody) {\n var fieldErrors = buildFieldErrors(responseBody.errors);\n\n if (fieldErrors.length === 0) {\n return { error: { message: responseBody.errors[0].message } };\n }\n\n return {\n error: { message: getLegacyMessage(fieldErrors) },\n fieldErrors: fieldErrors,\n };\n}\n\nfunction buildFieldErrors(errors) {\n var fieldErrors = [];\n\n errors.forEach(function (error) {\n if (!(error.extensions && error.extensions.inputPath)) {\n return;\n }\n addFieldError(error.extensions.inputPath.slice(1), error, fieldErrors);\n });\n\n return fieldErrors;\n}\n\nfunction addFieldError(inputPath, errorDetail, fieldErrors) {\n var fieldError;\n var legacyCode = errorDetail.extensions.legacyCode;\n var inputField = inputPath[0];\n\n if (inputPath.length === 1) {\n fieldErrors.push({\n code: legacyCode,\n field: inputField,\n message: errorDetail.message,\n });\n\n return;\n }\n\n fieldErrors.forEach(function (candidate) {\n if (candidate.field === inputField) {\n fieldError = candidate;\n }\n });\n\n if (!fieldError) {\n fieldError = { field: inputField, fieldErrors: [] };\n fieldErrors.push(fieldError);\n }\n\n addFieldError(inputPath.slice(1), errorDetail, fieldError.fieldErrors);\n}\n\nfunction getLegacyMessage(errors) {\n var legacyMessages = {\n creditCard: \"Credit card is invalid\",\n };\n\n var field = errors[0].field;\n\n return legacyMessages[field];\n}\n\nmodule.exports = errorResponseAdapter;\n\n},{}],18:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar CONFIGURATION_QUERY =\n \"query ClientConfiguration { \" +\n \" clientConfiguration { \" +\n \" analyticsUrl \" +\n \" environment \" +\n \" merchantId \" +\n \" assetsUrl \" +\n \" clientApiUrl \" +\n \" creditCard { \" +\n \" supportedCardBrands \" +\n \" challenges \" +\n \" threeDSecureEnabled \" +\n \" threeDSecure { \" +\n \" cardinalAuthenticationJWT \" +\n \" } \" +\n \" } \" +\n \" applePayWeb { \" +\n \" countryCode \" +\n \" currencyCode \" +\n \" merchantIdentifier \" +\n \" supportedCardBrands \" +\n \" } \" +\n \" googlePay { \" +\n \" displayName \" +\n \" supportedCardBrands \" +\n \" environment \" +\n \" googleAuthorization \" +\n \" paypalClientId \" +\n \" } \" +\n \" ideal { \" +\n \" routeId \" +\n \" assetsUrl \" +\n \" } \" +\n \" kount { \" +\n \" merchantId \" +\n \" } \" +\n \" masterpass { \" +\n \" merchantCheckoutId \" +\n \" supportedCardBrands \" +\n \" } \" +\n \" paypal { \" +\n \" displayName \" +\n \" clientId \" +\n \" assetsUrl \" +\n \" environment \" +\n \" environmentNoNetwork \" +\n \" unvettedMerchant \" +\n \" braintreeClientId \" +\n \" billingAgreementsEnabled \" +\n \" merchantAccountId \" +\n \" currencyCode \" +\n \" payeeEmail \" +\n \" } \" +\n \" unionPay { \" +\n \" merchantAccountId \" +\n \" } \" +\n \" usBankAccount { \" +\n \" routeId \" +\n \" plaidPublicKey \" +\n \" } \" +\n \" venmo { \" +\n \" merchantId \" +\n \" accessToken \" +\n \" environment \" +\n \" enrichedCustomerDataEnabled\" +\n \" } \" +\n \" visaCheckout { \" +\n \" apiKey \" +\n \" externalClientId \" +\n \" supportedCardBrands \" +\n \" } \" +\n \" braintreeApi { \" +\n \" accessToken \" +\n \" url \" +\n \" } \" +\n \" supportedFeatures \" +\n \" } \" +\n \"}\";\n\nfunction configuration() {\n return {\n query: CONFIGURATION_QUERY,\n operationName: \"ClientConfiguration\",\n };\n}\n\nmodule.exports = configuration;\n\n},{}],19:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar assign = _dereq_(\"../../../../lib/assign\").assign;\n\nfunction createMutation(config) {\n var hasAuthenticationInsight = config.hasAuthenticationInsight;\n var mutation = \"mutation TokenizeCreditCard($input: TokenizeCreditCardInput!\";\n\n if (hasAuthenticationInsight) {\n mutation += \", $authenticationInsightInput: AuthenticationInsightInput!\";\n }\n\n mutation +=\n \") { \" +\n \" tokenizeCreditCard(input: $input) { \" +\n \" token \" +\n \" creditCard { \" +\n \" bin \" +\n \" brandCode \" +\n \" last4 \" +\n \" cardholderName \" +\n \" expirationMonth\" +\n \" expirationYear\" +\n \" binData { \" +\n \" prepaid \" +\n \" healthcare \" +\n \" debit \" +\n \" durbinRegulated \" +\n \" commercial \" +\n \" payroll \" +\n \" issuingBank \" +\n \" countryOfIssuance \" +\n \" productId \" +\n \" } \" +\n \" } \";\n\n if (hasAuthenticationInsight) {\n mutation +=\n \" authenticationInsight(input: $authenticationInsightInput) {\" +\n \" customerAuthenticationRegulationEnvironment\" +\n \" }\";\n }\n\n mutation += \" } }\";\n\n return mutation;\n}\n\nfunction createCreditCardTokenizationBody(body, options) {\n var cc = body.creditCard;\n var billingAddress = cc && cc.billingAddress;\n var expDate = cc && cc.expirationDate;\n var expirationMonth =\n cc && (cc.expirationMonth || (expDate && expDate.split(\"/\")[0].trim()));\n var expirationYear =\n cc && (cc.expirationYear || (expDate && expDate.split(\"/\")[1].trim()));\n var variables = {\n input: {\n creditCard: {\n number: cc && cc.number,\n expirationMonth: expirationMonth,\n expirationYear: expirationYear,\n cvv: cc && cc.cvv,\n cardholderName: cc && cc.cardholderName,\n },\n options: {},\n },\n };\n\n if (options.hasAuthenticationInsight) {\n variables.authenticationInsightInput = {\n merchantAccountId: body.merchantAccountId,\n };\n }\n\n if (billingAddress) {\n variables.input.creditCard.billingAddress = billingAddress;\n }\n\n variables.input = addValidationRule(body, variables.input);\n\n return variables;\n}\n\nfunction addValidationRule(body, input) {\n var validate;\n\n if (\n body.creditCard &&\n body.creditCard.options &&\n typeof body.creditCard.options.validate === \"boolean\"\n ) {\n validate = body.creditCard.options.validate;\n } else if (\n (body.authorizationFingerprint && body.tokenizationKey) ||\n body.authorizationFingerprint\n ) {\n validate = true;\n } else if (body.tokenizationKey) {\n validate = false;\n }\n\n if (typeof validate === \"boolean\") {\n input.options = assign(\n {\n validate: validate,\n },\n input.options\n );\n }\n\n return input;\n}\n\nfunction creditCardTokenization(body) {\n var options = {\n hasAuthenticationInsight: Boolean(\n body.authenticationInsight && body.merchantAccountId\n ),\n };\n\n return {\n query: createMutation(options),\n variables: createCreditCardTokenizationBody(body, options),\n operationName: \"TokenizeCreditCard\",\n };\n}\n\nmodule.exports = creditCardTokenization;\n\n},{\"../../../../lib/assign\":29}],20:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar features = {\n tokenize_credit_cards: \"payment_methods/credit_cards\", // eslint-disable-line camelcase\n configuration: \"configuration\",\n};\n\nvar disallowedInputPaths = [\"creditCard.options.unionPayEnrollment\"];\n\nfunction GraphQL(config) {\n this._config = config.graphQL;\n}\n\nGraphQL.prototype.getGraphQLEndpoint = function () {\n return this._config.url;\n};\n\nGraphQL.prototype.isGraphQLRequest = function (url, body) {\n var featureEnabled;\n var path = this.getClientApiPath(url);\n\n if (!this._isGraphQLEnabled() || !path) {\n return false;\n }\n\n featureEnabled = this._config.features.some(function (feature) {\n return features[feature] === path;\n });\n\n if (containsDisallowedlistedKeys(body)) {\n return false;\n }\n\n return featureEnabled;\n};\n\nGraphQL.prototype.getClientApiPath = function (url) {\n var path;\n var clientApiPrefix = \"/client_api/v1/\";\n var pathParts = url.split(clientApiPrefix);\n\n if (pathParts.length > 1) {\n path = pathParts[1].split(\"?\")[0];\n }\n\n return path;\n};\n\nGraphQL.prototype._isGraphQLEnabled = function () {\n return Boolean(this._config);\n};\n\nfunction containsDisallowedlistedKeys(body) {\n return disallowedInputPaths.some(function (keys) {\n var value = keys.split(\".\").reduce(function (accumulator, key) {\n return accumulator && accumulator[key];\n }, body);\n\n return value !== undefined; // eslint-disable-line no-undefined\n });\n}\n\nmodule.exports = GraphQL;\n\n},{}],21:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BRAINTREE_VERSION = _dereq_(\"../../constants\").BRAINTREE_VERSION;\n\nvar assign = _dereq_(\"../../../lib/assign\").assign;\nvar snakeCaseToCamelCase = _dereq_(\"../../../lib/snake-case-to-camel-case\");\n\nvar creditCardTokenizationBodyGenerator = _dereq_(\"./generators/credit-card-tokenization\");\nvar creditCardTokenizationResponseAdapter = _dereq_(\"./adapters/credit-card-tokenization\");\n\nvar configurationBodyGenerator = _dereq_(\"./generators/configuration\");\nvar configurationResponseAdapter = _dereq_(\"./adapters/configuration\");\n\nvar generators = {\n \"payment_methods/credit_cards\": creditCardTokenizationBodyGenerator,\n configuration: configurationBodyGenerator,\n};\nvar adapters = {\n \"payment_methods/credit_cards\": creditCardTokenizationResponseAdapter,\n configuration: configurationResponseAdapter,\n};\n\nfunction GraphQLRequest(options) {\n var clientApiPath = options.graphQL.getClientApiPath(options.url);\n\n this._graphQL = options.graphQL;\n this._data = options.data;\n this._method = options.method;\n this._headers = options.headers;\n this._clientSdkMetadata = {\n source: options.metadata.source,\n integration: options.metadata.integration,\n sessionId: options.metadata.sessionId,\n };\n this._sendAnalyticsEvent = options.sendAnalyticsEvent || Function.prototype;\n\n this._generator = generators[clientApiPath];\n this._adapter = adapters[clientApiPath];\n\n this._sendAnalyticsEvent(\"graphql.init\");\n}\n\nGraphQLRequest.prototype.getUrl = function () {\n return this._graphQL.getGraphQLEndpoint();\n};\n\nGraphQLRequest.prototype.getBody = function () {\n var formattedBody = formatBodyKeys(this._data);\n var generatedBody = this._generator(formattedBody);\n var body = assign(\n { clientSdkMetadata: this._clientSdkMetadata },\n generatedBody\n );\n\n return JSON.stringify(body);\n};\n\nGraphQLRequest.prototype.getMethod = function () {\n return \"POST\";\n};\n\nGraphQLRequest.prototype.getHeaders = function () {\n var authorization, headers;\n\n if (this._data.authorizationFingerprint) {\n this._sendAnalyticsEvent(\"graphql.authorization-fingerprint\");\n authorization = this._data.authorizationFingerprint;\n } else {\n this._sendAnalyticsEvent(\"graphql.tokenization-key\");\n authorization = this._data.tokenizationKey;\n }\n\n headers = {\n Authorization: \"Bearer \" + authorization,\n \"Braintree-Version\": BRAINTREE_VERSION,\n };\n\n return assign({}, this._headers, headers);\n};\n\nGraphQLRequest.prototype.adaptResponseBody = function (parsedBody) {\n return this._adapter(parsedBody, this);\n};\n\nGraphQLRequest.prototype.determineStatus = function (\n httpStatus,\n parsedResponse\n) {\n var status, errorClass;\n\n if (httpStatus === 200) {\n errorClass =\n parsedResponse.errors &&\n parsedResponse.errors[0] &&\n parsedResponse.errors[0].extensions &&\n parsedResponse.errors[0].extensions.errorClass;\n\n if (parsedResponse.data && !parsedResponse.errors) {\n status = 200;\n } else if (errorClass === \"VALIDATION\") {\n status = 422;\n } else if (errorClass === \"AUTHORIZATION\") {\n status = 403;\n } else if (errorClass === \"AUTHENTICATION\") {\n status = 401;\n } else if (isGraphQLError(errorClass, parsedResponse)) {\n status = 403;\n } else {\n status = 500;\n }\n } else if (!httpStatus) {\n status = 500;\n } else {\n status = httpStatus;\n }\n\n this._sendAnalyticsEvent(\"graphql.status.\" + httpStatus);\n this._sendAnalyticsEvent(\"graphql.determinedStatus.\" + status);\n\n return status;\n};\n\nfunction isGraphQLError(errorClass, parsedResponse) {\n return !errorClass && parsedResponse.errors[0].message;\n}\n\nfunction formatBodyKeys(originalBody) {\n var body = {};\n\n Object.keys(originalBody).forEach(function (key) {\n var camelCaseKey = snakeCaseToCamelCase(key);\n\n if (typeof originalBody[key] === \"object\") {\n body[camelCaseKey] = formatBodyKeys(originalBody[key]);\n } else if (typeof originalBody[key] === \"number\") {\n body[camelCaseKey] = String(originalBody[key]);\n } else {\n body[camelCaseKey] = originalBody[key];\n }\n });\n\n return body;\n}\n\nmodule.exports = GraphQLRequest;\n\n},{\"../../../lib/assign\":29,\"../../../lib/snake-case-to-camel-case\":44,\"../../constants\":9,\"./adapters/configuration\":15,\"./adapters/credit-card-tokenization\":16,\"./generators/configuration\":18,\"./generators/credit-card-tokenization\":19}],22:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar once = _dereq_(\"../../lib/once\");\nvar AJAXDriver = _dereq_(\"./ajax-driver\");\n\nmodule.exports = function (options, cb) {\n cb = once(cb || Function.prototype);\n options.method = (options.method || \"GET\").toUpperCase();\n options.timeout = options.timeout == null ? 60000 : options.timeout;\n options.data = options.data || {};\n\n AJAXDriver.request(options, cb);\n};\n\n},{\"../../lib/once\":42,\"./ajax-driver\":13}],23:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (body) {\n try {\n body = JSON.parse(body);\n } catch (e) {\n /* ignored */\n }\n\n return body;\n};\n\n},{}],24:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (method, body) {\n if (typeof method !== \"string\") {\n throw new Error(\"Method must be a string\");\n }\n\n if (method.toLowerCase() !== \"get\" && body != null) {\n body = typeof body === \"string\" ? body : JSON.stringify(body);\n }\n\n return body;\n};\n\n},{}],25:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar isXHRAvailable =\n typeof window !== \"undefined\" &&\n window.XMLHttpRequest &&\n \"withCredentials\" in new window.XMLHttpRequest();\n\nfunction getRequestObject() {\n return isXHRAvailable\n ? new window.XMLHttpRequest()\n : new window.XDomainRequest();\n}\n\nmodule.exports = {\n isAvailable: isXHRAvailable,\n getRequestObject: getRequestObject,\n};\n\n},{}],26:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar createAuthorizationData = _dereq_(\"./create-authorization-data\");\nvar jsonClone = _dereq_(\"./json-clone\");\nvar constants = _dereq_(\"./constants\");\n\nfunction addMetadata(configuration, data) {\n var key;\n var attrs = data ? jsonClone(data) : {};\n var authAttrs = createAuthorizationData(configuration.authorization).attrs;\n var _meta = jsonClone(configuration.analyticsMetadata);\n\n attrs.braintreeLibraryVersion = constants.BRAINTREE_LIBRARY_VERSION;\n\n for (key in attrs._meta) {\n if (attrs._meta.hasOwnProperty(key)) {\n _meta[key] = attrs._meta[key];\n }\n }\n\n attrs._meta = _meta;\n\n if (authAttrs.tokenizationKey) {\n attrs.tokenizationKey = authAttrs.tokenizationKey;\n } else {\n attrs.authorizationFingerprint = authAttrs.authorizationFingerprint;\n }\n\n return attrs;\n}\n\nmodule.exports = addMetadata;\n\n},{\"./constants\":31,\"./create-authorization-data\":34,\"./json-clone\":40}],27:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar constants = _dereq_(\"./constants\");\nvar addMetadata = _dereq_(\"./add-metadata\");\n\nfunction sendAnalyticsEvent(clientInstanceOrPromise, kind, callback) {\n var timestamp = Date.now(); // milliseconds\n\n return Promise.resolve(clientInstanceOrPromise)\n .then(function (client) {\n var timestampInPromise = Date.now();\n var configuration = client.getConfiguration();\n var request = client._request;\n var url = configuration.gatewayConfiguration.analytics.url;\n var data = {\n analytics: [\n {\n kind: constants.ANALYTICS_PREFIX + kind,\n isAsync:\n Math.floor(timestampInPromise / 1000) !==\n Math.floor(timestamp / 1000),\n timestamp: timestamp,\n },\n ],\n };\n\n request(\n {\n url: url,\n method: \"post\",\n data: addMetadata(configuration, data),\n timeout: constants.ANALYTICS_REQUEST_TIMEOUT_MS,\n },\n callback\n );\n })\n .catch(function (err) {\n // for all non-test cases, we don't provide a callback,\n // so this error will always be swallowed. In this case,\n // that's fine, it should only error when the deferred\n // client fails to set up, in which case we don't want\n // that error to report over and over again via these\n // deferred analytics events\n if (callback) {\n callback(err);\n }\n });\n}\n\nmodule.exports = {\n sendEvent: sendAnalyticsEvent,\n};\n\n},{\"./add-metadata\":26,\"./constants\":31}],28:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar loadScript = _dereq_(\"@braintree/asset-loader/load-script\");\n\nmodule.exports = {\n loadScript: loadScript,\n};\n\n},{\"@braintree/asset-loader/load-script\":2}],29:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar assignNormalized =\n typeof Object.assign === \"function\" ? Object.assign : assignPolyfill;\n\nfunction assignPolyfill(destination) {\n var i, source, key;\n\n for (i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n }\n\n return destination;\n}\n\nmodule.exports = {\n assign: assignNormalized,\n _assign: assignPolyfill,\n};\n\n},{}],30:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"./enumerate\");\n\n/**\n * @class\n * @global\n * @param {object} options Construction options\n * @classdesc This class is used to report error conditions, frequently as the first parameter to callbacks throughout the Braintree SDK.\n * @description <strong>You cannot use this constructor directly. Interact with instances of this class through {@link callback callbacks}.</strong>\n */\nfunction BraintreeError(options) {\n if (!BraintreeError.types.hasOwnProperty(options.type)) {\n throw new Error(options.type + \" is not a valid type.\");\n }\n\n if (!options.code) {\n throw new Error(\"Error code required.\");\n }\n\n if (!options.message) {\n throw new Error(\"Error message required.\");\n }\n\n this.name = \"BraintreeError\";\n\n /**\n * @type {string}\n * @description A code that corresponds to specific errors.\n */\n this.code = options.code;\n\n /**\n * @type {string}\n * @description A short description of the error.\n */\n this.message = options.message;\n\n /**\n * @type {BraintreeError.types}\n * @description The type of error.\n */\n this.type = options.type;\n\n /**\n * @type {object=}\n * @description Additional information about the error, such as an underlying network error response.\n */\n this.details = options.details;\n}\n\nBraintreeError.prototype = Object.create(Error.prototype);\nBraintreeError.prototype.constructor = BraintreeError;\n\n/**\n * Enum for {@link BraintreeError} types.\n * @name BraintreeError.types\n * @enum\n * @readonly\n * @memberof BraintreeError\n * @property {string} CUSTOMER An error caused by the customer.\n * @property {string} MERCHANT An error that is actionable by the merchant.\n * @property {string} NETWORK An error due to a network problem.\n * @property {string} INTERNAL An error caused by Braintree code.\n * @property {string} UNKNOWN An error where the origin is unknown.\n */\nBraintreeError.types = enumerate([\n \"CUSTOMER\",\n \"MERCHANT\",\n \"NETWORK\",\n \"INTERNAL\",\n \"UNKNOWN\",\n]);\n\nBraintreeError.findRootError = function (err) {\n if (\n err instanceof BraintreeError &&\n err.details &&\n err.details.originalError\n ) {\n return BraintreeError.findRootError(err.details.originalError);\n }\n\n return err;\n};\n\nmodule.exports = BraintreeError;\n\n},{\"./enumerate\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar VERSION = \"3.103.0\";\nvar PLATFORM = \"web\";\n\nvar CLIENT_API_URLS = {\n production: \"https://api.braintreegateway.com:443\",\n sandbox: \"https://api.sandbox.braintreegateway.com:443\",\n};\n\nvar ASSETS_URLS = {\n production: \"https://assets.braintreegateway.com\",\n sandbox: \"https://assets.braintreegateway.com\",\n};\n\nvar GRAPHQL_URLS = {\n production: \"https://payments.braintree-api.com/graphql\",\n sandbox: \"https://payments.sandbox.braintree-api.com/graphql\",\n};\n\n// endRemoveIf(production)\n\nmodule.exports = {\n ANALYTICS_PREFIX: PLATFORM + \".\",\n ANALYTICS_REQUEST_TIMEOUT_MS: 2000,\n ASSETS_URLS: ASSETS_URLS,\n CLIENT_API_URLS: CLIENT_API_URLS,\n FRAUDNET_SOURCE: \"BRAINTREE_SIGNIN\",\n FRAUDNET_FNCLS: \"fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99\",\n FRAUDNET_URL: \"https://c.paypal.com/da/r/fb.js\",\n BUS_CONFIGURATION_REQUEST_EVENT: \"BUS_CONFIGURATION_REQUEST\",\n GRAPHQL_URLS: GRAPHQL_URLS,\n INTEGRATION_TIMEOUT_MS: 60000,\n VERSION: VERSION,\n INTEGRATION: \"custom\",\n SOURCE: \"client\",\n PLATFORM: PLATFORM,\n BRAINTREE_LIBRARY_VERSION: \"braintree/\" + PLATFORM + \"/\" + VERSION,\n};\n\n},{}],32:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar sharedErrors = _dereq_(\"./errors\");\n\nmodule.exports = function (instance, methodNames) {\n methodNames.forEach(function (methodName) {\n instance[methodName] = function () {\n throw new BraintreeError({\n type: sharedErrors.METHOD_CALLED_AFTER_TEARDOWN.type,\n code: sharedErrors.METHOD_CALLED_AFTER_TEARDOWN.code,\n message: methodName + \" cannot be called after teardown.\",\n });\n };\n });\n};\n\n},{\"./braintree-error\":30,\"./errors\":37}],33:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\n\nfunction convertToBraintreeError(originalErr, btErrorObject) {\n if (originalErr instanceof BraintreeError) {\n return originalErr;\n }\n\n return new BraintreeError({\n type: btErrorObject.type,\n code: btErrorObject.code,\n message: btErrorObject.message,\n details: {\n originalError: originalErr,\n },\n });\n}\n\nmodule.exports = convertToBraintreeError;\n\n},{\"./braintree-error\":30}],34:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar atob = _dereq_(\"../lib/vendor/polyfill\").atob;\nvar CLIENT_API_URLS = _dereq_(\"../lib/constants\").CLIENT_API_URLS;\n\nfunction _isTokenizationKey(str) {\n return /^[a-zA-Z0-9]+_[a-zA-Z0-9]+_[a-zA-Z0-9_]+$/.test(str);\n}\n\nfunction _parseTokenizationKey(tokenizationKey) {\n var tokens = tokenizationKey.split(\"_\");\n var environment = tokens[0];\n var merchantId = tokens.slice(2).join(\"_\");\n\n return {\n merchantId: merchantId,\n environment: environment,\n };\n}\n\nfunction createAuthorizationData(authorization) {\n var parsedClientToken, parsedTokenizationKey;\n var data = {\n attrs: {},\n configUrl: \"\",\n };\n\n if (_isTokenizationKey(authorization)) {\n parsedTokenizationKey = _parseTokenizationKey(authorization);\n data.environment = parsedTokenizationKey.environment;\n data.attrs.tokenizationKey = authorization;\n data.configUrl =\n CLIENT_API_URLS[parsedTokenizationKey.environment] +\n \"/merchants/\" +\n parsedTokenizationKey.merchantId +\n \"/client_api/v1/configuration\";\n } else {\n parsedClientToken = JSON.parse(atob(authorization));\n data.environment = parsedClientToken.environment;\n data.attrs.authorizationFingerprint =\n parsedClientToken.authorizationFingerprint;\n data.configUrl = parsedClientToken.configUrl;\n data.graphQL = parsedClientToken.graphQL;\n }\n\n return data;\n}\n\nmodule.exports = createAuthorizationData;\n\n},{\"../lib/constants\":31,\"../lib/vendor/polyfill\":45}],35:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (fn) {\n return function () {\n // IE9 doesn't support passing arguments to setTimeout so we have to emulate it.\n var args = arguments;\n\n setTimeout(function () {\n fn.apply(null, args);\n }, 1);\n };\n};\n\n},{}],36:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction enumerate(values, prefix) {\n prefix = prefix == null ? \"\" : prefix;\n\n return values.reduce(function (enumeration, value) {\n enumeration[value] = prefix + value;\n\n return enumeration;\n }, {});\n}\n\nmodule.exports = enumerate;\n\n},{}],37:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Shared Internal Error Codes\n * @ignore\n * @description These codes should never be experienced by the merchant directly.\n * @property {INTERNAL} INVALID_USE_OF_INTERNAL_FUNCTION Occurs when the client is created without a gateway configuration. Should never happen.\n */\n\n/**\n * @name BraintreeError.Shared Errors - Component Creation Error Codes\n * @description Errors that occur when creating components.\n * @property {MERCHANT} INSTANTIATION_OPTION_REQUIRED Occurs when a component is created that is missing a required option.\n * @property {MERCHANT} INCOMPATIBLE_VERSIONS Occurs when a component is created with a client with a different version than the component.\n * @property {NETWORK} CLIENT_SCRIPT_FAILED_TO_LOAD Occurs when a component attempts to load the Braintree client script, but the request fails.\n */\n\n/**\n * @name BraintreeError.Shared Errors - Component Instance Error Codes\n * @description Errors that occur when using instances of components.\n * @property {MERCHANT} METHOD_CALLED_AFTER_TEARDOWN Occurs when a method is called on a component instance after it has been torn down.\n */\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\n\nmodule.exports = {\n INVALID_USE_OF_INTERNAL_FUNCTION: {\n type: BraintreeError.types.INTERNAL,\n code: \"INVALID_USE_OF_INTERNAL_FUNCTION\",\n },\n INSTANTIATION_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"INSTANTIATION_OPTION_REQUIRED\",\n },\n INCOMPATIBLE_VERSIONS: {\n type: BraintreeError.types.MERCHANT,\n code: \"INCOMPATIBLE_VERSIONS\",\n },\n CLIENT_SCRIPT_FAILED_TO_LOAD: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_SCRIPT_FAILED_TO_LOAD\",\n message: \"Braintree client script could not be loaded.\",\n },\n METHOD_CALLED_AFTER_TEARDOWN: {\n type: BraintreeError.types.MERCHANT,\n code: \"METHOD_CALLED_AFTER_TEARDOWN\",\n },\n};\n\n},{\"./braintree-error\":30}],38:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction convertDateStringToDate(dateString) {\n var splitDate = dateString.split(\"-\");\n\n return new Date(splitDate[0], splitDate[1], splitDate[2]);\n}\n\nfunction isDateStringBeforeOrOn(firstDate, secondDate) {\n return (\n convertDateStringToDate(firstDate) <= convertDateStringToDate(secondDate)\n );\n}\n\nmodule.exports = isDateStringBeforeOrOn;\n\n},{}],39:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar parser;\nvar legalHosts = {\n \"paypal.com\": 1,\n \"braintreepayments.com\": 1,\n \"braintreegateway.com\": 1,\n \"braintree-api.com\": 1,\n};\n\n// endRemoveIf(production)\n\nfunction stripSubdomains(domain) {\n return domain.split(\".\").slice(-2).join(\".\");\n}\n\nfunction isVerifiedDomain(url) {\n var mainDomain;\n\n url = url.toLowerCase();\n\n if (!/^https:/.test(url)) {\n return false;\n }\n\n parser = parser || document.createElement(\"a\");\n parser.href = url;\n mainDomain = stripSubdomains(parser.hostname);\n\n return legalHosts.hasOwnProperty(mainDomain);\n}\n\nmodule.exports = isVerifiedDomain;\n\n},{}],40:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (value) {\n return JSON.parse(JSON.stringify(value));\n};\n\n},{}],41:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (obj) {\n return Object.keys(obj).filter(function (key) {\n return typeof obj[key] === \"function\";\n });\n};\n\n},{}],42:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction once(fn) {\n var called = false;\n\n return function () {\n if (!called) {\n called = true;\n fn.apply(null, arguments);\n }\n };\n}\n\nmodule.exports = once;\n\n},{}],43:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction _notEmpty(obj) {\n var key;\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n return true;\n }\n }\n\n return false;\n}\n\n/* eslint-disable no-mixed-operators */\nfunction _isArray(value) {\n return (\n (value &&\n typeof value === \"object\" &&\n typeof value.length === \"number\" &&\n Object.prototype.toString.call(value) === \"[object Array]\") ||\n false\n );\n}\n/* eslint-enable no-mixed-operators */\n\nfunction hasQueryParams(url) {\n url = url || window.location.href;\n\n return /\\?/.test(url);\n}\n\nfunction parse(url) {\n var query, params;\n\n url = url || window.location.href;\n\n if (!hasQueryParams(url)) {\n return {};\n }\n\n query = url.split(\"?\")[1] || \"\";\n query = query.replace(/#.*$/, \"\").split(\"&\");\n\n params = query.reduce(function (toReturn, keyValue) {\n var parts = keyValue.split(\"=\");\n var key = decodeURIComponent(parts[0]);\n var value = decodeURIComponent(parts[1]);\n\n toReturn[key] = value;\n\n return toReturn;\n }, {});\n\n return params;\n}\n\nfunction stringify(params, namespace) {\n var k, v, p;\n var query = [];\n\n for (p in params) {\n if (!params.hasOwnProperty(p)) {\n continue;\n }\n\n v = params[p];\n\n if (namespace) {\n if (_isArray(params)) {\n k = namespace + \"[]\";\n } else {\n k = namespace + \"[\" + p + \"]\";\n }\n } else {\n k = p;\n }\n if (typeof v === \"object\") {\n query.push(stringify(v, k));\n } else {\n query.push(encodeURIComponent(k) + \"=\" + encodeURIComponent(v));\n }\n }\n\n return query.join(\"&\");\n}\n\nfunction queryify(url, params) {\n url = url || \"\";\n\n if (params != null && typeof params === \"object\" && _notEmpty(params)) {\n url += url.indexOf(\"?\") === -1 ? \"?\" : \"\";\n url += url.indexOf(\"=\") !== -1 ? \"&\" : \"\";\n url += stringify(params);\n }\n\n return url;\n}\n\nmodule.exports = {\n parse: parse,\n stringify: stringify,\n queryify: queryify,\n hasQueryParams: hasQueryParams,\n};\n\n},{}],44:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (snakeString) {\n if (snakeString.indexOf(\"_\") === -1) {\n return snakeString;\n }\n\n return snakeString.toLowerCase().replace(/(\\_\\w)/g, function (match) {\n return match[1].toUpperCase();\n });\n};\n\n},{}],45:[function(_dereq_,module,exports){\n\"use strict\";\n\n// NEXT_MAJOR_VERSION old versions of IE don't have atob, in the\n// next major version, we're dropping support for those versions\n// so we can eliminate the need to have this atob polyfill\nvar atobNormalized = typeof atob === \"function\" ? atob : atobPolyfill;\n\nfunction atobPolyfill(base64String) {\n var a, b, c, b1, b2, b3, b4, i;\n var base64Matcher = new RegExp(\n \"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})([=]{1,2})?$\"\n );\n var characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var result = \"\";\n\n if (!base64Matcher.test(base64String)) {\n throw new Error(\"Non base64 encoded input passed to window.atob polyfill\");\n }\n\n i = 0;\n do {\n b1 = characters.indexOf(base64String.charAt(i++));\n b2 = characters.indexOf(base64String.charAt(i++));\n b3 = characters.indexOf(base64String.charAt(i++));\n b4 = characters.indexOf(base64String.charAt(i++));\n\n a = ((b1 & 0x3f) << 2) | ((b2 >> 4) & 0x3);\n b = ((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf);\n c = ((b3 & 0x3) << 6) | (b4 & 0x3f);\n\n result +=\n String.fromCharCode(a) +\n (b ? String.fromCharCode(b) : \"\") +\n (c ? String.fromCharCode(c) : \"\");\n } while (i < base64String.length);\n\n return result;\n}\n\nmodule.exports = {\n atob: function (base64String) {\n return atobNormalized.call(window, base64String);\n },\n _atob: atobPolyfill,\n};\n\n},{}]},{},[12])(12)\n});\n", "(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}(g.braintree || (g.braintree = {})).hostedFields = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){\n\"use strict\";\nvar scriptPromiseCache = {};\nfunction loadScript(options) {\n var scriptLoadPromise;\n var stringifiedOptions = JSON.stringify(options);\n if (!options.forceScriptReload) {\n scriptLoadPromise = scriptPromiseCache[stringifiedOptions];\n if (scriptLoadPromise) {\n return scriptLoadPromise;\n }\n }\n var script = document.createElement(\"script\");\n var attrs = options.dataAttributes || {};\n var container = options.container || document.head;\n script.src = options.src;\n script.id = options.id || \"\";\n script.async = true;\n if (options.type) {\n script.setAttribute(\"type\", \"\".concat(options.type));\n }\n if (options.crossorigin) {\n script.setAttribute(\"crossorigin\", \"\".concat(options.crossorigin));\n }\n Object.keys(attrs).forEach(function (key) {\n script.setAttribute(\"data-\".concat(key), \"\".concat(attrs[key]));\n });\n scriptLoadPromise = new Promise(function (resolve, reject) {\n script.addEventListener(\"load\", function () {\n resolve(script);\n });\n script.addEventListener(\"error\", function () {\n reject(new Error(\"\".concat(options.src, \" failed to load.\")));\n });\n script.addEventListener(\"abort\", function () {\n reject(new Error(\"\".concat(options.src, \" has aborted.\")));\n });\n container.appendChild(script);\n });\n scriptPromiseCache[stringifiedOptions] = scriptLoadPromise;\n return scriptLoadPromise;\n}\nloadScript.clearCache = function () {\n scriptPromiseCache = {};\n};\nmodule.exports = loadScript;\n\n},{}],2:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/load-script\");\n\n},{\"./dist/load-script\":1}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isAndroid(ua) {\n ua = ua || window.navigator.userAgent;\n return /Android/i.test(ua);\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isChromeOS(ua) {\n ua = ua || window.navigator.userAgent;\n return /CrOS/i.test(ua);\n};\n\n},{}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar isEdge = _dereq_(\"./is-edge\");\nvar isSamsung = _dereq_(\"./is-samsung\");\nvar isDuckDuckGo = _dereq_(\"./is-duckduckgo\");\nvar isOpera = _dereq_(\"./is-opera\");\nvar isSilk = _dereq_(\"./is-silk\");\nmodule.exports = function isChrome(ua) {\n ua = ua || window.navigator.userAgent;\n return ((ua.indexOf(\"Chrome\") !== -1 || ua.indexOf(\"CriOS\") !== -1) &&\n !isEdge(ua) &&\n !isSamsung(ua) &&\n !isDuckDuckGo(ua) &&\n !isOpera(ua) &&\n !isSilk(ua));\n};\n\n},{\"./is-duckduckgo\":6,\"./is-edge\":7,\"./is-opera\":13,\"./is-samsung\":14,\"./is-silk\":15}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isDuckDuckGo(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"DuckDuckGo/\") !== -1;\n};\n\n},{}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isEdge(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"Edge/\") !== -1 || ua.indexOf(\"Edg/\") !== -1;\n};\n\n},{}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isFirefox(ua) {\n ua = ua || window.navigator.userAgent;\n return /Firefox/i.test(ua);\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nvar isIos = _dereq_(\"./is-ios\");\nfunction isGoogleSearchApp(ua) {\n return /\\bGSA\\b/.test(ua);\n}\nmodule.exports = function isIosGoogleSearchApp(ua) {\n ua = ua || window.navigator.userAgent;\n return isIos(ua) && isGoogleSearchApp(ua);\n};\n\n},{\"./is-ios\":11}],10:[function(_dereq_,module,exports){\n\"use strict\";\nvar isIos = _dereq_(\"./is-ios\");\nvar isIosGoogleSearchApp = _dereq_(\"./is-ios-google-search-app\");\nmodule.exports = function isIosWebview(ua) {\n ua = ua || window.navigator.userAgent;\n if (isIos(ua)) {\n // The Google Search iOS app is technically a webview and doesn't support popups.\n if (isIosGoogleSearchApp(ua)) {\n return true;\n }\n // Historically, a webview could be identified by the presence of AppleWebKit and _no_ presence of Safari after.\n return /.+AppleWebKit(?!.*Safari)/i.test(ua);\n }\n return false;\n};\n\n},{\"./is-ios\":11,\"./is-ios-google-search-app\":9}],11:[function(_dereq_,module,exports){\n\"use strict\";\nvar isIpadOS = _dereq_(\"./is-ipados\");\nmodule.exports = function isIos(ua, checkIpadOS, document) {\n if (checkIpadOS === void 0) { checkIpadOS = true; }\n ua = ua || window.navigator.userAgent;\n var iOsTest = /iPhone|iPod|iPad/i.test(ua);\n return checkIpadOS ? iOsTest || isIpadOS(ua, document) : iOsTest;\n};\n\n},{\"./is-ipados\":12}],12:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isIpadOS(ua, document) {\n ua = ua || window.navigator.userAgent;\n document = document || window.document;\n // \"ontouchend\" is used to determine if a browser is on an iPad, otherwise\n // user-agents for iPadOS behave/identify as a desktop browser\n return /Mac|iPad/i.test(ua) && \"ontouchend\" in document;\n};\n\n},{}],13:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isOpera(ua) {\n ua = ua || window.navigator.userAgent;\n return (ua.indexOf(\"OPR/\") !== -1 ||\n ua.indexOf(\"Opera/\") !== -1 ||\n ua.indexOf(\"OPT/\") !== -1);\n};\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isSamsungBrowser(ua) {\n ua = ua || window.navigator.userAgent;\n return /SamsungBrowser/i.test(ua);\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isSilk(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"Silk/\") !== -1;\n};\n\n},{}],16:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-android\");\n\n},{\"./dist/is-android\":3}],17:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-chrome-os\");\n\n},{\"./dist/is-chrome-os\":4}],18:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-chrome\");\n\n},{\"./dist/is-chrome\":5}],19:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-firefox\");\n\n},{\"./dist/is-firefox\":8}],20:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-ios-webview\");\n\n},{\"./dist/is-ios-webview\":10}],21:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-ios\");\n\n},{\"./dist/is-ios\":11}],22:[function(_dereq_,module,exports){\n\"use strict\";\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this._events = {};\n }\n EventEmitter.prototype.on = function (event, callback) {\n if (this._events[event]) {\n this._events[event].push(callback);\n }\n else {\n this._events[event] = [callback];\n }\n };\n EventEmitter.prototype.off = function (event, callback) {\n var eventCallbacks = this._events[event];\n if (!eventCallbacks) {\n return;\n }\n var indexOfCallback = eventCallbacks.indexOf(callback);\n eventCallbacks.splice(indexOfCallback, 1);\n };\n EventEmitter.prototype._emit = function (event) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var eventCallbacks = this._events[event];\n if (!eventCallbacks) {\n return;\n }\n eventCallbacks.forEach(function (callback) {\n callback.apply(void 0, args);\n });\n };\n EventEmitter.prototype.hasListener = function (event) {\n var eventCallbacks = this._events[event];\n if (!eventCallbacks) {\n return false;\n }\n return eventCallbacks.length > 0;\n };\n EventEmitter.createChild = function (ChildObject) {\n ChildObject.prototype = Object.create(EventEmitter.prototype, {\n constructor: ChildObject,\n });\n };\n return EventEmitter;\n}());\nmodule.exports = EventEmitter;\n\n},{}],23:[function(_dereq_,module,exports){\n\"use strict\";\nvar set_attributes_1 = _dereq_(\"./lib/set-attributes\");\nvar default_attributes_1 = _dereq_(\"./lib/default-attributes\");\nvar assign_1 = _dereq_(\"./lib/assign\");\nmodule.exports = function createFrame(options) {\n if (options === void 0) { options = {}; }\n var iframe = document.createElement(\"iframe\");\n var config = (0, assign_1.assign)({}, default_attributes_1.defaultAttributes, options);\n if (config.style && typeof config.style !== \"string\") {\n (0, assign_1.assign)(iframe.style, config.style);\n delete config.style;\n }\n (0, set_attributes_1.setAttributes)(iframe, config);\n if (!iframe.getAttribute(\"id\")) {\n iframe.id = iframe.name;\n }\n return iframe;\n};\n\n},{\"./lib/assign\":24,\"./lib/default-attributes\":25,\"./lib/set-attributes\":26}],24:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assign = void 0;\nfunction assign(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntarget) {\n var objs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n objs[_i - 1] = arguments[_i];\n }\n objs.forEach(function (obj) {\n if (typeof obj !== \"object\") {\n return;\n }\n Object.keys(obj).forEach(function (key) {\n target[key] = obj[key];\n });\n });\n return target;\n}\nexports.assign = assign;\n\n},{}],25:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultAttributes = void 0;\nexports.defaultAttributes = {\n src: \"about:blank\",\n frameBorder: 0,\n allowtransparency: true,\n scrolling: \"no\",\n};\n\n},{}],26:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setAttributes = void 0;\nfunction setAttributes(element, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nattributes) {\n for (var key in attributes) {\n if (attributes.hasOwnProperty(key)) {\n var value = attributes[key];\n if (value == null) {\n element.removeAttribute(key);\n }\n else {\n element.setAttribute(key, value);\n }\n }\n }\n}\nexports.setAttributes = setAttributes;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction uuid() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0;\n var v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n\nmodule.exports = uuid;\n\n},{}],28:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction deferred(fn) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n setTimeout(function () {\n try {\n fn.apply(void 0, args);\n }\n catch (err) {\n /* eslint-disable no-console */\n console.log(\"Error in callback function\");\n console.log(err);\n /* eslint-enable no-console */\n }\n }, 1);\n };\n}\nexports.deferred = deferred;\n\n},{}],29:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction once(fn) {\n var called = false;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n fn.apply(void 0, args);\n }\n };\n}\nexports.once = once;\n\n},{}],30:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable consistent-return */\nfunction promiseOrCallback(promise, callback) {\n if (!callback) {\n return promise;\n }\n promise.then(function (data) { return callback(null, data); }).catch(function (err) { return callback(err); });\n}\nexports.promiseOrCallback = promiseOrCallback;\n\n},{}],31:[function(_dereq_,module,exports){\n\"use strict\";\nvar deferred_1 = _dereq_(\"./lib/deferred\");\nvar once_1 = _dereq_(\"./lib/once\");\nvar promise_or_callback_1 = _dereq_(\"./lib/promise-or-callback\");\nfunction wrapPromise(fn) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var callback;\n var lastArg = args[args.length - 1];\n if (typeof lastArg === \"function\") {\n callback = args.pop();\n callback = once_1.once(deferred_1.deferred(callback));\n }\n // I know, I know, this looks bad. But it's a quirk of the library that\n // we need to allow passing the this context to the original function\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore: this has an implicit any\n return promise_or_callback_1.promiseOrCallback(fn.apply(this, args), callback); // eslint-disable-line no-invalid-this\n };\n}\nwrapPromise.wrapPrototype = function (target, options) {\n if (options === void 0) { options = {}; }\n var ignoreMethods = options.ignoreMethods || [];\n var includePrivateMethods = options.transformPrivateMethods === true;\n var methods = Object.getOwnPropertyNames(target.prototype).filter(function (method) {\n var isNotPrivateMethod;\n var isNonConstructorFunction = method !== \"constructor\" &&\n typeof target.prototype[method] === \"function\";\n var isNotAnIgnoredMethod = ignoreMethods.indexOf(method) === -1;\n if (includePrivateMethods) {\n isNotPrivateMethod = true;\n }\n else {\n isNotPrivateMethod = method.charAt(0) !== \"_\";\n }\n return (isNonConstructorFunction && isNotPrivateMethod && isNotAnIgnoredMethod);\n });\n methods.forEach(function (method) {\n var original = target.prototype[method];\n target.prototype[method] = wrapPromise(original);\n });\n return target;\n};\nmodule.exports = wrapPromise;\n\n},{\"./lib/deferred\":28,\"./lib/once\":29,\"./lib/promise-or-callback\":30}],32:[function(_dereq_,module,exports){\n\"use strict\";\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 cardTypes = _dereq_(\"./lib/card-types\");\nvar add_matching_cards_to_results_1 = _dereq_(\"./lib/add-matching-cards-to-results\");\nvar is_valid_input_type_1 = _dereq_(\"./lib/is-valid-input-type\");\nvar find_best_match_1 = _dereq_(\"./lib/find-best-match\");\nvar clone_1 = _dereq_(\"./lib/clone\");\nvar customCards = {};\nvar cardNames = {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n AMERICAN_EXPRESS: \"american-express\",\n DINERS_CLUB: \"diners-club\",\n DISCOVER: \"discover\",\n JCB: \"jcb\",\n UNIONPAY: \"unionpay\",\n MAESTRO: \"maestro\",\n ELO: \"elo\",\n MIR: \"mir\",\n HIPER: \"hiper\",\n HIPERCARD: \"hipercard\",\n};\nvar ORIGINAL_TEST_ORDER = [\n cardNames.VISA,\n cardNames.MASTERCARD,\n cardNames.AMERICAN_EXPRESS,\n cardNames.DINERS_CLUB,\n cardNames.DISCOVER,\n cardNames.JCB,\n cardNames.UNIONPAY,\n cardNames.MAESTRO,\n cardNames.ELO,\n cardNames.MIR,\n cardNames.HIPER,\n cardNames.HIPERCARD,\n];\nvar testOrder = (0, clone_1.clone)(ORIGINAL_TEST_ORDER);\nfunction findType(cardType) {\n return customCards[cardType] || cardTypes[cardType];\n}\nfunction getAllCardTypes() {\n return testOrder.map(function (cardType) { return (0, clone_1.clone)(findType(cardType)); });\n}\nfunction getCardPosition(name, ignoreErrorForNotExisting) {\n if (ignoreErrorForNotExisting === void 0) { ignoreErrorForNotExisting = false; }\n var position = testOrder.indexOf(name);\n if (!ignoreErrorForNotExisting && position === -1) {\n throw new Error('\"' + name + '\" is not a supported card type.');\n }\n return position;\n}\nfunction creditCardType(cardNumber) {\n var results = [];\n if (!(0, is_valid_input_type_1.isValidInputType)(cardNumber)) {\n return results;\n }\n if (cardNumber.length === 0) {\n return getAllCardTypes();\n }\n testOrder.forEach(function (cardType) {\n var cardConfiguration = findType(cardType);\n (0, add_matching_cards_to_results_1.addMatchingCardsToResults)(cardNumber, cardConfiguration, results);\n });\n var bestMatch = (0, find_best_match_1.findBestMatch)(results);\n if (bestMatch) {\n return [bestMatch];\n }\n return results;\n}\ncreditCardType.getTypeInfo = function (cardType) {\n return (0, clone_1.clone)(findType(cardType));\n};\ncreditCardType.removeCard = function (name) {\n var position = getCardPosition(name);\n testOrder.splice(position, 1);\n};\ncreditCardType.addCard = function (config) {\n var existingCardPosition = getCardPosition(config.type, true);\n customCards[config.type] = config;\n if (existingCardPosition === -1) {\n testOrder.push(config.type);\n }\n};\ncreditCardType.updateCard = function (cardType, updates) {\n var originalObject = customCards[cardType] || cardTypes[cardType];\n if (!originalObject) {\n throw new Error(\"\\\"\".concat(cardType, \"\\\" is not a recognized type. Use `addCard` instead.'\"));\n }\n if (updates.type && originalObject.type !== updates.type) {\n throw new Error(\"Cannot overwrite type parameter.\");\n }\n var clonedCard = (0, clone_1.clone)(originalObject);\n clonedCard = __assign(__assign({}, clonedCard), updates);\n customCards[clonedCard.type] = clonedCard;\n};\ncreditCardType.changeOrder = function (name, position) {\n var currentPosition = getCardPosition(name);\n testOrder.splice(currentPosition, 1);\n testOrder.splice(position, 0, name);\n};\ncreditCardType.resetModifications = function () {\n testOrder = (0, clone_1.clone)(ORIGINAL_TEST_ORDER);\n customCards = {};\n};\ncreditCardType.types = cardNames;\nmodule.exports = creditCardType;\n\n},{\"./lib/add-matching-cards-to-results\":33,\"./lib/card-types\":34,\"./lib/clone\":35,\"./lib/find-best-match\":36,\"./lib/is-valid-input-type\":37}],33:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addMatchingCardsToResults = void 0;\nvar clone_1 = _dereq_(\"./clone\");\nvar matches_1 = _dereq_(\"./matches\");\nfunction addMatchingCardsToResults(cardNumber, cardConfiguration, results) {\n var i, patternLength;\n for (i = 0; i < cardConfiguration.patterns.length; i++) {\n var pattern = cardConfiguration.patterns[i];\n if (!(0, matches_1.matches)(cardNumber, pattern)) {\n continue;\n }\n var clonedCardConfiguration = (0, clone_1.clone)(cardConfiguration);\n if (Array.isArray(pattern)) {\n patternLength = String(pattern[0]).length;\n }\n else {\n patternLength = String(pattern).length;\n }\n if (cardNumber.length >= patternLength) {\n clonedCardConfiguration.matchStrength = patternLength;\n }\n results.push(clonedCardConfiguration);\n break;\n }\n}\nexports.addMatchingCardsToResults = addMatchingCardsToResults;\n\n},{\"./clone\":35,\"./matches\":38}],34:[function(_dereq_,module,exports){\n\"use strict\";\nvar cardTypes = {\n visa: {\n niceType: \"Visa\",\n type: \"visa\",\n patterns: [4],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n mastercard: {\n niceType: \"Mastercard\",\n type: \"mastercard\",\n patterns: [[51, 55], [2221, 2229], [223, 229], [23, 26], [270, 271], 2720],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n \"american-express\": {\n niceType: \"American Express\",\n type: \"american-express\",\n patterns: [34, 37],\n gaps: [4, 10],\n lengths: [15],\n code: {\n name: \"CID\",\n size: 4,\n },\n },\n \"diners-club\": {\n niceType: \"Diners Club\",\n type: \"diners-club\",\n patterns: [[300, 305], 36, 38, 39],\n gaps: [4, 10],\n lengths: [14, 16, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n discover: {\n niceType: \"Discover\",\n type: \"discover\",\n patterns: [6011, [644, 649], 65],\n gaps: [4, 8, 12],\n lengths: [16, 19],\n code: {\n name: \"CID\",\n size: 3,\n },\n },\n jcb: {\n niceType: \"JCB\",\n type: \"jcb\",\n patterns: [2131, 1800, [3528, 3589]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n unionpay: {\n niceType: \"UnionPay\",\n type: \"unionpay\",\n patterns: [\n 620,\n [62100, 62182],\n [62184, 62187],\n [62185, 62197],\n [62200, 62205],\n [622010, 622999],\n 622018,\n [62207, 62209],\n [623, 626],\n 6270,\n 6272,\n 6276,\n [627700, 627779],\n [627781, 627799],\n [6282, 6289],\n 6291,\n 6292,\n 810,\n [8110, 8131],\n [8132, 8151],\n [8152, 8163],\n [8164, 8171],\n ],\n gaps: [4, 8, 12],\n lengths: [14, 15, 16, 17, 18, 19],\n code: {\n name: \"CVN\",\n size: 3,\n },\n },\n maestro: {\n niceType: \"Maestro\",\n type: \"maestro\",\n patterns: [\n 493698,\n [500000, 504174],\n [504176, 506698],\n [506779, 508999],\n [56, 59],\n 63,\n 67,\n 6,\n ],\n gaps: [4, 8, 12],\n lengths: [12, 13, 14, 15, 16, 17, 18, 19],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n elo: {\n niceType: \"Elo\",\n type: \"elo\",\n patterns: [\n 401178,\n 401179,\n 438935,\n 457631,\n 457632,\n 431274,\n 451416,\n 457393,\n 504175,\n [506699, 506778],\n [509000, 509999],\n 627780,\n 636297,\n 636368,\n [650031, 650033],\n [650035, 650051],\n [650405, 650439],\n [650485, 650538],\n [650541, 650598],\n [650700, 650718],\n [650720, 650727],\n [650901, 650978],\n [651652, 651679],\n [655000, 655019],\n [655021, 655058],\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVE\",\n size: 3,\n },\n },\n mir: {\n niceType: \"Mir\",\n type: \"mir\",\n patterns: [[2200, 2204]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: \"CVP2\",\n size: 3,\n },\n },\n hiper: {\n niceType: \"Hiper\",\n type: \"hiper\",\n patterns: [637095, 63737423, 63743358, 637568, 637599, 637609, 637612],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n hipercard: {\n niceType: \"Hipercard\",\n type: \"hipercard\",\n patterns: [606282],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n};\nmodule.exports = cardTypes;\n\n},{}],35:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = void 0;\nfunction clone(originalObject) {\n if (!originalObject) {\n return null;\n }\n return JSON.parse(JSON.stringify(originalObject));\n}\nexports.clone = clone;\n\n},{}],36:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findBestMatch = void 0;\nfunction hasEnoughResultsToDetermineBestMatch(results) {\n var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) { return result.matchStrength; }).length;\n /*\n * if all possible results have a maxStrength property that means the card\n * number is sufficiently long enough to determine conclusively what the card\n * type is\n * */\n return (numberOfResultsWithMaxStrengthProperty > 0 &&\n numberOfResultsWithMaxStrengthProperty === results.length);\n}\nfunction findBestMatch(results) {\n if (!hasEnoughResultsToDetermineBestMatch(results)) {\n return null;\n }\n return results.reduce(function (bestMatch, result) {\n if (!bestMatch) {\n return result;\n }\n /*\n * If the current best match pattern is less specific than this result, set\n * the result as the new best match\n * */\n if (Number(bestMatch.matchStrength) < Number(result.matchStrength)) {\n return result;\n }\n return bestMatch;\n });\n}\nexports.findBestMatch = findBestMatch;\n\n},{}],37:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidInputType = void 0;\nfunction isValidInputType(cardNumber) {\n return typeof cardNumber === \"string\" || cardNumber instanceof String;\n}\nexports.isValidInputType = isValidInputType;\n\n},{}],38:[function(_dereq_,module,exports){\n\"use strict\";\n/*\n * Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42\n * */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matches = void 0;\nfunction matchesRange(cardNumber, min, max) {\n var maxLengthToCheck = String(min).length;\n var substr = cardNumber.substr(0, maxLengthToCheck);\n var integerRepresentationOfCardNumber = parseInt(substr, 10);\n min = parseInt(String(min).substr(0, substr.length), 10);\n max = parseInt(String(max).substr(0, substr.length), 10);\n return (integerRepresentationOfCardNumber >= min &&\n integerRepresentationOfCardNumber <= max);\n}\nfunction matchesPattern(cardNumber, pattern) {\n pattern = String(pattern);\n return (pattern.substring(0, cardNumber.length) ===\n cardNumber.substring(0, pattern.length));\n}\nfunction matches(cardNumber, pattern) {\n if (Array.isArray(pattern)) {\n return matchesRange(cardNumber, pattern[0], pattern[1]);\n }\n return matchesPattern(cardNumber, pattern);\n}\nexports.matches = matches;\n\n},{}],39:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Framebus = void 0;\nvar lib_1 = _dereq_(\"./lib\");\nvar DefaultPromise = (typeof window !== \"undefined\" &&\n window.Promise);\nvar Framebus = /** @class */ (function () {\n function Framebus(options) {\n if (options === void 0) { options = {}; }\n this.origin = options.origin || \"*\";\n this.channel = options.channel || \"\";\n this.verifyDomain = options.verifyDomain;\n // if a targetFrames configuration is not passed in,\n // the default behavior is to broadcast the payload\n // to the top level window or to the frame itself.\n // By default, the broadcast function will loop through\n // all the known siblings and children of the window.\n // If a targetFrames array is passed, it will instead\n // only broadcast to those specified targetFrames\n this.targetFrames = options.targetFrames || [];\n this.limitBroadcastToFramesArray = Boolean(options.targetFrames);\n this.isDestroyed = false;\n this.listeners = [];\n this.hasAdditionalChecksForOnListeners = Boolean(this.verifyDomain || this.limitBroadcastToFramesArray);\n }\n Framebus.setPromise = function (PromiseGlobal) {\n Framebus.Promise = PromiseGlobal;\n };\n Framebus.target = function (options) {\n return new Framebus(options);\n };\n Framebus.prototype.addTargetFrame = function (frame) {\n if (!this.limitBroadcastToFramesArray) {\n return;\n }\n this.targetFrames.push(frame);\n };\n Framebus.prototype.include = function (childWindow) {\n if (childWindow == null) {\n return false;\n }\n if (childWindow.Window == null) {\n return false;\n }\n if (childWindow.constructor !== childWindow.Window) {\n return false;\n }\n lib_1.childWindows.push(childWindow);\n return true;\n };\n Framebus.prototype.target = function (options) {\n return Framebus.target(options);\n };\n Framebus.prototype.emit = function (eventName, data, reply) {\n if (this.isDestroyed) {\n return false;\n }\n var origin = this.origin;\n eventName = this.namespaceEvent(eventName);\n if ((0, lib_1.isntString)(eventName)) {\n return false;\n }\n if ((0, lib_1.isntString)(origin)) {\n return false;\n }\n if (typeof data === \"function\") {\n reply = data;\n data = undefined; // eslint-disable-line no-undefined\n }\n var payload = (0, lib_1.packagePayload)(eventName, origin, data, reply);\n if (!payload) {\n return false;\n }\n if (this.limitBroadcastToFramesArray) {\n this.targetFramesAsWindows().forEach(function (frame) {\n (0, lib_1.sendMessage)(frame, payload, origin);\n });\n }\n else {\n (0, lib_1.broadcast)(payload, {\n origin: origin,\n frame: window.top || window.self,\n });\n }\n return true;\n };\n Framebus.prototype.emitAsPromise = function (eventName, data) {\n var _this = this;\n return new Framebus.Promise(function (resolve, reject) {\n var didAttachListener = _this.emit(eventName, data, function (payload) {\n resolve(payload);\n });\n if (!didAttachListener) {\n reject(new Error(\"Listener not added for \\\"\".concat(eventName, \"\\\"\")));\n }\n });\n };\n Framebus.prototype.on = function (eventName, originalHandler) {\n if (this.isDestroyed) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var origin = this.origin;\n var handler = originalHandler;\n eventName = this.namespaceEvent(eventName);\n if ((0, lib_1.subscriptionArgsInvalid)(eventName, handler, origin)) {\n return false;\n }\n if (this.hasAdditionalChecksForOnListeners) {\n /* eslint-disable no-invalid-this, @typescript-eslint/ban-ts-comment */\n handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // @ts-ignore\n if (!self.passesVerifyDomainCheck(this && this.origin)) {\n return;\n }\n // @ts-ignore\n if (!self.hasMatchingTargetFrame(this && this.source)) {\n return;\n }\n originalHandler.apply(void 0, args);\n };\n /* eslint-enable no-invalid-this, @typescript-eslint/ban-ts-comment */\n }\n this.listeners.push({\n eventName: eventName,\n handler: handler,\n originalHandler: originalHandler,\n });\n lib_1.subscribers[origin] = lib_1.subscribers[origin] || {};\n lib_1.subscribers[origin][eventName] = lib_1.subscribers[origin][eventName] || [];\n lib_1.subscribers[origin][eventName].push(handler);\n return true;\n };\n Framebus.prototype.off = function (eventName, originalHandler) {\n var handler = originalHandler;\n if (this.isDestroyed) {\n return false;\n }\n if (this.verifyDomain) {\n for (var i = 0; i < this.listeners.length; i++) {\n var listener = this.listeners[i];\n if (listener.originalHandler === originalHandler) {\n handler = listener.handler;\n }\n }\n }\n eventName = this.namespaceEvent(eventName);\n var origin = this.origin;\n if ((0, lib_1.subscriptionArgsInvalid)(eventName, handler, origin)) {\n return false;\n }\n var subscriberList = lib_1.subscribers[origin] && lib_1.subscribers[origin][eventName];\n if (!subscriberList) {\n return false;\n }\n for (var i = 0; i < subscriberList.length; i++) {\n if (subscriberList[i] === handler) {\n subscriberList.splice(i, 1);\n return true;\n }\n }\n return false;\n };\n Framebus.prototype.teardown = function () {\n if (this.isDestroyed) {\n return;\n }\n this.isDestroyed = true;\n for (var i = 0; i < this.listeners.length; i++) {\n var listener = this.listeners[i];\n this.off(listener.eventName, listener.handler);\n }\n this.listeners.length = 0;\n };\n Framebus.prototype.passesVerifyDomainCheck = function (origin) {\n if (!this.verifyDomain) {\n // always pass this check if no verifyDomain option was set\n return true;\n }\n return this.checkOrigin(origin);\n };\n Framebus.prototype.targetFramesAsWindows = function () {\n if (!this.limitBroadcastToFramesArray) {\n return [];\n }\n return this.targetFrames\n .map(function (frame) {\n // we can't pull off the contentWindow\n // when the iframe is originally added\n // to the array, because if it is not\n // in the DOM at that time, it will have\n // a contentWindow of `null`\n if (frame instanceof HTMLIFrameElement) {\n return frame.contentWindow;\n }\n return frame;\n })\n .filter(function (win) {\n // just in case an iframe element\n // was removed from the DOM\n // and the contentWindow property\n // is null\n return win;\n });\n };\n Framebus.prototype.hasMatchingTargetFrame = function (source) {\n if (!this.limitBroadcastToFramesArray) {\n // always pass this check if we aren't limiting to the target frames\n return true;\n }\n var matchingFrame = this.targetFramesAsWindows().find(function (frame) {\n return frame === source;\n });\n return Boolean(matchingFrame);\n };\n Framebus.prototype.checkOrigin = function (postMessageOrigin) {\n var merchantHost;\n var a = document.createElement(\"a\");\n a.href = location.href;\n if (a.protocol === \"https:\") {\n merchantHost = a.host.replace(/:443$/, \"\");\n }\n else if (a.protocol === \"http:\") {\n merchantHost = a.host.replace(/:80$/, \"\");\n }\n else {\n merchantHost = a.host;\n }\n var merchantOrigin = a.protocol + \"//\" + merchantHost;\n if (merchantOrigin === postMessageOrigin) {\n return true;\n }\n if (this.verifyDomain) {\n return this.verifyDomain(postMessageOrigin);\n }\n return true;\n };\n Framebus.prototype.namespaceEvent = function (eventName) {\n if (!this.channel) {\n return eventName;\n }\n return \"\".concat(this.channel, \":\").concat(eventName);\n };\n Framebus.Promise = DefaultPromise;\n return Framebus;\n}());\nexports.Framebus = Framebus;\n\n},{\"./lib\":47}],40:[function(_dereq_,module,exports){\n\"use strict\";\nvar lib_1 = _dereq_(\"./lib\");\nvar framebus_1 = _dereq_(\"./framebus\");\n(0, lib_1.attach)();\nmodule.exports = framebus_1.Framebus;\n\n},{\"./framebus\":39,\"./lib\":47}],41:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.detach = exports.attach = void 0;\nvar _1 = _dereq_(\"./\");\nvar isAttached = false;\nfunction attach() {\n if (isAttached || typeof window === \"undefined\") {\n return;\n }\n isAttached = true;\n window.addEventListener(\"message\", _1.onMessage, false);\n}\nexports.attach = attach;\n// removeIf(production)\nfunction detach() {\n isAttached = false;\n window.removeEventListener(\"message\", _1.onMessage, false);\n}\nexports.detach = detach;\n// endRemoveIf(production)\n\n},{\"./\":47}],42:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.broadcastToChildWindows = void 0;\nvar _1 = _dereq_(\"./\");\nfunction broadcastToChildWindows(payload, origin, source) {\n for (var i = _1.childWindows.length - 1; i >= 0; i--) {\n var childWindow = _1.childWindows[i];\n if (childWindow.closed) {\n _1.childWindows.splice(i, 1);\n }\n else if (source !== childWindow) {\n (0, _1.broadcast)(payload, {\n origin: origin,\n frame: childWindow.top,\n });\n }\n }\n}\nexports.broadcastToChildWindows = broadcastToChildWindows;\n\n},{\"./\":47}],43:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.broadcast = void 0;\nvar _1 = _dereq_(\"./\");\nfunction broadcast(payload, options) {\n var i = 0;\n var frameToBroadcastTo;\n var origin = options.origin, frame = options.frame;\n try {\n frame.postMessage(payload, origin);\n if ((0, _1.hasOpener)(frame) && frame.opener.top !== window.top) {\n broadcast(payload, {\n origin: origin,\n frame: frame.opener.top,\n });\n }\n // previously, our max value was frame.frames.length\n // but frames.length inherits from window.length\n // which can be overwritten if a developer does\n // `var length = value;` outside of a function\n // scope, it'll prevent us from looping through\n // all the frames. With this, we loop through\n // until there are no longer any frames\n // eslint-disable-next-line no-cond-assign\n while ((frameToBroadcastTo = frame.frames[i])) {\n broadcast(payload, {\n origin: origin,\n frame: frameToBroadcastTo,\n });\n i++;\n }\n }\n catch (_) {\n /* ignored */\n }\n}\nexports.broadcast = broadcast;\n\n},{\"./\":47}],44:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscribers = exports.childWindows = exports.prefix = void 0;\nexports.prefix = \"/*framebus*/\";\nexports.childWindows = [];\nexports.subscribers = {};\n\n},{}],45:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dispatch = void 0;\nvar _1 = _dereq_(\"./\");\nfunction dispatch(origin, event, data, reply, e) {\n if (!_1.subscribers[origin]) {\n return;\n }\n if (!_1.subscribers[origin][event]) {\n return;\n }\n var args = [];\n if (data) {\n args.push(data);\n }\n if (reply) {\n args.push(reply);\n }\n for (var i = 0; i < _1.subscribers[origin][event].length; i++) {\n _1.subscribers[origin][event][i].apply(e, args);\n }\n}\nexports.dispatch = dispatch;\n\n},{\"./\":47}],46:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasOpener = void 0;\nfunction hasOpener(frame) {\n if (frame.top !== frame) {\n return false;\n }\n if (frame.opener == null) {\n return false;\n }\n if (frame.opener === frame) {\n return false;\n }\n if (frame.opener.closed === true) {\n return false;\n }\n return true;\n}\nexports.hasOpener = hasOpener;\n\n},{}],47:[function(_dereq_,module,exports){\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(_dereq_(\"./attach\"), exports);\n__exportStar(_dereq_(\"./broadcast-to-child-windows\"), exports);\n__exportStar(_dereq_(\"./broadcast\"), exports);\n__exportStar(_dereq_(\"./constants\"), exports);\n__exportStar(_dereq_(\"./dispatch\"), exports);\n__exportStar(_dereq_(\"./has-opener\"), exports);\n__exportStar(_dereq_(\"./is-not-string\"), exports);\n__exportStar(_dereq_(\"./message\"), exports);\n__exportStar(_dereq_(\"./package-payload\"), exports);\n__exportStar(_dereq_(\"./send-message\"), exports);\n__exportStar(_dereq_(\"./subscribe-replier\"), exports);\n__exportStar(_dereq_(\"./subscription-args-invalid\"), exports);\n__exportStar(_dereq_(\"./types\"), exports);\n__exportStar(_dereq_(\"./unpack-payload\"), exports);\n\n},{\"./attach\":41,\"./broadcast\":43,\"./broadcast-to-child-windows\":42,\"./constants\":44,\"./dispatch\":45,\"./has-opener\":46,\"./is-not-string\":48,\"./message\":49,\"./package-payload\":50,\"./send-message\":51,\"./subscribe-replier\":52,\"./subscription-args-invalid\":53,\"./types\":54,\"./unpack-payload\":55}],48:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isntString = void 0;\nfunction isntString(str) {\n return typeof str !== \"string\";\n}\nexports.isntString = isntString;\n\n},{}],49:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onMessage = void 0;\nvar _1 = _dereq_(\"./\");\nfunction onMessage(e) {\n if ((0, _1.isntString)(e.data)) {\n return;\n }\n var payload = (0, _1.unpackPayload)(e);\n if (!payload) {\n return;\n }\n var data = payload.eventData;\n var reply = payload.reply;\n (0, _1.dispatch)(\"*\", payload.event, data, reply, e);\n (0, _1.dispatch)(e.origin, payload.event, data, reply, e);\n (0, _1.broadcastToChildWindows)(e.data, payload.origin, e.source);\n}\nexports.onMessage = onMessage;\n\n},{\"./\":47}],50:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.packagePayload = void 0;\nvar _1 = _dereq_(\"./\");\nfunction packagePayload(event, origin, data, reply) {\n var packaged;\n var payload = {\n event: event,\n origin: origin,\n };\n if (typeof reply === \"function\") {\n payload.reply = (0, _1.subscribeReplier)(reply, origin);\n }\n payload.eventData = data;\n try {\n packaged = _1.prefix + JSON.stringify(payload);\n }\n catch (e) {\n throw new Error(\"Could not stringify event: \".concat(e.message));\n }\n return packaged;\n}\nexports.packagePayload = packagePayload;\n\n},{\"./\":47}],51:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendMessage = void 0;\n/**\n * A basic function for wrapping the sending of postMessages to frames.\n */\nfunction sendMessage(frame, payload, origin) {\n try {\n frame.postMessage(payload, origin);\n }\n catch (error) {\n /* ignored */\n }\n}\nexports.sendMessage = sendMessage;\n\n},{}],52:[function(_dereq_,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscribeReplier = void 0;\nvar framebus_1 = _dereq_(\"../framebus\");\nvar uuid_1 = __importDefault(_dereq_(\"@braintree/uuid\"));\nfunction subscribeReplier(fn, origin) {\n var uuid = (0, uuid_1.default)();\n function replier(data, replyOriginHandler) {\n fn(data, replyOriginHandler);\n framebus_1.Framebus.target({\n origin: origin,\n }).off(uuid, replier);\n }\n framebus_1.Framebus.target({\n origin: origin,\n }).on(uuid, replier);\n return uuid;\n}\nexports.subscribeReplier = subscribeReplier;\n\n},{\"../framebus\":39,\"@braintree/uuid\":56}],53:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscriptionArgsInvalid = void 0;\nvar _1 = _dereq_(\"./\");\nfunction subscriptionArgsInvalid(event, fn, origin) {\n if ((0, _1.isntString)(event)) {\n return true;\n }\n if (typeof fn !== \"function\") {\n return true;\n }\n return (0, _1.isntString)(origin);\n}\nexports.subscriptionArgsInvalid = subscriptionArgsInvalid;\n\n},{\"./\":47}],54:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],55:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unpackPayload = void 0;\nvar _1 = _dereq_(\"./\");\nfunction unpackPayload(e) {\n var payload;\n if (e.data.slice(0, _1.prefix.length) !== _1.prefix) {\n return false;\n }\n try {\n payload = JSON.parse(e.data.slice(_1.prefix.length));\n }\n catch (err) {\n return false;\n }\n if (payload.reply) {\n var replyOrigin_1 = e.origin;\n var replySource_1 = e.source;\n var replyEvent_1 = payload.reply;\n payload.reply = function reply(replyData) {\n if (!replySource_1) {\n return;\n }\n var replyPayload = (0, _1.packagePayload)(replyEvent_1, replyOrigin_1, replyData);\n if (!replyPayload) {\n return;\n }\n replySource_1.postMessage(replyPayload, replyOrigin_1);\n };\n }\n return payload;\n}\nexports.unpackPayload = unpackPayload;\n\n},{\"./\":47}],56:[function(_dereq_,module,exports){\n'use strict';\n\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : r & 0x3 | 0x8;\n\n return v.toString(16);\n });\n}\n\nmodule.exports = uuid;\n\n},{}],57:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIos = exports.isIE9 = exports.isSamsungBrowser = exports.isAndroidChrome = exports.isKitKatWebview = void 0;\n// server side rendering check\nvar UA = (typeof window !== \"undefined\" &&\n window.navigator &&\n window.navigator.userAgent);\n// TODO remove this when browser detection is converted to typescript\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-ignore\nvar isAndroid = _dereq_(\"@braintree/browser-detection/is-android\");\n// @ts-ignore\nvar isChromeOs = _dereq_(\"@braintree/browser-detection/is-chrome-os\");\n// @ts-ignore\nvar isChrome = _dereq_(\"@braintree/browser-detection/is-chrome\");\n// @ts-ignore\nvar isIos = _dereq_(\"@braintree/browser-detection/is-ios\");\nexports.isIos = isIos;\n// @ts-ignore\nvar isIE9 = _dereq_(\"@braintree/browser-detection/is-ie9\");\nexports.isIE9 = isIE9;\n/* eslint-enable @typescript-eslint/ban-ts-comment */\n// Old Android Webviews used specific versions of Chrome with 0.0.0 as their version suffix\n// https://developer.chrome.com/multidevice/user-agent#webview_user_agent\nvar KITKAT_WEBVIEW_REGEX = /Version\\/\\d\\.\\d* Chrome\\/\\d*\\.0\\.0\\.0/;\nfunction isOldSamsungBrowserOrSamsungWebview(ua) {\n return !isChrome(ua) && ua.indexOf(\"Samsung\") > -1;\n}\nfunction isKitKatWebview(ua) {\n if (ua === void 0) { ua = UA; }\n return isAndroid(ua) && KITKAT_WEBVIEW_REGEX.test(ua);\n}\nexports.isKitKatWebview = isKitKatWebview;\nfunction isAndroidChrome(ua) {\n if (ua === void 0) { ua = UA; }\n return (isAndroid(ua) || isChromeOs(ua)) && isChrome(ua);\n}\nexports.isAndroidChrome = isAndroidChrome;\nfunction isSamsungBrowser(ua) {\n if (ua === void 0) { ua = UA; }\n return /SamsungBrowser/.test(ua) || isOldSamsungBrowserOrSamsungWebview(ua);\n}\nexports.isSamsungBrowser = isSamsungBrowser;\n\n},{\"@braintree/browser-detection/is-android\":70,\"@braintree/browser-detection/is-chrome\":72,\"@braintree/browser-detection/is-chrome-os\":71,\"@braintree/browser-detection/is-ie9\":73,\"@braintree/browser-detection/is-ios\":74}],58:[function(_dereq_,module,exports){\n\"use strict\";\nvar device_1 = _dereq_(\"./lib/device\");\nmodule.exports = function supportsInputFormatting() {\n // Digits get dropped in samsung browser\n return !(0, device_1.isSamsungBrowser)();\n};\n\n},{\"./lib/device\":57}],59:[function(_dereq_,module,exports){\narguments[4][3][0].apply(exports,arguments)\n},{\"dup\":3}],60:[function(_dereq_,module,exports){\narguments[4][4][0].apply(exports,arguments)\n},{\"dup\":4}],61:[function(_dereq_,module,exports){\narguments[4][5][0].apply(exports,arguments)\n},{\"./is-duckduckgo\":62,\"./is-edge\":63,\"./is-opera\":67,\"./is-samsung\":68,\"./is-silk\":69,\"dup\":5}],62:[function(_dereq_,module,exports){\narguments[4][6][0].apply(exports,arguments)\n},{\"dup\":6}],63:[function(_dereq_,module,exports){\narguments[4][7][0].apply(exports,arguments)\n},{\"dup\":7}],64:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isIe9(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"MSIE 9\") !== -1;\n};\n\n},{}],65:[function(_dereq_,module,exports){\narguments[4][11][0].apply(exports,arguments)\n},{\"./is-ipados\":66,\"dup\":11}],66:[function(_dereq_,module,exports){\narguments[4][12][0].apply(exports,arguments)\n},{\"dup\":12}],67:[function(_dereq_,module,exports){\narguments[4][13][0].apply(exports,arguments)\n},{\"dup\":13}],68:[function(_dereq_,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],69:[function(_dereq_,module,exports){\narguments[4][15][0].apply(exports,arguments)\n},{\"dup\":15}],70:[function(_dereq_,module,exports){\narguments[4][16][0].apply(exports,arguments)\n},{\"./dist/is-android\":59,\"dup\":16}],71:[function(_dereq_,module,exports){\narguments[4][17][0].apply(exports,arguments)\n},{\"./dist/is-chrome-os\":60,\"dup\":17}],72:[function(_dereq_,module,exports){\narguments[4][18][0].apply(exports,arguments)\n},{\"./dist/is-chrome\":61,\"dup\":18}],73:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-ie9\");\n\n},{\"./dist/is-ie9\":64}],74:[function(_dereq_,module,exports){\narguments[4][21][0].apply(exports,arguments)\n},{\"./dist/is-ios\":65,\"dup\":21}],75:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/supports-input-formatting\");\n\n},{\"./dist/supports-input-formatting\":58}],76:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar errors = _dereq_(\"../shared/errors\");\nvar allowedAttributes = _dereq_(\"../shared/constants\").allowedAttributes;\n\nfunction attributeValidationError(attribute, value) {\n var err;\n\n if (!allowedAttributes.hasOwnProperty(attribute)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED.type,\n code: errors.HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED.code,\n message:\n 'The \"' + attribute + '\" attribute is not supported in Hosted Fields.',\n });\n } else if (value != null && !_isValid(attribute, value)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED.type,\n code: errors.HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED.code,\n message:\n 'Value \"' +\n value +\n '\" is not allowed for \"' +\n attribute +\n '\" attribute.',\n });\n }\n\n return err;\n}\n\nfunction _isValid(attribute, value) {\n if (allowedAttributes[attribute] === \"string\") {\n return typeof value === \"string\" || typeof value === \"number\";\n } else if (allowedAttributes[attribute] === \"boolean\") {\n return String(value) === \"true\" || String(value) === \"false\";\n }\n\n return false;\n}\n\nmodule.exports = attributeValidationError;\n\n},{\"../../lib/braintree-error\":95,\"../shared/constants\":84,\"../shared/errors\":85}],77:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar constants = _dereq_(\"../shared/constants\");\nvar useMin = _dereq_(\"../../lib/use-min\");\n\nmodule.exports = function composeUrl(assetsUrl, componentId, isDebug) {\n return (\n assetsUrl +\n \"/web/\" +\n constants.VERSION +\n \"/html/hosted-fields-frame\" +\n useMin(isDebug) +\n \".html#\" +\n componentId\n );\n};\n\n},{\"../../lib/use-min\":110,\"../shared/constants\":84}],78:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar directions = _dereq_(\"../shared/constants\").navigationDirections;\nvar browserDetection = _dereq_(\"../shared/browser-detection\");\nvar focusIntercept = _dereq_(\"../shared/focus-intercept\");\nvar findParentTags = _dereq_(\"../shared/find-parent-tags\");\nvar userFocusableTagNames = [\"INPUT\", \"SELECT\", \"TEXTAREA\"];\n// Devices with software keyboards do not or cannot focus on input types\n// that do not require keyboard-based interaction.\nvar unfocusedInputTypes = [\n \"hidden\",\n \"button\",\n \"reset\",\n \"submit\",\n \"checkbox\",\n \"radio\",\n \"file\",\n];\n\nfunction _isUserFocusableElement(element) {\n if (!browserDetection.hasSoftwareKeyboard()) {\n // on desktop browsers, the only input type that isn't focusable\n // is the hidden input\n return element.type !== \"hidden\";\n }\n\n return (\n userFocusableTagNames.indexOf(element.tagName) > -1 &&\n unfocusedInputTypes.indexOf(element.type) < 0\n );\n}\n\nfunction _createNavigationHelper(direction, numberOfElementsInForm) {\n switch (direction) {\n case directions.BACK:\n return {\n checkIndexBounds: function (index) {\n return index < 0;\n },\n indexChange: -1,\n };\n case directions.FORWARD:\n return {\n checkIndexBounds: function (index) {\n return index > numberOfElementsInForm - 1;\n },\n indexChange: 1,\n };\n default:\n }\n\n return {};\n}\n\nfunction _findFirstFocusableElement(elementsInForm) {\n var elementsIndex, element;\n\n for (\n elementsIndex = 0;\n elementsIndex < elementsInForm.length;\n elementsIndex++\n ) {\n element = elementsInForm[elementsIndex];\n\n if (_isUserFocusableElement(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nmodule.exports = {\n removeExtraFocusElements: function (checkoutForm, onRemoveFocusIntercepts) {\n var elements = Array.prototype.slice.call(checkoutForm.elements);\n var firstFocusableInput = _findFirstFocusableElement(elements);\n var lastFocusableInput = _findFirstFocusableElement(elements.reverse());\n\n // these should never be identical, because there will at least be the\n // before and the after input\n [firstFocusableInput, lastFocusableInput].forEach(function (input) {\n if (!input) {\n return;\n }\n\n if (focusIntercept.matchFocusElement(input.getAttribute(\"id\"))) {\n onRemoveFocusIntercepts(input.getAttribute(\"id\"));\n }\n });\n },\n\n createFocusChangeHandler: function (hostedFieldsId, callbacks) {\n return function (data) {\n var currentIndex, targetElement, checkoutForm, navHelper;\n var sourceElement = document.getElementById(\n \"bt-\" + data.field + \"-\" + data.direction + \"-\" + hostedFieldsId\n );\n\n if (!sourceElement) {\n return;\n }\n\n checkoutForm = findParentTags(sourceElement, \"form\")[0];\n\n if (document.forms.length < 1 || !checkoutForm) {\n callbacks.onRemoveFocusIntercepts();\n\n return;\n }\n\n checkoutForm = [].slice.call(checkoutForm.elements);\n currentIndex = checkoutForm.indexOf(sourceElement);\n navHelper = _createNavigationHelper(data.direction, checkoutForm.length);\n\n do {\n currentIndex += navHelper.indexChange;\n if (navHelper.checkIndexBounds(currentIndex)) {\n return;\n }\n targetElement = checkoutForm[currentIndex];\n } while (!_isUserFocusableElement(targetElement));\n\n if (focusIntercept.matchFocusElement(targetElement.getAttribute(\"id\"))) {\n callbacks.onTriggerInputFocus(\n targetElement.getAttribute(\"data-braintree-type\")\n );\n } else {\n targetElement.focus();\n }\n };\n },\n};\n\n},{\"../shared/browser-detection\":83,\"../shared/constants\":84,\"../shared/find-parent-tags\":86,\"../shared/focus-intercept\":87}],79:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar allowedStyles = _dereq_(\"../shared/constants\").allowedStyles;\n\nmodule.exports = function getStylesFromClass(cssClass) {\n var element = document.createElement(\"input\");\n var styles = {};\n var computedStyles;\n\n if (cssClass[0] === \".\") {\n cssClass = cssClass.substring(1);\n }\n\n element.className = cssClass;\n element.style.display = \"none !important\";\n element.style.position = \"fixed !important\";\n element.style.left = \"-99999px !important\";\n element.style.top = \"-99999px !important\";\n document.body.appendChild(element);\n\n computedStyles = window.getComputedStyle(element);\n\n allowedStyles.forEach(function (style) {\n var value = computedStyles[style];\n\n if (value) {\n styles[style] = value;\n }\n });\n\n document.body.removeChild(element);\n\n return styles;\n};\n\n},{\"../shared/constants\":84}],80:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar assign = _dereq_(\"../../lib/assign\").assign;\nvar createAssetsUrl = _dereq_(\"../../lib/create-assets-url\");\nvar isVerifiedDomain = _dereq_(\"../../lib/is-verified-domain\");\nvar Destructor = _dereq_(\"../../lib/destructor\");\nvar iFramer = _dereq_(\"@braintree/iframer\");\nvar Bus = _dereq_(\"framebus\");\nvar createDeferredClient = _dereq_(\"../../lib/create-deferred-client\");\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar composeUrl = _dereq_(\"./compose-url\");\nvar getStylesFromClass = _dereq_(\"./get-styles-from-class\");\nvar constants = _dereq_(\"../shared/constants\");\nvar errors = _dereq_(\"../shared/errors\");\nvar INTEGRATION_TIMEOUT_MS =\n _dereq_(\"../../lib/constants\").INTEGRATION_TIMEOUT_MS;\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar findParentTags = _dereq_(\"../shared/find-parent-tags\");\nvar browserDetection = _dereq_(\"../shared/browser-detection\");\nvar events = constants.events;\nvar EventEmitter = _dereq_(\"@braintree/event-emitter\");\nvar injectFrame = _dereq_(\"./inject-frame\");\nvar analytics = _dereq_(\"../../lib/analytics\");\nvar allowedFields = constants.allowedFields;\nvar methods = _dereq_(\"../../lib/methods\");\nvar shadow = _dereq_(\"../../lib/shadow\");\nvar findRootNode = _dereq_(\"../../lib/find-root-node\");\nvar convertMethodsToError = _dereq_(\"../../lib/convert-methods-to-error\");\nvar sharedErrors = _dereq_(\"../../lib/errors\");\nvar getCardTypes = _dereq_(\"../shared/get-card-types\");\nvar attributeValidationError = _dereq_(\"./attribute-validation-error\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar focusChange = _dereq_(\"./focus-change\");\nvar destroyFocusIntercept = _dereq_(\"../shared/focus-intercept\").destroy;\n\nvar SAFARI_FOCUS_TIMEOUT = 5;\n\n/**\n * @typedef {object} HostedFields~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {object} authenticationInsight Info about the [regulatory environment](https://developer.paypal.com/braintree/docs/guides/3d-secure/advanced-options/javascript/v3#authentication-insight) of the tokenized card. Only available if `authenticationInsight.merchantAccountId` is passed in the `tokenize` method options.\n * @property {string} authenticationInsight.regulationEnvironment The [regulation environment](https://developer.paypal.com/braintree/docs/guides/3d-secure/advanced-options/javascript/v3#authentication-insight) for the tokenized card.\n * @property {object} details Additional account details.\n * @property {string} details.bin The BIN number of the card.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.expirationMonth The expiration month of the card.\n * @property {string} details.expirationYear The expiration year of the card.\n * @property {string} details.cardholderName The cardholder name tokenized with the card.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, always `CreditCard`.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * @typedef {object} HostedFields~stateObject\n * @description The event payload sent from {@link HostedFields#on|on} or {@link HostedFields#getState|getState}.\n * @property {HostedFields~hostedFieldsCard[]} cards\n * This will return an array of potential {@link HostedFields~hostedFieldsCard|cards}. If the card type has been determined, the array will contain only one card.\n * Internally, Hosted Fields uses <a href=\"https://github.com/braintree/credit-card-type\">credit-card-type</a>,\n * an open-source card detection library.\n * @property {string} emittedBy\n * The name of the field associated with an event. This will not be included if returned by {@link HostedFields#getState|getState}. It will be one of the following strings:<br>\n * - `\"number\"`\n * - `\"cvv\"`\n * - `\"expirationDate\"`\n * - `\"expirationMonth\"`\n * - `\"expirationYear\"`\n * - `\"postalCode\"`\n * - `\"cardholderName\"`\n * @property {object} fields\n * @property {?HostedFields~hostedFieldsFieldData} fields.number {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the number field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.cvv {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the CVV field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.expirationDate {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the expiration date field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.expirationMonth {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the expiration month field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.expirationYear {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the expiration year field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.postalCode {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the postal code field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.cardholderName {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the cardholder name field, if it is present.\n */\n\n/**\n * @typedef {object} HostedFields~binPayload\n * @description The event payload sent from {@link HostedFields#on|on} when the {@link HostedFields#event:binAvailable|binAvailable} event is emitted.\n * @property {string} bin The first 6 digits of the card number.\n */\n\n/**\n * @typedef {object} HostedFields~hostedFieldsFieldData\n * @description Data about Hosted Fields fields, sent in {@link HostedFields~stateObject|stateObjects}.\n * @property {HTMLElement} container Reference to the container DOM element on your page associated with the current event.\n * @property {boolean} isFocused Whether or not the input is currently focused.\n * @property {boolean} isEmpty Whether or not the user has entered a value in the input.\n * @property {boolean} isPotentiallyValid\n * A determination based on the future validity of the input value.\n * This is helpful when a user is entering a card number and types <code>\"41\"</code>.\n * While that value is not valid for submission, it is still possible for\n * it to become a fully qualified entry. However, if the user enters <code>\"4x\"</code>\n * it is clear that the card number can never become valid and isPotentiallyValid will\n * return false.\n * @property {boolean} isValid Whether or not the value of the associated input is <i>fully</i> qualified for submission.\n */\n\n/**\n * @typedef {object} HostedFields~hostedFieldsCard\n * @description Information about the card type, sent in {@link HostedFields~stateObject|stateObjects}.\n * @property {string} type The code-friendly representation of the card type. It will be one of the following strings:\n * - `american-express`\n * - `diners-club`\n * - `discover`\n * - `jcb`\n * - `maestro`\n * - `master-card`\n * - `unionpay`\n * - `visa`\n * @property {string} niceType The pretty-printed card type. It will be one of the following strings:\n * - `American Express`\n * - `Diners Club`\n * - `Discover`\n * - `JCB`\n * - `Maestro`\n * - `MasterCard`\n * - `UnionPay`\n * - `Visa`\n * @property {object} code\n * This object contains data relevant to the security code requirements of the card brand.\n * For example, on a Visa card there will be a <code>CVV</code> of 3 digits, whereas an\n * American Express card requires a 4-digit <code>CID</code>.\n * @property {string} code.name <code>\"CVV\"</code> <code>\"CID\"</code> <code>\"CVC\"</code>\n * @property {number} code.size The expected length of the security code. Typically, this is 3 or 4.\n */\n\n/**\n * @name HostedFields#on\n * @function\n * @param {string} event The name of the event to which you are subscribing.\n * @param {function} handler A callback to handle the event.\n * @description Subscribes a handler function to a named event.\n *\n * **Events that emit a {@link HostedFields~stateObject|stateObject}.**\n * * {@link HostedFields#event:blur|blur}\n * * {@link HostedFields#event:focus|focus}\n * * {@link HostedFields#event:empty|empty}\n * * {@link HostedFields#event:notEmpty|notEmpty}\n * * {@link HostedFields#event:cardTypeChange|cardTypeChange}\n * * {@link HostedFields#event:validityChange|validityChange}\n * * {@link HostedFields#event:inputSubmitRequest|inputSubmitRequest}\n *\n * **Other Events**\n * * {@link HostedFields#event:binAvailable|binAvailable} - emits a {@link HostedFields~binPayload|bin payload}. Note: If you are using a [Referrer-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy) header that prevents the origin from being sent, this event will not fire.\n * @example\n * <caption>Listening to a Hosted Field event, in this case 'focus'</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('focus', function (event) {\n * console.log(event.emittedBy, 'has been focused');\n * });\n * });\n * @returns {void}\n */\n\n/**\n * @name HostedFields#off\n * @function\n * @param {string} event The name of the event to which you are unsubscribing.\n * @param {function} handler The callback for the event you are unsubscribing from.\n * @description Unsubscribes the handler function to a named event.\n * @example\n * <caption>Subscribing and then unsubscribing from a Hosted Field event, in this case 'focus'</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * var callback = function (event) {\n * console.log(event.emittedBy, 'has been focused');\n * };\n * hostedFieldsInstance.on('focus', callback);\n *\n * // later on\n * hostedFieldsInstance.off('focus', callback);\n * });\n * @returns {void}\n */\n\n/**\n * This event is emitted when the user requests submission of an input field, such as by pressing the Enter or Return key on their keyboard, or mobile equivalent.\n * @event HostedFields#inputSubmitRequest\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Clicking a submit button upon hitting Enter (or equivalent) within a Hosted Field</caption>\n * var hostedFields = require('braintree-web/hosted-fields');\n * var submitButton = document.querySelector('input[type=\"submit\"]');\n *\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('inputSubmitRequest', function () {\n * // User requested submission, e.g. by pressing Enter or equivalent\n * submitButton.click();\n * });\n * });\n */\n\n/**\n * This event is emitted when a field transitions from having data to being empty.\n * @event HostedFields#empty\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to an empty event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('empty', function (event) {\n * console.log(event.emittedBy, 'is now empty');\n * });\n * });\n */\n\n/**\n * This event is emitted when a field transitions from being empty to having data.\n * @event HostedFields#notEmpty\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to an notEmpty event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('notEmpty', function (event) {\n * console.log(event.emittedBy, 'is now not empty');\n * });\n * });\n */\n\n/**\n * This event is emitted when a field loses focus.\n * @event HostedFields#blur\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to a blur event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('blur', function (event) {\n * console.log(event.emittedBy, 'lost focus');\n * });\n * });\n */\n\n/**\n * This event is emitted when a field gains focus.\n * @event HostedFields#focus\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to a focus event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('focus', function (event) {\n * console.log(event.emittedBy, 'gained focus');\n * });\n * });\n */\n\n/**\n * This event is emitted when activity within the number field has changed such that the possible card type has changed.\n * @event HostedFields#cardTypeChange\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to a cardTypeChange event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('cardTypeChange', function (event) {\n * if (event.cards.length === 1) {\n * console.log(event.cards[0].type);\n * } else {\n * console.log('Type of card not yet known');\n * }\n * });\n * });\n */\n\n/**\n * This event is emitted when the validity of a field has changed. Validity is represented in the {@link HostedFields~stateObject|stateObject} as two booleans: `isValid` and `isPotentiallyValid`.\n * @event HostedFields#validityChange\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to a validityChange event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('validityChange', function (event) {\n * var field = event.fields[event.emittedBy];\n *\n * if (field.isValid) {\n * console.log(event.emittedBy, 'is fully valid');\n * } else if (field.isPotentiallyValid) {\n * console.log(event.emittedBy, 'is potentially valid');\n * } else {\n * console.log(event.emittedBy, 'is not valid');\n * }\n * });\n * });\n */\n\n/**\n * This event is emitted when the first 6 digits of the card number have been entered by the customer.\n * @event HostedFields#binAvailable\n * @type {string}\n * @example\n * <caption>Listening to a `binAvailable` event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('binAvailable', function (event) {\n * event.bin // send bin to 3rd party bin service\n * });\n * });\n */\n\nfunction createInputEventHandler(fields) {\n return function (eventData) {\n var field;\n var merchantPayload = eventData.merchantPayload;\n var emittedBy = merchantPayload.emittedBy;\n var container = fields[emittedBy].containerElement;\n\n Object.keys(merchantPayload.fields).forEach(function (key) {\n merchantPayload.fields[key].container = fields[key].containerElement;\n });\n\n field = merchantPayload.fields[emittedBy];\n\n container.classList.toggle(\n constants.externalClasses.FOCUSED,\n field.isFocused\n );\n container.classList.toggle(constants.externalClasses.VALID, field.isValid);\n\n container.classList.toggle(\n constants.externalClasses.INVALID,\n !field.isPotentiallyValid\n );\n\n // eslint-disable-next-line no-invalid-this\n this._state = {\n cards: merchantPayload.cards,\n fields: merchantPayload.fields,\n };\n\n this._emit(eventData.type, merchantPayload); // eslint-disable-line no-invalid-this\n };\n}\n\nfunction isVisibleEnough(node) {\n var boundingBox = node.getBoundingClientRect();\n var verticalMidpoint = Math.floor(boundingBox.height / 2);\n var horizontalMidpoint = Math.floor(boundingBox.width / 2);\n\n return (\n boundingBox.top <\n (window.innerHeight - verticalMidpoint ||\n document.documentElement.clientHeight - verticalMidpoint) &&\n boundingBox.right > horizontalMidpoint &&\n boundingBox.bottom > verticalMidpoint &&\n boundingBox.left <\n (window.innerWidth - horizontalMidpoint ||\n document.documentElement.clientWidth - horizontalMidpoint)\n );\n}\n\n/**\n * @class HostedFields\n * @param {object} options The Hosted Fields {@link module:braintree-web/hosted-fields.create create} options.\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/hosted-fields.create|braintree-web.hosted-fields.create} instead.</strong>\n * @classdesc This class represents a Hosted Fields component produced by {@link module:braintree-web/hosted-fields.create|braintree-web/hosted-fields.create}. Instances of this class have methods for interacting with the input fields within Hosted Fields' iframes.\n */\nfunction HostedFields(options) {\n var failureTimeout, clientConfig, assetsUrl, isDebug, hostedFieldsUrl;\n var self = this;\n var fields = {};\n var frameReadyPromiseResolveFunctions = {};\n var frameReadyPromises = [];\n var componentId = uuid();\n\n this._merchantConfigurationOptions = assign({}, options);\n\n if (options.client) {\n clientConfig = options.client.getConfiguration();\n assetsUrl = clientConfig.gatewayConfiguration.assetsUrl;\n isDebug = clientConfig.isDebug;\n } else {\n assetsUrl = createAssetsUrl.create(options.authorization);\n isDebug = Boolean(options.isDebug);\n }\n\n this._clientPromise = createDeferredClient.create({\n client: options.client,\n authorization: options.authorization,\n debug: isDebug,\n assetsUrl: assetsUrl,\n name: \"Hosted Fields\",\n });\n\n hostedFieldsUrl = composeUrl(assetsUrl, componentId, isDebug);\n\n if (!options.fields || Object.keys(options.fields).length === 0) {\n throw new BraintreeError({\n type: sharedErrors.INSTANTIATION_OPTION_REQUIRED.type,\n code: sharedErrors.INSTANTIATION_OPTION_REQUIRED.code,\n message: \"options.fields is required when instantiating Hosted Fields.\",\n });\n }\n\n EventEmitter.call(this);\n\n this._injectedNodes = [];\n this._destructor = new Destructor();\n this._fields = fields;\n this._state = {\n fields: {},\n cards: getCardTypes(\"\"),\n };\n\n this._bus = new Bus({\n channel: componentId,\n verifyDomain: isVerifiedDomain,\n targetFrames: [window],\n });\n\n this._destructor.registerFunctionForTeardown(function () {\n self._bus.teardown();\n });\n\n // NEXT_MAJOR_VERSION analytics events should have present tense verbs\n if (!options.client) {\n analytics.sendEvent(\n this._clientPromise,\n \"custom.hosted-fields.initialized.deferred-client\"\n );\n } else {\n analytics.sendEvent(\n this._clientPromise,\n \"custom.hosted-fields.initialized\"\n );\n }\n\n Object.keys(options.fields).forEach(\n function (key) {\n var field, externalContainer, internalContainer, frame, frameReadyPromise;\n\n if (!constants.allowedFields.hasOwnProperty(key)) {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_INVALID_FIELD_KEY.type,\n code: errors.HOSTED_FIELDS_INVALID_FIELD_KEY.code,\n message: '\"' + key + '\" is not a valid field.',\n });\n }\n\n field = options.fields[key];\n // NEXT_MAJOR_VERSION remove selector as an option\n // and simply make the API take a container\n externalContainer = field.container || field.selector;\n\n if (typeof externalContainer === \"string\") {\n externalContainer = document.querySelector(externalContainer);\n }\n\n if (!externalContainer || externalContainer.nodeType !== 1) {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.type,\n code: errors.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.code,\n message: errors.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.message,\n details: {\n fieldSelector: field.selector,\n fieldContainer: field.container,\n fieldKey: key,\n },\n });\n } else if (\n externalContainer.querySelector('iframe[name^=\"braintree-\"]')\n ) {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.type,\n code: errors.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.code,\n message: errors.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.message,\n details: {\n fieldSelector: field.selector,\n fieldContainer: field.container,\n fieldKey: key,\n },\n });\n }\n\n internalContainer = externalContainer;\n\n if (shadow.isShadowElement(internalContainer)) {\n internalContainer = shadow.transformToSlot(\n internalContainer,\n \"height: 100%\"\n );\n }\n\n if (field.maxlength && typeof field.maxlength !== \"number\") {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,\n message: \"The value for maxlength must be a number.\",\n details: {\n fieldKey: key,\n },\n });\n }\n\n if (field.minlength && typeof field.minlength !== \"number\") {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,\n message: \"The value for minlength must be a number.\",\n details: {\n fieldKey: key,\n },\n });\n }\n\n frame = iFramer({\n type: key,\n name: \"braintree-hosted-field-\" + key,\n style: constants.defaultIFrameStyle,\n title:\n field.iframeTitle ||\n \"Secure Credit Card Frame - \" + constants.allowedFields[key].label,\n });\n this._bus.addTargetFrame(frame);\n\n this._injectedNodes.push.apply(\n this._injectedNodes,\n injectFrame(componentId, frame, internalContainer, function () {\n self.focus(key);\n })\n );\n\n this._setupLabelFocus(key, externalContainer);\n fields[key] = {\n frameElement: frame,\n containerElement: externalContainer,\n };\n frameReadyPromise = new Promise(function (resolve) {\n frameReadyPromiseResolveFunctions[key] = resolve;\n });\n frameReadyPromises.push(frameReadyPromise);\n\n this._state.fields[key] = {\n isEmpty: true,\n isValid: false,\n isPotentiallyValid: true,\n isFocused: false,\n container: externalContainer,\n };\n\n // prevents loading the iframe from blocking the code\n setTimeout(function () {\n frame.src = hostedFieldsUrl;\n }, 0);\n }.bind(this)\n );\n\n if (this._merchantConfigurationOptions.styles) {\n Object.keys(this._merchantConfigurationOptions.styles).forEach(function (\n selector\n ) {\n var className = self._merchantConfigurationOptions.styles[selector];\n\n if (typeof className === \"string\") {\n self._merchantConfigurationOptions.styles[selector] =\n getStylesFromClass(className);\n }\n });\n }\n\n this._bus.on(events.REMOVE_FOCUS_INTERCEPTS, function (data) {\n destroyFocusIntercept(data && data.id);\n });\n\n this._bus.on(\n events.TRIGGER_FOCUS_CHANGE,\n focusChange.createFocusChangeHandler(componentId, {\n onRemoveFocusIntercepts: function (element) {\n self._bus.emit(events.REMOVE_FOCUS_INTERCEPTS, {\n id: element,\n });\n },\n onTriggerInputFocus: function (targetType) {\n self.focus(targetType);\n },\n })\n );\n\n this._bus.on(events.READY_FOR_CLIENT, function (reply) {\n self._clientPromise.then(function (client) {\n reply(client);\n });\n });\n\n this._bus.on(events.CARD_FORM_ENTRY_HAS_BEGUN, function () {\n analytics.sendEvent(self._clientPromise, \"hosted-fields.input.started\");\n });\n\n this._bus.on(events.BIN_AVAILABLE, function (bin) {\n self._emit(\"binAvailable\", {\n bin: bin,\n });\n });\n\n failureTimeout = setTimeout(function () {\n analytics.sendEvent(\n self._clientPromise,\n \"custom.hosted-fields.load.timed-out\"\n );\n self._emit(\"timeout\");\n }, INTEGRATION_TIMEOUT_MS);\n\n Promise.all(frameReadyPromises).then(function (results) {\n var reply = results[0];\n\n clearTimeout(failureTimeout);\n reply(\n formatMerchantConfigurationForIframes(self._merchantConfigurationOptions)\n );\n\n self._cleanUpFocusIntercepts();\n\n self._emit(\"ready\");\n });\n\n this._bus.on(events.FRAME_READY, function (data, reply) {\n frameReadyPromiseResolveFunctions[data.field](reply);\n });\n\n this._bus.on(events.INPUT_EVENT, createInputEventHandler(fields).bind(this));\n\n this._destructor.registerFunctionForTeardown(function () {\n var j, node, parent;\n\n for (j = 0; j < self._injectedNodes.length; j++) {\n node = self._injectedNodes[j];\n parent = node.parentNode;\n\n parent.removeChild(node);\n\n parent.classList.remove(\n constants.externalClasses.FOCUSED,\n constants.externalClasses.INVALID,\n constants.externalClasses.VALID\n );\n }\n });\n\n this._destructor.registerFunctionForTeardown(function () {\n destroyFocusIntercept();\n });\n\n this._destructor.registerFunctionForTeardown(function () {\n var methodNames = methods(HostedFields.prototype).concat(\n methods(EventEmitter.prototype)\n );\n\n convertMethodsToError(self, methodNames);\n });\n}\n\nEventEmitter.createChild(HostedFields);\n\nHostedFields.prototype._setupLabelFocus = function (type, container) {\n var labels, i;\n var self = this;\n var rootNode = findRootNode(container);\n\n if (container.id == null) {\n return;\n }\n\n function triggerFocus() {\n self.focus(type);\n }\n\n // find any labels in the normal DOM\n labels = Array.prototype.slice.call(\n document.querySelectorAll('label[for=\"' + container.id + '\"]')\n );\n if (rootNode !== document) {\n // find any labels within the shadow dom\n labels = labels.concat(\n Array.prototype.slice.call(\n rootNode.querySelectorAll('label[for=\"' + container.id + '\"]')\n )\n );\n }\n // find any labels surrounding the container that don't also have the `for` attribute\n labels = labels.concat(findParentTags(container, \"label\"));\n // filter out any accidental duplicates\n labels = labels.filter(function (label, index, arr) {\n return arr.indexOf(label) === index;\n });\n\n for (i = 0; i < labels.length; i++) {\n labels[i].addEventListener(\"click\", triggerFocus, false);\n }\n\n this._destructor.registerFunctionForTeardown(function () {\n for (i = 0; i < labels.length; i++) {\n labels[i].removeEventListener(\"click\", triggerFocus, false);\n }\n });\n};\n\nHostedFields.prototype._getAnyFieldContainer = function () {\n var self = this;\n\n return Object.keys(this._fields).reduce(function (found, field) {\n return found || self._fields[field].containerElement;\n }, null);\n};\n\nHostedFields.prototype._cleanUpFocusIntercepts = function () {\n var iframeContainer, checkoutForm;\n\n if (document.forms.length < 1) {\n this._bus.emit(events.REMOVE_FOCUS_INTERCEPTS);\n } else {\n iframeContainer = this._getAnyFieldContainer();\n checkoutForm = findParentTags(iframeContainer, \"form\")[0];\n\n if (checkoutForm) {\n focusChange.removeExtraFocusElements(\n checkoutForm,\n function (id) {\n this._bus.emit(events.REMOVE_FOCUS_INTERCEPTS, {\n id: id,\n });\n }.bind(this)\n );\n } else {\n this._bus.emit(events.REMOVE_FOCUS_INTERCEPTS);\n }\n }\n};\n\nHostedFields.prototype._attachInvalidFieldContainersToError = function (err) {\n if (\n !(\n err.details &&\n err.details.invalidFieldKeys &&\n err.details.invalidFieldKeys.length > 0\n )\n ) {\n return;\n }\n err.details.invalidFields = {};\n err.details.invalidFieldKeys.forEach(\n function (field) {\n err.details.invalidFields[field] = this._fields[field].containerElement;\n }.bind(this)\n );\n};\n\n/**\n * Get card verification challenges, such as requirements for cvv and postal code.\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. If no callback is provided, `getChallenges` returns a promise.\n * @example\n * hostedFieldsInstance.getChallenges().then(function (challenges) {\n * challenges // ['cvv', 'postal_code']\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.getChallenges = function () {\n return this._clientPromise.then(function (client) {\n return client.getConfiguration().gatewayConfiguration.challenges;\n });\n};\n\n/**\n * Get supported card types configured in the Braintree Control Panel\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. If no callback is provided, `getSupportedCardTypes` returns a promise.\n * @example\n * hostedFieldsInstance.getSupportedCardTypes().then(function (cardTypes) {\n * cardTypes // ['Visa', 'American Express', 'Mastercard']\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.getSupportedCardTypes = function () {\n return this._clientPromise.then(function (client) {\n var cards = client\n .getConfiguration()\n .gatewayConfiguration.creditCards.supportedCardTypes.map(function (\n cardType\n ) {\n if (cardType === \"MasterCard\") {\n // Mastercard changed their branding. We can't update our\n // config without creating a breaking change, so we just\n // hard code the change here\n return \"Mastercard\";\n }\n\n return cardType;\n });\n\n return cards;\n });\n};\n\n/**\n * Cleanly remove anything set up by {@link module:braintree-web/hosted-fields.create|create}.\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. No data is returned if teardown completes successfully. If no callback is provided, `teardown` returns a promise.\n * @example\n * hostedFieldsInstance.teardown(function (teardownErr) {\n * if (teardownErr) {\n * console.error('Could not tear down Hosted Fields!');\n * } else {\n * console.info('Hosted Fields has been torn down!');\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.teardown = function () {\n var self = this;\n\n return new Promise(function (resolve, reject) {\n self._destructor.teardown(function (err) {\n analytics.sendEvent(\n self._clientPromise,\n \"custom.hosted-fields.teardown-completed\"\n );\n\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n};\n\n/**\n * Tokenizes fields and returns a nonce payload.\n * @public\n * @param {object} [options] All tokenization options for the Hosted Fields component.\n * @param {boolean} [options.vault=false] When true, will vault the tokenized card. Cards will only be vaulted when using a client created with a client token that includes a customer ID. Note: merchants using Advanced Fraud Tools should not use this option, as device data will not be included.\n * @param {object} [options.authenticationInsight] Options for checking authentication insight - the [regulatory environment](https://developer.paypal.com/braintree/docs/guides/3d-secure/advanced-options/javascript/v3#authentication-insight) of the tokenized card.\n * @param {string} options.authenticationInsight.merchantAccountId The Braintree merchant account id to use to look up the authentication insight information.\n * @param {array} [options.fieldsToTokenize] By default, all fields will be tokenized. You may specify which fields specifically you wish to tokenize with this property. Valid options are `'number'`, `'cvv'`, `'expirationDate'`, `'expirationMonth'`, `'expirationYear'`, `'postalCode'`, `'cardholderName'`.\n * @param {string} [options.cardholderName] When supplied, the cardholder name to be tokenized with the contents of the fields.\n * @param {string} [options.billingAddress.postalCode] When supplied, this postal code will be tokenized along with the contents of the fields. If a postal code is provided as part of the Hosted Fields configuration, the value of the field will be tokenized and this value will be ignored.\n * @param {string} [options.billingAddress.firstName] When supplied, this customer first name will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.lastName] When supplied, this customer last name will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.company] When supplied, this company name will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.streetAddress] When supplied, this street address will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.extendedAddress] When supplied, this extended address will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.locality] When supplied, this locality (the city) will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.region] When supplied, this region (the state) will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryCodeNumeric] When supplied, this numeric country code will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryCodeAlpha2] When supplied, this alpha 2 representation of a country will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryCodeAlpha3] When supplied, this alpha 3 representation of a country will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryName] When supplied, this country name will be tokenized along with the contents of the fields.\n *\n * @param {callback} [callback] May be used as the only parameter of the function if no options are passed in. The second argument, <code>data</code>, is a {@link HostedFields~tokenizePayload|tokenizePayload}. If no callback is provided, `tokenize` returns a function that resolves with a {@link HostedFields~tokenizePayload|tokenizePayload}.\n * @example <caption>Tokenize a card</caption>\n * hostedFieldsInstance.tokenize(function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * switch (tokenizeErr.code) {\n * case 'HOSTED_FIELDS_FIELDS_EMPTY':\n * // occurs when none of the fields are filled in\n * console.error('All fields are empty! Please fill out the form.');\n * break;\n * case 'HOSTED_FIELDS_FIELDS_INVALID':\n * // occurs when certain fields do not pass client side validation\n * console.error('Some fields are invalid:', tokenizeErr.details.invalidFieldKeys);\n *\n * // you can also programmatically access the field containers for the invalid fields\n * tokenizeErr.details.invalidFields.forEach(function (fieldContainer) {\n * fieldContainer.className = 'invalid';\n * });\n * break;\n * case 'HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE':\n * // occurs when:\n * // * the client token used for client authorization was generated\n * // with a customer ID and the fail on duplicate payment method\n * // option is set to true\n * // * the card being tokenized has previously been vaulted (with any customer)\n * // See: https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#options.fail_on_duplicate_payment_method\n * console.error('This payment method already exists in your vault.');\n * break;\n * case 'HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED':\n * // occurs when:\n * // * the client token used for client authorization was generated\n * // with a customer ID and the verify card option is set to true\n * // and you have credit card verification turned on in the Braintree\n * // control panel\n * // * the cvv does not pass verification (https://developer.paypal.com/braintree/docs/reference/general/testing#avs-and-cvv/cid-responses)\n * // See: https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#options.verify_card\n * console.error('CVV did not pass verification');\n * break;\n * case 'HOSTED_FIELDS_FAILED_TOKENIZATION':\n * // occurs for any other tokenization error on the server\n * console.error('Tokenization failed server side. Is the card valid?');\n * break;\n * case 'HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR':\n * // occurs when the Braintree gateway cannot be contacted\n * console.error('Network error occurred when tokenizing.');\n * break;\n * default:\n * console.error('Something bad happened!', tokenizeErr);\n * }\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Tokenize and vault a card</caption>\n * hostedFieldsInstance.tokenize({\n * vault: true\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Tokenize a card with non-Hosted Fields cardholder name</caption>\n * hostedFieldsInstance.tokenize({\n * cardholderName: 'First Last'\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Tokenize a card with non-Hosted Fields postal code option</caption>\n * hostedFieldsInstance.tokenize({\n * billingAddress: {\n * postalCode: '11111'\n * }\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Tokenize a card with additional billing address options</caption>\n * hostedFieldsInstance.tokenize({\n * billingAddress: {\n * firstName: 'First',\n * lastName: 'Last',\n * company: 'Company',\n * streetAddress: '123 Street',\n * extendedAddress: 'Unit 1',\n * // passing just one of the country options is sufficient to\n * // associate the card details with a particular country\n * // valid country names and codes can be found here:\n * // https://developer.paypal.com/braintree/docs/reference/general/countries/ruby#list-of-countries\n * countryName: 'United States',\n * countryCodeAlpha2: 'US',\n * countryCodeAlpha3: 'USA',\n * countryCodeNumeric: '840'\n * }\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Allow tokenization with empty cardholder name field</caption>\n * var state = hostedFieldsInstance.getState();\n * var fields = Object.keys(state.fields);\n *\n * // normally, if you tried to tokenize an empty cardholder name field\n * // you would get an error, to allow making this field optional,\n * // tokenize all the fields except for the cardholder name field\n * // when the cardholder name field is empty. Otherwise, tokenize\n * // all the fields\n * if (state.fields.cardholderName.isEmpty) {\n * fields = fields.filter(function (field) {\n * return field !== 'cardholderName';\n * });\n * }\n *\n * hostedFieldsInstance.tokenize({\n * fieldsToTokenize: fields\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.tokenize = function (options) {\n var self = this;\n\n if (!options) {\n options = {};\n }\n\n return new Promise(function (resolve, reject) {\n self._bus.emit(events.TOKENIZATION_REQUEST, options, function (response) {\n var err = response[0];\n var payload = response[1];\n\n if (err) {\n self._attachInvalidFieldContainersToError(err);\n reject(new BraintreeError(err));\n } else {\n resolve(payload);\n }\n });\n });\n};\n\n/**\n * Add a class to a {@link module:braintree-web/hosted-fields~field field}. Useful for updating field styles when events occur elsewhere in your checkout.\n * @public\n * @param {string} field The field you wish to add a class to. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} classname The class to be added.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the class is added successfully.\n *\n * @example\n * hostedFieldsInstance.addClass('number', 'custom-class', function (addClassErr) {\n * if (addClassErr) {\n * console.error(addClassErr);\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.addClass = function (field, classname) {\n var err;\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when adding a class.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot add class to \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n this._bus.emit(events.ADD_CLASS, {\n field: field,\n classname: classname,\n });\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Removes a class to a {@link module:braintree-web/hosted-fields~field field}. Useful for updating field styles when events occur elsewhere in your checkout.\n * @public\n * @param {string} field The field you wish to remove a class from. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} classname The class to be removed.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the class is removed successfully.\n *\n * @example\n * hostedFieldsInstance.addClass('number', 'custom-class', function (addClassErr) {\n * if (addClassErr) {\n * console.error(addClassErr);\n * return;\n * }\n *\n * // some time later...\n * hostedFieldsInstance.removeClass('number', 'custom-class');\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.removeClass = function (field, classname) {\n var err;\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when removing a class.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot remove class from \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n this._bus.emit(events.REMOVE_CLASS, {\n field: field,\n classname: classname,\n });\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Sets an attribute of a {@link module:braintree-web/hosted-fields~field field}.\n * Supported attributes are `aria-invalid`, `aria-required`, `disabled`, and `placeholder`.\n *\n * @public\n * @param {object} options The options for the attribute you wish to set.\n * @param {string} options.field The field to which you wish to add an attribute. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} options.attribute The name of the attribute you wish to add to the field.\n * @param {string} options.value The value for the attribute.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the attribute is set successfully.\n *\n * @example <caption>Set the placeholder attribute of a field</caption>\n * hostedFieldsInstance.setAttribute({\n * field: 'number',\n * attribute: 'placeholder',\n * value: '1111 1111 1111 1111'\n * }, function (attributeErr) {\n * if (attributeErr) {\n * console.error(attributeErr);\n * }\n * });\n *\n * @example <caption>Set the aria-required attribute of a field</caption>\n * hostedFieldsInstance.setAttribute({\n * field: 'number',\n * attribute: 'aria-required',\n * value: true\n * }, function (attributeErr) {\n * if (attributeErr) {\n * console.error(attributeErr);\n * }\n * });\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.setAttribute = function (options) {\n var attributeErr, err;\n\n if (!allowedFields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n options.field +\n '\" is not a valid field. You must use a valid field option when setting an attribute.',\n });\n } else if (!this._fields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot set attribute for \"' +\n options.field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n attributeErr = attributeValidationError(options.attribute, options.value);\n\n if (attributeErr) {\n err = attributeErr;\n } else {\n this._bus.emit(events.SET_ATTRIBUTE, {\n field: options.field,\n attribute: options.attribute,\n value: options.value,\n });\n }\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Sets the month options for the expiration month field when presented as a select element.\n *\n * @public\n * @param {array} options An array of 12 entries corresponding to the 12 months.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the options are updated successfully. Errors if expirationMonth is not configured on the Hosted Fields instance or if the expirationMonth field is not configured to be a select input.\n *\n * @example <caption>Update the month options to spanish</caption>\n * hostedFieldsInstance.setMonthOptions([\n * '01 - enero',\n * '02 - febrero',\n * '03 - marzo',\n * '04 - abril',\n * '05 - mayo',\n * '06 - junio',\n * '07 - julio',\n * '08 - agosto',\n * '09 - septiembre',\n * '10 - octubre',\n * '11 - noviembre',\n * '12 - diciembre'\n * ]);\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.setMonthOptions = function (options) {\n var self = this;\n var merchantOptions = this._merchantConfigurationOptions.fields;\n var errorMessage;\n\n if (!merchantOptions.expirationMonth) {\n errorMessage = \"Expiration month field must exist to use setMonthOptions.\";\n } else if (!merchantOptions.expirationMonth.select) {\n errorMessage = \"Expiration month field must be a select element.\";\n }\n\n if (errorMessage) {\n return Promise.reject(\n new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,\n message: errorMessage,\n })\n );\n }\n\n return new Promise(function (resolve) {\n self._bus.emit(events.SET_MONTH_OPTIONS, options, resolve);\n });\n};\n\n/**\n * Sets a visually hidden message (for screen readers) on a {@link module:braintree-web/hosted-fields~field field}.\n *\n * @public\n * @param {object} options The options for the attribute you wish to set.\n * @param {string} options.field The field to which you wish to add an attribute. Must be a valid {@link module:braintree-web/hosted-fields~field field}.\n * @param {string} options.message The message to set.\n *\n * @example <caption>Set an error message on a field</caption>\n * hostedFieldsInstance.setMessage({\n * field: 'number',\n * message: 'Invalid card number'\n * });\n *\n * @example <caption>Remove the message on a field</caption>\n * hostedFieldsInstance.setMessage({\n * field: 'number',\n * message: ''\n * });\n *\n * @returns {void}\n */\nHostedFields.prototype.setMessage = function (options) {\n this._bus.emit(events.SET_MESSAGE, {\n field: options.field,\n message: options.message,\n });\n};\n\n/**\n * Removes a supported attribute from a {@link module:braintree-web/hosted-fields~field field}.\n *\n * @public\n * @param {object} options The options for the attribute you wish to remove.\n * @param {string} options.field The field from which you wish to remove an attribute. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} options.attribute The name of the attribute you wish to remove from the field.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the attribute is removed successfully.\n *\n * @example <caption>Remove the placeholder attribute of a field</caption>\n * hostedFieldsInstance.removeAttribute({\n * field: 'number',\n * attribute: 'placeholder'\n * }, function (attributeErr) {\n * if (attributeErr) {\n * console.error(attributeErr);\n * }\n * });\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.removeAttribute = function (options) {\n var attributeErr, err;\n\n if (!allowedFields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n options.field +\n '\" is not a valid field. You must use a valid field option when removing an attribute.',\n });\n } else if (!this._fields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot remove attribute for \"' +\n options.field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n attributeErr = attributeValidationError(options.attribute);\n\n if (attributeErr) {\n err = attributeErr;\n } else {\n this._bus.emit(events.REMOVE_ATTRIBUTE, {\n field: options.field,\n attribute: options.attribute,\n });\n }\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * @deprecated since version 3.8.0. Use {@link HostedFields#setAttribute|setAttribute} instead.\n *\n * @public\n * @param {string} field The field whose placeholder you wish to change. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} placeholder Will be used as the `placeholder` attribute of the input.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the placeholder updated successfully.\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.setPlaceholder = function (field, placeholder) {\n return this.setAttribute({\n field: field,\n attribute: \"placeholder\",\n value: placeholder,\n });\n};\n\n/**\n * Clear the value of a {@link module:braintree-web/hosted-fields~field field}.\n * @public\n * @param {string} field The field you wish to clear. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the field cleared successfully.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * hostedFieldsInstance.clear('number', function (clearErr) {\n * if (clearErr) {\n * console.error(clearErr);\n * }\n * });\n *\n * @example <caption>Clear several fields</caption>\n * hostedFieldsInstance.clear('number');\n * hostedFieldsInstance.clear('cvv');\n * hostedFieldsInstance.clear('expirationDate');\n */\nHostedFields.prototype.clear = function (field) {\n var err;\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when clearing a field.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot clear \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n this._bus.emit(events.CLEAR_FIELD, {\n field: field,\n });\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Programmatically focus a {@link module:braintree-web/hosted-fields~field field}.\n * @public\n * @param {string} field The field you want to focus. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the field focused successfully.\n * @returns {void}\n * @example\n * hostedFieldsInstance.focus('number', function (focusErr) {\n * if (focusErr) {\n * console.error(focusErr);\n * }\n * });\n * @example <caption>Using an event listener</caption>\n * myElement.addEventListener('click', function (e) {\n * // In Firefox, the focus method can be suppressed\n * // if the element has a tabindex property or the element\n * // is an anchor link with an href property.\n * e.preventDefault();\n * hostedFieldsInstance.focus('number');\n * });\n */\nHostedFields.prototype.focus = function (field) {\n var err;\n var fieldConfig = this._fields[field];\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when focusing a field.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot focus \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n fieldConfig.frameElement.focus();\n\n this._bus.emit(events.TRIGGER_INPUT_FOCUS, {\n field: field,\n });\n\n if (browserDetection.isIos()) {\n // Inputs outside of the viewport don't always scroll into view on\n // focus in iOS Safari. 5ms timeout gives the browser a chance to\n // do the right thing and prevents stuttering.\n setTimeout(function () {\n if (!isVisibleEnough(fieldConfig.containerElement)) {\n fieldConfig.containerElement.scrollIntoView();\n }\n }, SAFARI_FOCUS_TIMEOUT);\n }\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Returns an {@link HostedFields~stateObject|object} that includes the state of all fields and possible card types.\n * @public\n * @returns {object} {@link HostedFields~stateObject|stateObject}\n * @example <caption>Check if all fields are valid</caption>\n * var state = hostedFieldsInstance.getState();\n *\n * var formValid = Object.keys(state.fields).every(function (key) {\n * return state.fields[key].isValid;\n * });\n */\nHostedFields.prototype.getState = function () {\n return this._state;\n};\n\n// React adds decorations to DOM nodes that cause\n// circular dependencies, so we remove them from the\n// config before sending it to the iframes. However,\n// we don't want to mutate the original object that\n// was passed in, so we create fresh objects via assign\nfunction formatMerchantConfigurationForIframes(config) {\n var formattedConfig = assign({}, config);\n\n formattedConfig.fields = assign({}, formattedConfig.fields);\n Object.keys(formattedConfig.fields).forEach(function (field) {\n formattedConfig.fields[field] = assign({}, formattedConfig.fields[field]);\n delete formattedConfig.fields[field].container;\n });\n\n return formattedConfig;\n}\n\nmodule.exports = wrapPromise.wrapPrototype(HostedFields);\n\n},{\"../../lib/analytics\":90,\"../../lib/assign\":92,\"../../lib/braintree-error\":95,\"../../lib/constants\":96,\"../../lib/convert-methods-to-error\":97,\"../../lib/create-assets-url\":98,\"../../lib/create-deferred-client\":100,\"../../lib/destructor\":101,\"../../lib/errors\":103,\"../../lib/find-root-node\":104,\"../../lib/is-verified-domain\":105,\"../../lib/methods\":107,\"../../lib/shadow\":109,\"../shared/browser-detection\":83,\"../shared/constants\":84,\"../shared/errors\":85,\"../shared/find-parent-tags\":86,\"../shared/focus-intercept\":87,\"../shared/get-card-types\":88,\"./attribute-validation-error\":76,\"./compose-url\":77,\"./focus-change\":78,\"./get-styles-from-class\":79,\"./inject-frame\":81,\"@braintree/event-emitter\":22,\"@braintree/iframer\":23,\"@braintree/uuid\":27,\"@braintree/wrap-promise\":31,\"framebus\":40}],81:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar focusIntercept = _dereq_(\"../shared/focus-intercept\");\nvar directions = _dereq_(\"../shared/constants\").navigationDirections;\n\nmodule.exports = function injectFrame(id, frame, container, focusHandler) {\n var frameType = frame.getAttribute(\"type\");\n var clearboth = document.createElement(\"div\");\n var fragment = document.createDocumentFragment();\n var focusInterceptBefore = focusIntercept.generate(\n id,\n frameType,\n directions.BACK,\n focusHandler\n );\n var focusInterceptAfter = focusIntercept.generate(\n id,\n frameType,\n directions.FORWARD,\n focusHandler\n );\n\n clearboth.style.clear = \"both\";\n\n fragment.appendChild(focusInterceptBefore);\n fragment.appendChild(frame);\n fragment.appendChild(focusInterceptAfter);\n fragment.appendChild(clearboth);\n\n container.appendChild(fragment);\n\n return [frame, clearboth];\n};\n\n},{\"../shared/constants\":84,\"../shared/focus-intercept\":87}],82:[function(_dereq_,module,exports){\n\"use strict\";\n/** @module braintree-web/hosted-fields */\n\nvar HostedFields = _dereq_(\"./external/hosted-fields\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar errors = _dereq_(\"./shared/errors\");\nvar supportsInputFormatting = _dereq_(\"restricted-input/supports-input-formatting\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar VERSION = \"3.103.0\";\n\n/**\n * Fields used in {@link module:braintree-web/hosted-fields~fieldOptions fields options}\n * @typedef {object} field\n * @property {string} selector Deprecated: Now an alias for `options.container`.\n * @property {(string|HTMLElement)} container A DOM node or CSS selector to find the container where the hosted field will be inserted.\n * @property {string} [placeholder] Will be used as the `placeholder` attribute of the input. If `placeholder` is not natively supported by the browser, it will be polyfilled.\n * @property {string} [type] Will be used as the `type` attribute of the input. To mask `cvv` input, for instance, `type: \"password\"` can be used.\n * @property {string} [iframeTitle] The title used for the iframe containing the credit card input. By default, this will be `Secure Credit Card Frame - <the name of the specific field>`.\n * @property {string} [internalLabel] Each Hosted Field iframe has a hidden label that is used by screen readers to identify the input. The `internalLabel` property can be used to customize the field for localization purposes. The default values are:\n * * number: Credit Card Number\n * * cvv: CVV\n * * expirationDate: Expiration Date\n * * expirationMonth: Expiration Month\n * * expirationYear: Expiration Year\n * * postalCode: Postal Code\n * * cardholderName: Cardholder Name\n * @property {boolean} [formatInput=true] Enable or disable automatic formatting on this field.\n * @property {(object|boolean)} [maskInput=false] Enable or disable input masking when input is not focused. If set to `true` instead of an object, the defaults for the `maskInput` parameters will be used.\n * @property {string} [maskInput.character=\u2022] The character to use when masking the input. The default character ('\u2022') uses a unicode symbol, so the webpage must support UTF-8 characters when using the default.\n * @property {Boolean} [maskInput.showLastFour=false] Only applicable for the credit card field. Whether or not to show the last 4 digits of the card when masking.\n * @property {(object|boolean)} [select] If truthy, this field becomes a `<select>` dropdown list. This can only be used for `expirationMonth` and `expirationYear` fields. If you do not use a `placeholder` property for the field, the current month/year will be the default selected value.\n * @property {string[]} [select.options] An array of 12 strings, one per month. This can only be used for the `expirationMonth` field. For example, the array can look like `['01 - January', '02 - February', ...]`.\n * @property {number} [maxCardLength] This option applies only to the number field. Allows a limit to the length of the card number, even if the card brand may support numbers of a greater length. If the value passed is greater than the max length for a card brand, the smaller number of the 2 values will be used. For example, is `maxCardLength` is set to 16, but an American Express card is entered (which has a max card length of 15), a max card length of 15 will be used.\n * @property {number} [maxlength] This option applies only to the CVV and postal code fields. Will be used as the `maxlength` attribute of the input. The primary use cases for the `maxlength` option are: limiting the length of the CVV input for CVV-only verifications when the card type is known and setting the length of the postal code input when cards are coming from a known region. The default `maxlength` for the postal code input is `10`.\n * @property {number} [minlength=3] This option applies only to the cvv and postal code fields. Will be used as the `minlength` attribute of the input.\n * For postal code fields, the default value is 3, representing the Icelandic postal code length. This option's primary use case is to increase the `minlength`, e.g. for US customers, the postal code `minlength` can be set to 5.\n * For cvv fields, the default value is 3. The `minlength` attribute only applies to integrations capturing a cvv without a number field.\n * @property {string} [prefill] A value to prefill the field with. For example, when creating an update card form, you can prefill the expiration date fields with the old expiration date data.\n * @property {boolean} [rejectUnsupportedCards=false] Deprecated since version 3.46.0, use `supportedCardBrands` instead. Only allow card types that your merchant account is able to process. Unsupported card types will invalidate the card form. e.g. if you only process Visa cards, a customer entering a American Express card would get an invalid card field. This can only be used for the `number` field.\n * @property {object} [supportedCardBrands] Override card brands that are supported by the card form. Pass `'card-brand-id': true` to override the default in the merchant configuration and enable a card brand. Pass `'card-brand-id': false` to disable a card brand. Unsupported card types will invalidate the card form. e.g. if you only process Visa cards, a customer entering an American Express card would get an invalid card field. This can only be used for the `number` field. (Note: only allow card types that your merchant account is actually able to process.)\n *\n * Valid card brand ids are:\n * * visa\n * * mastercard\n * * american-express\n * * diners-club\n * * discover\n * * jcb\n * * union-pay\n * * maestro\n * * elo\n * * mir\n * * hiper\n * * hipercard\n */\n\n/**\n * An object that has {@link module:braintree-web/hosted-fields~field field objects} for each field. Used in {@link module:braintree-web/hosted-fields~create create}.\n * @typedef {object} fieldOptions\n * @property {field} [number] A field for card number.\n * @property {field} [expirationDate] A field for expiration date in `MM/YYYY` or `MM/YY` format. This should not be used with the `expirationMonth` and `expirationYear` properties.\n * @property {field} [expirationMonth] A field for expiration month in `MM` format. This should be used with the `expirationYear` property.\n * @property {field} [expirationYear] A field for expiration year in `YYYY` or `YY` format. This should be used with the `expirationMonth` property.\n * @property {field} [cvv] A field for 3 or 4 digit card verification code (like CVV or CID). If you wish to create a CVV-only payment method nonce to verify a card already stored in your Vault, omit all other fields to only collect CVV.\n * @property {field} [postalCode] A field for postal or region code.\n * @property {field} [cardholderName] A field for the cardholder name on the customer's credit card.\n */\n\n/**\n * An object that represents CSS that will be applied in each hosted field. This object looks similar to CSS. Typically, these styles involve fonts (such as `font-family` or `color`).\n *\n * You may also pass the name of a class on your site that contains the styles you would like to apply. The style properties will be automatically pulled off the class and applied to the Hosted Fields inputs. Note: this is recommended for `input` elements only. If using a `select` for the expiration date, unexpected styling may occur.\n *\n * These are the CSS properties that Hosted Fields supports. Any other CSS should be specified on your page and outside of any Braintree configuration. Trying to set unsupported properties will fail and put a warning in the console.\n *\n * Supported CSS properties are:\n * `appearance`\n * `box-shadow`\n * `color`\n * `direction`\n * `font-family`\n * `font-size-adjust`\n * `font-size`\n * `font-stretch`\n * `font-style`\n * `font-variant-alternates`\n * `font-variant-caps`\n * `font-variant-east-asian`\n * `font-variant-ligatures`\n * `font-variant-numeric`\n * `font-variant`\n * `font-weight`\n * `font`\n * `letter-spacing`\n * `line-height`\n * `opacity`\n * `outline`\n * `margin`\n * `margin-top`\n * `margin-right`\n * `margin-bottom`\n * `margin-left`\n * `padding`\n * `padding-top`\n * `padding-right`\n * `padding-bottom`\n * `padding-left`\n * `text-align`\n * `text-shadow`\n * `transition`\n * `-moz-appearance`\n * `-moz-box-shadow`\n * `-moz-osx-font-smoothing`\n * `-moz-tap-highlight-color`\n * `-moz-transition`\n * `-webkit-appearance`\n * `-webkit-box-shadow`\n * `-webkit-font-smoothing`\n * `-webkit-tap-highlight-color`\n * `-webkit-transition`\n * @typedef {object} styleOptions\n */\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {fieldOptions} options.fields A {@link module:braintree-web/hosted-fields~fieldOptions set of options for each field}.\n * @param {styleOptions} [options.styles] {@link module:braintree-web/hosted-fields~styleOptions Styles} applied to each field.\n * @param {boolean} [options.preventAutofill=false] When true, browsers will not try to prompt the customer to autofill their credit card information.\n * @param {callback} [callback] The second argument, `data`, is the {@link HostedFields} instance. If no callback is provided, `create` returns a promise that resolves with the {@link HostedFields} instance.\n * @returns {void}\n * @example\n * braintree.hostedFields.create({\n * client: clientInstance,\n * styles: {\n * 'input': {\n * 'font-size': '16pt',\n * 'color': '#3A3A3A'\n * },\n * '.number': {\n * 'font-family': 'monospace'\n * },\n * '.valid': {\n * 'color': 'green'\n * }\n * },\n * fields: {\n * number: {\n * container: '#card-number'\n * },\n * cvv: {\n * container: '#cvv',\n * placeholder: '\u2022\u2022\u2022'\n * },\n * expirationDate: {\n * container: '#expiration-date'\n * }\n * }\n * }, callback);\n * @example <caption>With cardholder name</caption>\n * braintree.hostedFields.create({\n * client: clientInstance,\n * fields: {\n * number: {\n * container: '#card-number'\n * },\n * cardholderName: {\n * container: '#cardholder-name'\n * },\n * cvv: {\n * container: '#cvv',\n * },\n * expirationDate: {\n * container: '#expiration-date'\n * }\n * }\n * }, callback);\n * @example <caption>Applying styles with a class name</caption>\n * // in document head\n * <style>\n * .braintree-input-class {\n * color: black;\n * }\n * .braintree-valid-class {\n * color: green;\n * }\n * .braintree-invalid-class {\n * color: red;\n * }\n * </style>\n * // in a script tag\n * braintree.hostedFields.create({\n * client: clientInstance,\n * styles: {\n * 'input': 'braintree-input-class',\n * '.invalid': 'braintree-invalid-class',\n * '.valid': {\n * // you can also use the object syntax alongside\n * // the class name syntax\n * color: green;\n * }\n * },\n * fields: {\n * number: {\n * container: '#card-number'\n * },\n * // etc...\n * }\n * }, callback);\n * @example <caption>Right to Left Language Support</caption>\n * braintree.hostedFields.create({\n * client: clientInstance,\n * styles: {\n * 'input': {\n * // other styles\n * direction: 'rtl'\n * },\n * },\n * fields: {\n * number: {\n * container: '#card-number',\n * // Credit card formatting is not currently supported\n * // with RTL languages, so we need to turn it off for the number input\n * formatInput: false\n * },\n * cvv: {\n * container: '#cvv',\n * placeholder: '\u2022\u2022\u2022'\n * },\n * expirationDate: {\n * container: '#expiration-date',\n * type: 'month'\n * }\n * }\n * }, callback);\n * @example <caption>Setting up Hosted Fields to tokenize CVV only</caption>\n * braintree.hostedFields.create({\n * client: clientInstance,\n * fields: {\n * // Only add the `cvv` option.\n * cvv: {\n * container: '#cvv',\n * placeholder: '\u2022\u2022\u2022'\n * }\n * }\n * }, callback);\n * @example <caption>Creating an expiration date update form with prefilled data</caption>\n * var storedCreditCardInformation = {\n * // get this info from your server\n * // with a payment method lookup\n * month: '09',\n * year: '2017'\n * };\n *\n * braintree.hostedFields.create({\n * client: clientInstance,\n * fields: {\n * expirationMonth: {\n * container: '#expiration-month',\n * prefill: storedCreditCardInformation.month\n * },\n * expirationYear: {\n * container: '#expiration-year',\n * prefill: storedCreditCardInformation.year\n * }\n * }\n * }, callback);\n * @example <caption>Validate the card form for supported card types</caption>\n * braintree.hostedFields.create({\n * client: clientInstance,\n * fields: {\n * number: {\n * container: '#card-number',\n * supportedCardBrands: {\n * visa: false, // prevents Visas from showing up as valid even when the Braintree control panel is configured to allow them\n * 'diners-club': true // allow Diners Club cards to be valid (processed as Discover cards on the Braintree backend)\n * }\n * },\n * cvv: {\n * container: '#cvv',\n * placeholder: '\u2022\u2022\u2022'\n * },\n * expirationDate: {\n * container: '#expiration-date',\n * type: 'month'\n * }\n * },\n * }, callback);\n */\nfunction create(options) {\n return basicComponentVerification\n .verify({\n name: \"Hosted Fields\",\n authorization: options.authorization,\n client: options.client,\n })\n .then(function () {\n var integration = new HostedFields(options);\n\n return new Promise(function (resolve, reject) {\n integration.on(\"ready\", function () {\n resolve(integration);\n });\n integration.on(\"timeout\", function () {\n reject(new BraintreeError(errors.HOSTED_FIELDS_TIMEOUT));\n });\n });\n });\n}\n\nmodule.exports = {\n /**\n * @static\n * @function supportsInputFormatting\n * @description Returns false if input formatting will be automatically disabled due to browser incompatibility. Otherwise, returns true. For a list of unsupported browsers, [go here](https://github.com/braintree/restricted-input/blob/main/README.md#browsers-where-formatting-is-turned-off-automatically).\n * @returns {Boolean} Returns false if input formatting will be automatically disabled due to browser incompatibility. Otherwise, returns true.\n * @example\n * <caption>Conditionally choosing split expiration date inputs if formatting is unavailable</caption>\n * var canFormat = braintree.hostedFields.supportsInputFormatting();\n * var fields = {\n * number: {\n * container: '#card-number'\n * },\n * cvv: {\n * container: '#cvv'\n * }\n * };\n *\n * if (canFormat) {\n * fields.expirationDate = {\n * selection: '#expiration-date'\n * };\n * functionToCreateAndInsertExpirationDateDivToForm();\n * } else {\n * fields.expirationMonth = {\n * selection: '#expiration-month'\n * };\n * fields.expirationYear = {\n * selection: '#expiration-year'\n * };\n * functionToCreateAndInsertExpirationMonthAndYearDivsToForm();\n * }\n *\n * braintree.hostedFields.create({\n * client: clientInstance,\n * styles: {\n * // Styles\n * },\n * fields: fields\n * }, callback);\n */\n supportsInputFormatting: supportsInputFormatting,\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":93,\"../lib/braintree-error\":95,\"./external/hosted-fields\":80,\"./shared/errors\":85,\"@braintree/wrap-promise\":31,\"restricted-input/supports-input-formatting\":75}],83:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar isAndroid = _dereq_(\"@braintree/browser-detection/is-android\");\nvar isChromeOS = _dereq_(\"@braintree/browser-detection/is-chrome-os\");\nvar isIos = _dereq_(\"@braintree/browser-detection/is-ios\");\nvar isChrome = _dereq_(\"@braintree/browser-detection/is-chrome\");\n\nfunction hasSoftwareKeyboard() {\n return isAndroid() || isChromeOS() || isIos();\n}\n\nfunction isChromeIos() {\n return isChrome() && isIos();\n}\n\nmodule.exports = {\n isAndroid: isAndroid,\n isChromeOS: isChromeOS,\n isChromeIos: isChromeIos,\n isFirefox: _dereq_(\"@braintree/browser-detection/is-firefox\"),\n isIos: isIos,\n isIosWebview: _dereq_(\"@braintree/browser-detection/is-ios-webview\"),\n hasSoftwareKeyboard: hasSoftwareKeyboard,\n};\n\n},{\"@braintree/browser-detection/is-android\":16,\"@braintree/browser-detection/is-chrome\":18,\"@braintree/browser-detection/is-chrome-os\":17,\"@braintree/browser-detection/is-firefox\":19,\"@braintree/browser-detection/is-ios\":21,\"@braintree/browser-detection/is-ios-webview\":20}],84:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"../../lib/enumerate\");\nvar errors = _dereq_(\"./errors\");\nvar VERSION = \"3.103.0\";\n\nvar constants = {\n VERSION: VERSION,\n maxExpirationYearAge: 19,\n externalEvents: {\n FOCUS: \"focus\",\n BLUR: \"blur\",\n EMPTY: \"empty\",\n NOT_EMPTY: \"notEmpty\",\n VALIDITY_CHANGE: \"validityChange\",\n CARD_TYPE_CHANGE: \"cardTypeChange\",\n },\n defaultMaxLengths: {\n number: 19,\n postalCode: 8,\n expirationDate: 7,\n expirationMonth: 2,\n expirationYear: 4,\n cvv: 3,\n },\n externalClasses: {\n FOCUSED: \"braintree-hosted-fields-focused\",\n INVALID: \"braintree-hosted-fields-invalid\",\n VALID: \"braintree-hosted-fields-valid\",\n },\n navigationDirections: {\n BACK: \"before\",\n FORWARD: \"after\",\n },\n defaultIFrameStyle: {\n border: \"none\",\n width: \"100%\",\n height: \"100%\",\n float: \"left\",\n },\n tokenizationErrorCodes: {\n 81724: errors.HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE,\n // NEXT_MAJOR_VERSION this error triggers for both AVS and CVV errors\n // but the code name implies that it would only trigger for CVV verification\n // failures\n 81736: errors.HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED,\n },\n allowedStyles: [\n \"-moz-appearance\",\n \"-moz-box-shadow\",\n \"-moz-osx-font-smoothing\",\n \"-moz-tap-highlight-color\",\n \"-moz-transition\",\n \"-webkit-appearance\",\n \"-webkit-box-shadow\",\n \"-webkit-font-smoothing\",\n \"-webkit-tap-highlight-color\",\n \"-webkit-transition\",\n \"appearance\",\n \"box-shadow\",\n \"color\",\n \"direction\",\n \"font\",\n \"font-family\",\n \"font-size\",\n \"font-size-adjust\",\n \"font-stretch\",\n \"font-style\",\n \"font-variant\",\n \"font-variant-alternates\",\n \"font-variant-caps\",\n \"font-variant-east-asian\",\n \"font-variant-ligatures\",\n \"font-variant-numeric\",\n \"font-weight\",\n \"letter-spacing\",\n \"line-height\",\n \"margin\",\n \"margin-top\",\n \"margin-right\",\n \"margin-bottom\",\n \"margin-left\",\n \"opacity\",\n \"outline\",\n \"padding\",\n \"padding-top\",\n \"padding-right\",\n \"padding-bottom\",\n \"padding-left\",\n \"text-align\",\n \"text-shadow\",\n \"transition\",\n ],\n allowedFields: {\n cardholderName: {\n name: \"cardholder-name\",\n label: \"Cardholder Name\",\n },\n number: {\n name: \"credit-card-number\",\n label: \"Credit Card Number\",\n },\n cvv: {\n name: \"cvv\",\n label: \"CVV\",\n },\n expirationDate: {\n name: \"expiration\",\n label: \"Expiration Date\",\n },\n expirationMonth: {\n name: \"expiration-month\",\n label: \"Expiration Month\",\n },\n expirationYear: {\n name: \"expiration-year\",\n label: \"Expiration Year\",\n },\n postalCode: {\n name: \"postal-code\",\n label: \"Postal Code\",\n },\n },\n allowedAttributes: {\n \"aria-invalid\": \"boolean\",\n \"aria-required\": \"boolean\",\n disabled: \"boolean\",\n placeholder: \"string\",\n },\n autocompleteMappings: {\n \"cardholder-name\": \"cc-name\",\n \"credit-card-number\": \"cc-number\",\n expiration: \"cc-exp\",\n \"expiration-month\": \"cc-exp-month\",\n \"expiration-year\": \"cc-exp-year\",\n cvv: \"cc-csc\",\n \"postal-code\": \"billing postal-code\",\n },\n};\n\nconstants.events = enumerate(\n [\n \"ADD_CLASS\",\n \"AUTOFILL_DATA_AVAILABLE\",\n \"BIN_AVAILABLE\",\n \"CARD_FORM_ENTRY_HAS_BEGUN\",\n \"CLEAR_FIELD\",\n \"CONFIGURATION\",\n \"FRAME_READY\",\n \"INPUT_EVENT\",\n \"READY_FOR_CLIENT\",\n \"REMOVE_ATTRIBUTE\",\n \"REMOVE_CLASS\",\n \"REMOVE_FOCUS_INTERCEPTS\",\n \"SET_ATTRIBUTE\",\n \"SET_MESSAGE\",\n \"SET_MONTH_OPTIONS\",\n \"TOKENIZATION_REQUEST\",\n \"TRIGGER_FOCUS_CHANGE\",\n \"TRIGGER_INPUT_FOCUS\",\n \"VALIDATE_STRICT\",\n ],\n \"hosted-fields:\"\n);\n\nmodule.exports = constants;\n\n},{\"../../lib/enumerate\":102,\"./errors\":85}],85:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Hosted Fields - Creation Error Codes\n * @description Errors that occur when [creating the Hosted Fields component](./module-braintree-web_hosted-fields.html#.create).\n * @property {UNKNOWN} HOSTED_FIELDS_TIMEOUT Occurs when Hosted Fields does not finish setting up within 60 seconds.\n * @property {MERCHANT} HOSTED_FIELDS_INVALID_FIELD_KEY Occurs when Hosted Fields is instantiated with an invalid Field option.\n * @property {MERCHANT} HOSTED_FIELDS_INVALID_FIELD_SELECTOR Occurs when Hosted Fields given a field selector that is not valid.\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME Occurs when Hosted Fields given a field selector that already contains an iframe.\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_PROPERTY_INVALID Occurs when a field configuration option is not valid.\n */\n\n/**\n * @name BraintreeError.Hosted Fields - Field Manipulation Error Codes\n * @description Errors that occur when modifying fields through [`addClass`](./HostedFields.html#addClass), [`removeClass`](./HostedFields.html#removeClass), [`setAttribute`](./HostedFields.html#setAttribute), [`removeAttribute`](./HostedFields.html#removeAttribute), [`clear`](./HostedFields.html#clear), [`focus`](./HostedFields.html#focus), and [`setMonthOptions`](./HostedFields.html#setMonthOptions).\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_INVALID Occurs when attempting to modify a field that is not a valid Hosted Fields option.\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_NOT_PRESENT Occurs when attempting to modify a field that is not configured with Hosted Fields.\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_PROPERTY_INVALID Occurs when a field configuration option is not valid.\n */\n\n/**\n * @name BraintreeError.Hosted Fields - Set Attribute Error Codes\n * @description Errors that occur when using the [`setAttribute` method](./HostedFields.html#setAttribute)\n * @property {MERCHANT} HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED Occurs when trying to set an attribute that is not supported to be set.\n * @property {MERCHANT} HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED Occurs when the type of value for an attribute is not allowed to be set.\n */\n\n/**\n * @name BraintreeError.Hosted Fields - Tokenize Error Codes\n * @description Errors that occur when [tokenizing the card details with Hosted Fields](./HostedFields.html#tokenize).\n * @property {NETWORK} HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR Occurs when the Braintree gateway cannot be contacted.\n * @property {CUSTOMER} HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE Occurs when attempting to vault a card, but the client token being used is configured to fail if the card already exists in the vault.\n * @property {CUSTOMER} HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED Occurs when cvv verification is turned on in the Braintree control panel.\n * @property {CUSTOMER} HOSTED_FIELDS_FAILED_TOKENIZATION Occurs when the credit card details were sent to Braintree, but failed to tokenize.\n * @property {CUSTOMER} HOSTED_FIELDS_FIELDS_EMPTY Occurs when all the Hosted Fields inputs are empty.\n * @property {CUSTOMER} HOSTED_FIELDS_FIELDS_INVALID Occurs when one ore more fields are invalid.\n */\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nmodule.exports = {\n HOSTED_FIELDS_TIMEOUT: {\n type: BraintreeError.types.UNKNOWN,\n code: \"HOSTED_FIELDS_TIMEOUT\",\n message: \"Hosted Fields timed out when attempting to set up.\",\n },\n HOSTED_FIELDS_INVALID_FIELD_KEY: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_INVALID_FIELD_KEY\",\n },\n HOSTED_FIELDS_INVALID_FIELD_SELECTOR: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_INVALID_FIELD_SELECTOR\",\n message: \"Selector does not reference a valid DOM node.\",\n },\n HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME\",\n message: \"Element already contains a Braintree iframe.\",\n },\n HOSTED_FIELDS_FIELD_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_FIELD_INVALID\",\n },\n HOSTED_FIELDS_FIELD_NOT_PRESENT: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_FIELD_NOT_PRESENT\",\n },\n HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR\",\n message: \"A tokenization network error occurred.\",\n },\n HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE\",\n message: \"This credit card already exists in the merchant's vault.\",\n },\n HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED\",\n message: \"CVV verification failed during tokenization.\",\n },\n HOSTED_FIELDS_FAILED_TOKENIZATION: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_FAILED_TOKENIZATION\",\n message: \"The supplied card data failed tokenization.\",\n },\n HOSTED_FIELDS_FIELDS_EMPTY: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_FIELDS_EMPTY\",\n message: \"All fields are empty. Cannot tokenize empty card fields.\",\n },\n HOSTED_FIELDS_FIELDS_INVALID: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_FIELDS_INVALID\",\n message:\n \"Some payment input fields are invalid. Cannot tokenize invalid card fields.\",\n },\n HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED\",\n },\n HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED\",\n },\n HOSTED_FIELDS_FIELD_PROPERTY_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_FIELD_PROPERTY_INVALID\",\n },\n};\n\n},{\"../../lib/braintree-error\":95}],86:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction findParentTags(element, tag) {\n var parent = element.parentNode;\n var parents = [];\n\n while (parent != null) {\n if (parent.tagName != null && parent.tagName.toLowerCase() === tag) {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n\n return parents;\n}\n\nmodule.exports = findParentTags;\n\n},{}],87:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar browserDetection = _dereq_(\"./browser-detection\");\nvar constants = _dereq_(\"./constants\");\nvar allowedFields = Object.keys(constants.allowedFields);\nvar directions = constants.navigationDirections;\n\nvar focusIntercept = {\n generate: function (hostedFieldsId, type, direction, handler) {\n var input = document.createElement(\"input\");\n var focusInterceptStyles = {\n border: \"none !important\",\n display: \"block !important\",\n height: \"1px !important\",\n left: \"-1px !important\",\n opacity: \"0 !important\",\n position: \"absolute !important\",\n top: \"-1px !important\",\n width: \"1px !important\",\n };\n var shouldCreateFocusIntercept =\n browserDetection.hasSoftwareKeyboard() || browserDetection.isFirefox();\n\n if (!shouldCreateFocusIntercept) {\n return document.createDocumentFragment();\n }\n\n input.setAttribute(\"aria-hidden\", \"true\");\n input.setAttribute(\"autocomplete\", \"off\");\n input.setAttribute(\"data-braintree-direction\", direction);\n input.setAttribute(\"data-braintree-type\", type);\n input.setAttribute(\n \"id\",\n \"bt-\" + type + \"-\" + direction + \"-\" + hostedFieldsId\n );\n input.setAttribute(\n \"style\",\n JSON.stringify(focusInterceptStyles)\n .replace(/[{}\"]/g, \"\")\n .replace(/,/g, \";\")\n );\n\n input.classList.add(\"focus-intercept\");\n\n input.addEventListener(\"focus\", function (event) {\n handler(event);\n\n /*\n Certain browsers without software keyboards (Firefox, Internet\n Explorer) need the focus intercept inputs that get inserted\n around the actual input to blur themselves, otherwise the\n browser gets confused about what should have focus. Can't\n apply this to browsers with software keyboards however,\n because it blurs everything, and focus on the actual input is\n also lost.\n */\n if (!browserDetection.hasSoftwareKeyboard()) {\n input.blur();\n }\n });\n\n return input;\n },\n destroy: function (idString) {\n var focusInputs;\n\n if (!idString) {\n focusInputs = document.querySelectorAll(\"[data-braintree-direction]\");\n focusInputs = [].slice.call(focusInputs);\n } else {\n focusInputs = [document.getElementById(idString)];\n }\n\n focusInputs.forEach(function (node) {\n if (\n node &&\n node.nodeType === 1 &&\n focusIntercept.matchFocusElement(node.getAttribute(\"id\"))\n ) {\n node.parentNode.removeChild(node);\n }\n });\n },\n matchFocusElement: function (idString) {\n var idComponents, hasBTPrefix, isAllowedType, isValidDirection;\n\n if (!idString) {\n return false;\n }\n\n idComponents = idString.split(\"-\");\n\n if (idComponents.length < 4) {\n return false;\n }\n\n hasBTPrefix = idComponents[0] === \"bt\";\n isAllowedType = allowedFields.indexOf(idComponents[1]) > -1;\n isValidDirection =\n idComponents[2] === directions.BACK ||\n idComponents[2] === directions.FORWARD;\n\n return Boolean(hasBTPrefix && isAllowedType && isValidDirection);\n },\n};\n\nmodule.exports = focusIntercept;\n\n},{\"./browser-detection\":83,\"./constants\":84}],88:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar creditCardType = _dereq_(\"credit-card-type\");\n\nmodule.exports = function (number) {\n var results = creditCardType(number);\n\n results.forEach(function (card) {\n // NEXT_MAJOR_VERSION credit-card-type fixed the mastercard enum\n // but we still pass master-card in the braintree API\n // in a major version bump, we can remove this and\n // this will be mastercard instead of master-card\n if (card.type === \"mastercard\") {\n card.type = \"master-card\";\n }\n });\n\n return results;\n};\n\n},{\"credit-card-type\":32}],89:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar createAuthorizationData = _dereq_(\"./create-authorization-data\");\nvar jsonClone = _dereq_(\"./json-clone\");\nvar constants = _dereq_(\"./constants\");\n\nfunction addMetadata(configuration, data) {\n var key;\n var attrs = data ? jsonClone(data) : {};\n var authAttrs = createAuthorizationData(configuration.authorization).attrs;\n var _meta = jsonClone(configuration.analyticsMetadata);\n\n attrs.braintreeLibraryVersion = constants.BRAINTREE_LIBRARY_VERSION;\n\n for (key in attrs._meta) {\n if (attrs._meta.hasOwnProperty(key)) {\n _meta[key] = attrs._meta[key];\n }\n }\n\n attrs._meta = _meta;\n\n if (authAttrs.tokenizationKey) {\n attrs.tokenizationKey = authAttrs.tokenizationKey;\n } else {\n attrs.authorizationFingerprint = authAttrs.authorizationFingerprint;\n }\n\n return attrs;\n}\n\nmodule.exports = addMetadata;\n\n},{\"./constants\":96,\"./create-authorization-data\":99,\"./json-clone\":106}],90:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar constants = _dereq_(\"./constants\");\nvar addMetadata = _dereq_(\"./add-metadata\");\n\nfunction sendAnalyticsEvent(clientInstanceOrPromise, kind, callback) {\n var timestamp = Date.now(); // milliseconds\n\n return Promise.resolve(clientInstanceOrPromise)\n .then(function (client) {\n var timestampInPromise = Date.now();\n var configuration = client.getConfiguration();\n var request = client._request;\n var url = configuration.gatewayConfiguration.analytics.url;\n var data = {\n analytics: [\n {\n kind: constants.ANALYTICS_PREFIX + kind,\n isAsync:\n Math.floor(timestampInPromise / 1000) !==\n Math.floor(timestamp / 1000),\n timestamp: timestamp,\n },\n ],\n };\n\n request(\n {\n url: url,\n method: \"post\",\n data: addMetadata(configuration, data),\n timeout: constants.ANALYTICS_REQUEST_TIMEOUT_MS,\n },\n callback\n );\n })\n .catch(function (err) {\n // for all non-test cases, we don't provide a callback,\n // so this error will always be swallowed. In this case,\n // that's fine, it should only error when the deferred\n // client fails to set up, in which case we don't want\n // that error to report over and over again via these\n // deferred analytics events\n if (callback) {\n callback(err);\n }\n });\n}\n\nmodule.exports = {\n sendEvent: sendAnalyticsEvent,\n};\n\n},{\"./add-metadata\":89,\"./constants\":96}],91:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar loadScript = _dereq_(\"@braintree/asset-loader/load-script\");\n\nmodule.exports = {\n loadScript: loadScript,\n};\n\n},{\"@braintree/asset-loader/load-script\":2}],92:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar assignNormalized =\n typeof Object.assign === \"function\" ? Object.assign : assignPolyfill;\n\nfunction assignPolyfill(destination) {\n var i, source, key;\n\n for (i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n }\n\n return destination;\n}\n\nmodule.exports = {\n assign: assignNormalized,\n _assign: assignPolyfill,\n};\n\n},{}],93:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar sharedErrors = _dereq_(\"./errors\");\nvar VERSION = \"3.103.0\";\n\nfunction basicComponentVerification(options) {\n var client, authorization, name;\n\n if (!options) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INVALID_USE_OF_INTERNAL_FUNCTION.type,\n code: sharedErrors.INVALID_USE_OF_INTERNAL_FUNCTION.code,\n message:\n \"Options must be passed to basicComponentVerification function.\",\n })\n );\n }\n\n name = options.name;\n client = options.client;\n authorization = options.authorization;\n\n if (!client && !authorization) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INSTANTIATION_OPTION_REQUIRED.type,\n code: sharedErrors.INSTANTIATION_OPTION_REQUIRED.code,\n // NEXT_MAJOR_VERSION in major version, we expose passing in authorization for all components\n // instead of passing in a client instance. Leave this a silent feature for now.\n message: \"options.client is required when instantiating \" + name + \".\",\n })\n );\n }\n\n if (!authorization && client.getVersion() !== VERSION) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INCOMPATIBLE_VERSIONS.type,\n code: sharedErrors.INCOMPATIBLE_VERSIONS.code,\n message:\n \"Client (version \" +\n client.getVersion() +\n \") and \" +\n name +\n \" (version \" +\n VERSION +\n \") components must be from the same SDK version.\",\n })\n );\n }\n\n return Promise.resolve();\n}\n\nmodule.exports = {\n verify: basicComponentVerification,\n};\n\n},{\"./braintree-error\":95,\"./errors\":103}],94:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar once = _dereq_(\"./once\");\n\nfunction call(fn, callback) {\n var isSync = fn.length === 0;\n\n if (isSync) {\n fn();\n callback(null);\n } else {\n fn(callback);\n }\n}\n\nmodule.exports = function (functions, cb) {\n var i;\n var length = functions.length;\n var remaining = length;\n var callback = once(cb);\n\n if (length === 0) {\n callback(null);\n\n return;\n }\n\n function finish(err) {\n if (err) {\n callback(err);\n\n return;\n }\n\n remaining -= 1;\n if (remaining === 0) {\n callback(null);\n }\n }\n\n for (i = 0; i < length; i++) {\n call(functions[i], finish);\n }\n};\n\n},{\"./once\":108}],95:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"./enumerate\");\n\n/**\n * @class\n * @global\n * @param {object} options Construction options\n * @classdesc This class is used to report error conditions, frequently as the first parameter to callbacks throughout the Braintree SDK.\n * @description <strong>You cannot use this constructor directly. Interact with instances of this class through {@link callback callbacks}.</strong>\n */\nfunction BraintreeError(options) {\n if (!BraintreeError.types.hasOwnProperty(options.type)) {\n throw new Error(options.type + \" is not a valid type.\");\n }\n\n if (!options.code) {\n throw new Error(\"Error code required.\");\n }\n\n if (!options.message) {\n throw new Error(\"Error message required.\");\n }\n\n this.name = \"BraintreeError\";\n\n /**\n * @type {string}\n * @description A code that corresponds to specific errors.\n */\n this.code = options.code;\n\n /**\n * @type {string}\n * @description A short description of the error.\n */\n this.message = options.message;\n\n /**\n * @type {BraintreeError.types}\n * @description The type of error.\n */\n this.type = options.type;\n\n /**\n * @type {object=}\n * @description Additional information about the error, such as an underlying network error response.\n */\n this.details = options.details;\n}\n\nBraintreeError.prototype = Object.create(Error.prototype);\nBraintreeError.prototype.constructor = BraintreeError;\n\n/**\n * Enum for {@link BraintreeError} types.\n * @name BraintreeError.types\n * @enum\n * @readonly\n * @memberof BraintreeError\n * @property {string} CUSTOMER An error caused by the customer.\n * @property {string} MERCHANT An error that is actionable by the merchant.\n * @property {string} NETWORK An error due to a network problem.\n * @property {string} INTERNAL An error caused by Braintree code.\n * @property {string} UNKNOWN An error where the origin is unknown.\n */\nBraintreeError.types = enumerate([\n \"CUSTOMER\",\n \"MERCHANT\",\n \"NETWORK\",\n \"INTERNAL\",\n \"UNKNOWN\",\n]);\n\nBraintreeError.findRootError = function (err) {\n if (\n err instanceof BraintreeError &&\n err.details &&\n err.details.originalError\n ) {\n return BraintreeError.findRootError(err.details.originalError);\n }\n\n return err;\n};\n\nmodule.exports = BraintreeError;\n\n},{\"./enumerate\":102}],96:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar VERSION = \"3.103.0\";\nvar PLATFORM = \"web\";\n\nvar CLIENT_API_URLS = {\n production: \"https://api.braintreegateway.com:443\",\n sandbox: \"https://api.sandbox.braintreegateway.com:443\",\n};\n\nvar ASSETS_URLS = {\n production: \"https://assets.braintreegateway.com\",\n sandbox: \"https://assets.braintreegateway.com\",\n};\n\nvar GRAPHQL_URLS = {\n production: \"https://payments.braintree-api.com/graphql\",\n sandbox: \"https://payments.sandbox.braintree-api.com/graphql\",\n};\n\n// endRemoveIf(production)\n\nmodule.exports = {\n ANALYTICS_PREFIX: PLATFORM + \".\",\n ANALYTICS_REQUEST_TIMEOUT_MS: 2000,\n ASSETS_URLS: ASSETS_URLS,\n CLIENT_API_URLS: CLIENT_API_URLS,\n FRAUDNET_SOURCE: \"BRAINTREE_SIGNIN\",\n FRAUDNET_FNCLS: \"fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99\",\n FRAUDNET_URL: \"https://c.paypal.com/da/r/fb.js\",\n BUS_CONFIGURATION_REQUEST_EVENT: \"BUS_CONFIGURATION_REQUEST\",\n GRAPHQL_URLS: GRAPHQL_URLS,\n INTEGRATION_TIMEOUT_MS: 60000,\n VERSION: VERSION,\n INTEGRATION: \"custom\",\n SOURCE: \"client\",\n PLATFORM: PLATFORM,\n BRAINTREE_LIBRARY_VERSION: \"braintree/\" + PLATFORM + \"/\" + VERSION,\n};\n\n},{}],97:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar sharedErrors = _dereq_(\"./errors\");\n\nmodule.exports = function (instance, methodNames) {\n methodNames.forEach(function (methodName) {\n instance[methodName] = function () {\n throw new BraintreeError({\n type: sharedErrors.METHOD_CALLED_AFTER_TEARDOWN.type,\n code: sharedErrors.METHOD_CALLED_AFTER_TEARDOWN.code,\n message: methodName + \" cannot be called after teardown.\",\n });\n };\n });\n};\n\n},{\"./braintree-error\":95,\"./errors\":103}],98:[function(_dereq_,module,exports){\n\"use strict\";\n\n// endRemoveIf(production)\nvar ASSETS_URLS = _dereq_(\"./constants\").ASSETS_URLS;\n\nfunction createAssetsUrl(authorization) {\n // endRemoveIf(production)\n\n return ASSETS_URLS.production;\n}\n/* eslint-enable */\n\nmodule.exports = {\n create: createAssetsUrl,\n};\n\n},{\"./constants\":96}],99:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar atob = _dereq_(\"../lib/vendor/polyfill\").atob;\nvar CLIENT_API_URLS = _dereq_(\"../lib/constants\").CLIENT_API_URLS;\n\nfunction _isTokenizationKey(str) {\n return /^[a-zA-Z0-9]+_[a-zA-Z0-9]+_[a-zA-Z0-9_]+$/.test(str);\n}\n\nfunction _parseTokenizationKey(tokenizationKey) {\n var tokens = tokenizationKey.split(\"_\");\n var environment = tokens[0];\n var merchantId = tokens.slice(2).join(\"_\");\n\n return {\n merchantId: merchantId,\n environment: environment,\n };\n}\n\nfunction createAuthorizationData(authorization) {\n var parsedClientToken, parsedTokenizationKey;\n var data = {\n attrs: {},\n configUrl: \"\",\n };\n\n if (_isTokenizationKey(authorization)) {\n parsedTokenizationKey = _parseTokenizationKey(authorization);\n data.environment = parsedTokenizationKey.environment;\n data.attrs.tokenizationKey = authorization;\n data.configUrl =\n CLIENT_API_URLS[parsedTokenizationKey.environment] +\n \"/merchants/\" +\n parsedTokenizationKey.merchantId +\n \"/client_api/v1/configuration\";\n } else {\n parsedClientToken = JSON.parse(atob(authorization));\n data.environment = parsedClientToken.environment;\n data.attrs.authorizationFingerprint =\n parsedClientToken.authorizationFingerprint;\n data.configUrl = parsedClientToken.configUrl;\n data.graphQL = parsedClientToken.graphQL;\n }\n\n return data;\n}\n\nmodule.exports = createAuthorizationData;\n\n},{\"../lib/constants\":96,\"../lib/vendor/polyfill\":111}],100:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar assets = _dereq_(\"./assets\");\nvar sharedErrors = _dereq_(\"./errors\");\n\nvar VERSION = \"3.103.0\";\n\nfunction createDeferredClient(options) {\n var promise = Promise.resolve();\n\n if (options.client) {\n return Promise.resolve(options.client);\n }\n\n if (!(window.braintree && window.braintree.client)) {\n promise = assets\n .loadScript({\n src: options.assetsUrl + \"/web/\" + VERSION + \"/js/client.min.js\",\n })\n .catch(function (err) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.type,\n code: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.code,\n message: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n }\n\n return promise.then(function () {\n if (window.braintree.client.VERSION !== VERSION) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INCOMPATIBLE_VERSIONS.type,\n code: sharedErrors.INCOMPATIBLE_VERSIONS.code,\n message:\n \"Client (version \" +\n window.braintree.client.VERSION +\n \") and \" +\n options.name +\n \" (version \" +\n VERSION +\n \") components must be from the same SDK version.\",\n })\n );\n }\n\n return window.braintree.client.create({\n authorization: options.authorization,\n debug: options.debug,\n });\n });\n}\n\nmodule.exports = {\n create: createDeferredClient,\n};\n\n},{\"./assets\":91,\"./braintree-error\":95,\"./errors\":103}],101:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar batchExecuteFunctions = _dereq_(\"./batch-execute-functions\");\n\nfunction Destructor() {\n this._teardownRegistry = [];\n\n this._isTearingDown = false;\n}\n\nDestructor.prototype.registerFunctionForTeardown = function (fn) {\n if (typeof fn === \"function\") {\n this._teardownRegistry.push(fn);\n }\n};\n\nDestructor.prototype.teardown = function (callback) {\n if (this._isTearingDown) {\n callback(new Error(\"Destructor is already tearing down\"));\n\n return;\n }\n\n this._isTearingDown = true;\n\n batchExecuteFunctions(\n this._teardownRegistry,\n function (err) {\n this._teardownRegistry = [];\n this._isTearingDown = false;\n\n if (typeof callback === \"function\") {\n callback(err);\n }\n }.bind(this)\n );\n};\n\nmodule.exports = Destructor;\n\n},{\"./batch-execute-functions\":94}],102:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction enumerate(values, prefix) {\n prefix = prefix == null ? \"\" : prefix;\n\n return values.reduce(function (enumeration, value) {\n enumeration[value] = prefix + value;\n\n return enumeration;\n }, {});\n}\n\nmodule.exports = enumerate;\n\n},{}],103:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Shared Internal Error Codes\n * @ignore\n * @description These codes should never be experienced by the merchant directly.\n * @property {INTERNAL} INVALID_USE_OF_INTERNAL_FUNCTION Occurs when the client is created without a gateway configuration. Should never happen.\n */\n\n/**\n * @name BraintreeError.Shared Errors - Component Creation Error Codes\n * @description Errors that occur when creating components.\n * @property {MERCHANT} INSTANTIATION_OPTION_REQUIRED Occurs when a component is created that is missing a required option.\n * @property {MERCHANT} INCOMPATIBLE_VERSIONS Occurs when a component is created with a client with a different version than the component.\n * @property {NETWORK} CLIENT_SCRIPT_FAILED_TO_LOAD Occurs when a component attempts to load the Braintree client script, but the request fails.\n */\n\n/**\n * @name BraintreeError.Shared Errors - Component Instance Error Codes\n * @description Errors that occur when using instances of components.\n * @property {MERCHANT} METHOD_CALLED_AFTER_TEARDOWN Occurs when a method is called on a component instance after it has been torn down.\n */\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\n\nmodule.exports = {\n INVALID_USE_OF_INTERNAL_FUNCTION: {\n type: BraintreeError.types.INTERNAL,\n code: \"INVALID_USE_OF_INTERNAL_FUNCTION\",\n },\n INSTANTIATION_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"INSTANTIATION_OPTION_REQUIRED\",\n },\n INCOMPATIBLE_VERSIONS: {\n type: BraintreeError.types.MERCHANT,\n code: \"INCOMPATIBLE_VERSIONS\",\n },\n CLIENT_SCRIPT_FAILED_TO_LOAD: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_SCRIPT_FAILED_TO_LOAD\",\n message: \"Braintree client script could not be loaded.\",\n },\n METHOD_CALLED_AFTER_TEARDOWN: {\n type: BraintreeError.types.MERCHANT,\n code: \"METHOD_CALLED_AFTER_TEARDOWN\",\n },\n};\n\n},{\"./braintree-error\":95}],104:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function findRootNode(element) {\n while (element.parentNode) {\n element = element.parentNode;\n }\n\n return element;\n};\n\n},{}],105:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar parser;\nvar legalHosts = {\n \"paypal.com\": 1,\n \"braintreepayments.com\": 1,\n \"braintreegateway.com\": 1,\n \"braintree-api.com\": 1,\n};\n\n// endRemoveIf(production)\n\nfunction stripSubdomains(domain) {\n return domain.split(\".\").slice(-2).join(\".\");\n}\n\nfunction isVerifiedDomain(url) {\n var mainDomain;\n\n url = url.toLowerCase();\n\n if (!/^https:/.test(url)) {\n return false;\n }\n\n parser = parser || document.createElement(\"a\");\n parser.href = url;\n mainDomain = stripSubdomains(parser.hostname);\n\n return legalHosts.hasOwnProperty(mainDomain);\n}\n\nmodule.exports = isVerifiedDomain;\n\n},{}],106:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (value) {\n return JSON.parse(JSON.stringify(value));\n};\n\n},{}],107:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (obj) {\n return Object.keys(obj).filter(function (key) {\n return typeof obj[key] === \"function\";\n });\n};\n\n},{}],108:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction once(fn) {\n var called = false;\n\n return function () {\n if (!called) {\n called = true;\n fn.apply(null, arguments);\n }\n };\n}\n\nmodule.exports = once;\n\n},{}],109:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar findRootNode = _dereq_(\"./find-root-node\");\n\n// based on https://github.com/krakenjs/belter/blob/cdddc4f8ddb172d29db9e7e1ad1eeeacfb93e215/src/dom.js#L981-L1031\n// thanks @bluepnume\n\nfunction isShadowElement(element) {\n element = findRootNode(element);\n\n return element.toString() === \"[object ShadowRoot]\";\n}\n\nfunction getShadowHost(element) {\n element = findRootNode(element);\n\n if (!isShadowElement(element)) {\n return null;\n }\n\n return element.host;\n}\n\nfunction transformToSlot(element, styles) {\n var styleNode = findRootNode(element).querySelector(\"style\");\n var shadowHost = getShadowHost(element);\n var slotName = \"shadow-slot-\" + uuid();\n var slot = document.createElement(\"slot\");\n var slotProvider = document.createElement(\"div\");\n\n slot.setAttribute(\"name\", slotName);\n element.appendChild(slot);\n\n slotProvider.setAttribute(\"slot\", slotName);\n shadowHost.appendChild(slotProvider);\n\n if (styles) {\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n element.appendChild(styleNode);\n }\n\n styleNode.sheet.insertRule(\n '::slotted([slot=\"' + slotName + '\"]) { ' + styles + \" }\"\n );\n }\n\n if (isShadowElement(shadowHost)) {\n return transformToSlot(slotProvider, styles);\n }\n\n return slotProvider;\n}\n\nmodule.exports = {\n isShadowElement: isShadowElement,\n getShadowHost: getShadowHost,\n transformToSlot: transformToSlot,\n};\n\n},{\"./find-root-node\":104,\"@braintree/uuid\":27}],110:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction useMin(isDebug) {\n return isDebug ? \"\" : \".min\";\n}\n\nmodule.exports = useMin;\n\n},{}],111:[function(_dereq_,module,exports){\n\"use strict\";\n\n// NEXT_MAJOR_VERSION old versions of IE don't have atob, in the\n// next major version, we're dropping support for those versions\n// so we can eliminate the need to have this atob polyfill\nvar atobNormalized = typeof atob === \"function\" ? atob : atobPolyfill;\n\nfunction atobPolyfill(base64String) {\n var a, b, c, b1, b2, b3, b4, i;\n var base64Matcher = new RegExp(\n \"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})([=]{1,2})?$\"\n );\n var characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var result = \"\";\n\n if (!base64Matcher.test(base64String)) {\n throw new Error(\"Non base64 encoded input passed to window.atob polyfill\");\n }\n\n i = 0;\n do {\n b1 = characters.indexOf(base64String.charAt(i++));\n b2 = characters.indexOf(base64String.charAt(i++));\n b3 = characters.indexOf(base64String.charAt(i++));\n b4 = characters.indexOf(base64String.charAt(i++));\n\n a = ((b1 & 0x3f) << 2) | ((b2 >> 4) & 0x3);\n b = ((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf);\n c = ((b3 & 0x3) << 6) | (b4 & 0x3f);\n\n result +=\n String.fromCharCode(a) +\n (b ? String.fromCharCode(b) : \"\") +\n (c ? String.fromCharCode(c) : \"\");\n } while (i < base64String.length);\n\n return result;\n}\n\nmodule.exports = {\n atob: function (base64String) {\n return atobNormalized.call(window, base64String);\n },\n _atob: atobPolyfill,\n};\n\n},{}]},{},[82])(82)\n});\n", "(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.braintree = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){\n\"use strict\";\nvar scriptPromiseCache = {};\nfunction loadScript(options) {\n var scriptLoadPromise;\n var stringifiedOptions = JSON.stringify(options);\n if (!options.forceScriptReload) {\n scriptLoadPromise = scriptPromiseCache[stringifiedOptions];\n if (scriptLoadPromise) {\n return scriptLoadPromise;\n }\n }\n var script = document.createElement(\"script\");\n var attrs = options.dataAttributes || {};\n var container = options.container || document.head;\n script.src = options.src;\n script.id = options.id || \"\";\n script.async = true;\n if (options.type) {\n script.setAttribute(\"type\", \"\".concat(options.type));\n }\n if (options.crossorigin) {\n script.setAttribute(\"crossorigin\", \"\".concat(options.crossorigin));\n }\n Object.keys(attrs).forEach(function (key) {\n script.setAttribute(\"data-\".concat(key), \"\".concat(attrs[key]));\n });\n scriptLoadPromise = new Promise(function (resolve, reject) {\n script.addEventListener(\"load\", function () {\n resolve(script);\n });\n script.addEventListener(\"error\", function () {\n reject(new Error(\"\".concat(options.src, \" failed to load.\")));\n });\n script.addEventListener(\"abort\", function () {\n reject(new Error(\"\".concat(options.src, \" has aborted.\")));\n });\n container.appendChild(script);\n });\n scriptPromiseCache[stringifiedOptions] = scriptLoadPromise;\n return scriptLoadPromise;\n}\nloadScript.clearCache = function () {\n scriptPromiseCache = {};\n};\nmodule.exports = loadScript;\n\n},{}],2:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/load-script\");\n\n},{\"./dist/load-script\":1}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isAndroid(ua) {\n ua = ua || window.navigator.userAgent;\n return /Android/i.test(ua);\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isChromeOS(ua) {\n ua = ua || window.navigator.userAgent;\n return /CrOS/i.test(ua);\n};\n\n},{}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar isEdge = _dereq_(\"./is-edge\");\nvar isSamsung = _dereq_(\"./is-samsung\");\nvar isDuckDuckGo = _dereq_(\"./is-duckduckgo\");\nvar isOpera = _dereq_(\"./is-opera\");\nvar isSilk = _dereq_(\"./is-silk\");\nmodule.exports = function isChrome(ua) {\n ua = ua || window.navigator.userAgent;\n return ((ua.indexOf(\"Chrome\") !== -1 || ua.indexOf(\"CriOS\") !== -1) &&\n !isEdge(ua) &&\n !isSamsung(ua) &&\n !isDuckDuckGo(ua) &&\n !isOpera(ua) &&\n !isSilk(ua));\n};\n\n},{\"./is-duckduckgo\":6,\"./is-edge\":7,\"./is-opera\":16,\"./is-samsung\":17,\"./is-silk\":18}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isDuckDuckGo(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"DuckDuckGo/\") !== -1;\n};\n\n},{}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isEdge(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"Edge/\") !== -1 || ua.indexOf(\"Edg/\") !== -1;\n};\n\n},{}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isFirefox(ua) {\n ua = ua || window.navigator.userAgent;\n return /Firefox/i.test(ua);\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isIosFirefox(ua) {\n ua = ua || window.navigator.userAgent;\n return /FxiOS/i.test(ua);\n};\n\n},{}],10:[function(_dereq_,module,exports){\n\"use strict\";\nvar isIos = _dereq_(\"./is-ios\");\nfunction isGoogleSearchApp(ua) {\n return /\\bGSA\\b/.test(ua);\n}\nmodule.exports = function isIosGoogleSearchApp(ua) {\n ua = ua || window.navigator.userAgent;\n return isIos(ua) && isGoogleSearchApp(ua);\n};\n\n},{\"./is-ios\":14}],11:[function(_dereq_,module,exports){\n\"use strict\";\nvar isIos = _dereq_(\"./is-ios\");\nvar isIosFirefox = _dereq_(\"./is-ios-firefox\");\nvar webkitRegexp = /webkit/i;\nfunction isWebkit(ua) {\n return webkitRegexp.test(ua);\n}\nfunction isIosChrome(ua) {\n return ua.indexOf(\"CriOS\") > -1;\n}\nfunction isFacebook(ua) {\n return ua.indexOf(\"FBAN\") > -1;\n}\nmodule.exports = function isIosSafari(ua) {\n ua = ua || window.navigator.userAgent;\n return (isIos(ua) &&\n isWebkit(ua) &&\n !isIosChrome(ua) &&\n !isIosFirefox(ua) &&\n !isFacebook(ua));\n};\n\n},{\"./is-ios\":14,\"./is-ios-firefox\":9}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar isIos = _dereq_(\"./is-ios\");\nvar isIosGoogleSearchApp = _dereq_(\"./is-ios-google-search-app\");\nmodule.exports = function isIosWebview(ua) {\n ua = ua || window.navigator.userAgent;\n if (isIos(ua)) {\n // The Google Search iOS app is technically a webview and doesn't support popups.\n if (isIosGoogleSearchApp(ua)) {\n return true;\n }\n // Historically, a webview could be identified by the presence of AppleWebKit and _no_ presence of Safari after.\n return /.+AppleWebKit(?!.*Safari)/i.test(ua);\n }\n return false;\n};\n\n},{\"./is-ios\":14,\"./is-ios-google-search-app\":10}],13:[function(_dereq_,module,exports){\n\"use strict\";\nvar isIosWebview = _dereq_(\"./is-ios-webview\");\nmodule.exports = function isIosWKWebview(ua, statusBarVisible) {\n statusBarVisible =\n typeof statusBarVisible !== \"undefined\"\n ? statusBarVisible\n : window.statusbar.visible;\n return isIosWebview(ua) && statusBarVisible;\n};\n\n},{\"./is-ios-webview\":12}],14:[function(_dereq_,module,exports){\n\"use strict\";\nvar isIpadOS = _dereq_(\"./is-ipados\");\nmodule.exports = function isIos(ua, checkIpadOS, document) {\n if (checkIpadOS === void 0) { checkIpadOS = true; }\n ua = ua || window.navigator.userAgent;\n var iOsTest = /iPhone|iPod|iPad/i.test(ua);\n return checkIpadOS ? iOsTest || isIpadOS(ua, document) : iOsTest;\n};\n\n},{\"./is-ipados\":15}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isIpadOS(ua, document) {\n ua = ua || window.navigator.userAgent;\n document = document || window.document;\n // \"ontouchend\" is used to determine if a browser is on an iPad, otherwise\n // user-agents for iPadOS behave/identify as a desktop browser\n return /Mac|iPad/i.test(ua) && \"ontouchend\" in document;\n};\n\n},{}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isOpera(ua) {\n ua = ua || window.navigator.userAgent;\n return (ua.indexOf(\"OPR/\") !== -1 ||\n ua.indexOf(\"Opera/\") !== -1 ||\n ua.indexOf(\"OPT/\") !== -1);\n};\n\n},{}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isSamsungBrowser(ua) {\n ua = ua || window.navigator.userAgent;\n return /SamsungBrowser/i.test(ua);\n};\n\n},{}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isSilk(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"Silk/\") !== -1;\n};\n\n},{}],19:[function(_dereq_,module,exports){\n\"use strict\";\nvar MINIMUM_SUPPORTED_CHROME_IOS_VERSION = 48;\nvar isAndroid = _dereq_(\"./is-android\");\nvar isIosFirefox = _dereq_(\"./is-ios-firefox\");\nvar isIosWebview = _dereq_(\"./is-ios-webview\");\nvar isChrome = _dereq_(\"./is-chrome\");\nvar isSamsungBrowser = _dereq_(\"./is-samsung\");\nvar isDuckDuckGo = _dereq_(\"./is-duckduckgo\");\nfunction isUnsupportedIosChrome(ua) {\n ua = ua || window.navigator.userAgent;\n var match = ua.match(/CriOS\\/(\\d+)\\./);\n if (!match) {\n return false;\n }\n var version = parseInt(match[1], 10);\n return version < MINIMUM_SUPPORTED_CHROME_IOS_VERSION;\n}\nfunction isOperaMini(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"Opera Mini\") > -1;\n}\nfunction isAndroidWebview(ua) {\n var androidWebviewRegExp = /Version\\/[\\d.]+/i;\n ua = ua || window.navigator.userAgent;\n if (isAndroid(ua)) {\n return (androidWebviewRegExp.test(ua) && !isOperaMini(ua) && !isDuckDuckGo(ua));\n }\n return false;\n}\nfunction isOldSamsungBrowserOrSamsungWebview(ua) {\n return !isChrome(ua) && !isSamsungBrowser(ua) && /samsung/i.test(ua);\n}\nmodule.exports = function supportsPopups(ua) {\n ua = ua || window.navigator.userAgent;\n return !(isIosWebview(ua) ||\n isIosFirefox(ua) ||\n isAndroidWebview(ua) ||\n isOperaMini(ua) ||\n isUnsupportedIosChrome(ua) ||\n isOldSamsungBrowserOrSamsungWebview(ua));\n};\n\n},{\"./is-android\":3,\"./is-chrome\":5,\"./is-duckduckgo\":6,\"./is-ios-firefox\":9,\"./is-ios-webview\":12,\"./is-samsung\":17}],20:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-android\");\n\n},{\"./dist/is-android\":3}],21:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-chrome-os\");\n\n},{\"./dist/is-chrome-os\":4}],22:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-chrome\");\n\n},{\"./dist/is-chrome\":5}],23:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-firefox\");\n\n},{\"./dist/is-firefox\":8}],24:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-ios-safari\");\n\n},{\"./dist/is-ios-safari\":11}],25:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-ios-webview\");\n\n},{\"./dist/is-ios-webview\":12}],26:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-ios-wkwebview\");\n\n},{\"./dist/is-ios-wkwebview\":13}],27:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-ios\");\n\n},{\"./dist/is-ios\":14}],28:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-samsung\");\n\n},{\"./dist/is-samsung\":17}],29:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/supports-popups\");\n\n},{\"./dist/supports-popups\":19}],30:[function(_dereq_,module,exports){\n\"use strict\";\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this._events = {};\n }\n EventEmitter.prototype.on = function (event, callback) {\n if (this._events[event]) {\n this._events[event].push(callback);\n }\n else {\n this._events[event] = [callback];\n }\n };\n EventEmitter.prototype.off = function (event, callback) {\n var eventCallbacks = this._events[event];\n if (!eventCallbacks) {\n return;\n }\n var indexOfCallback = eventCallbacks.indexOf(callback);\n eventCallbacks.splice(indexOfCallback, 1);\n };\n EventEmitter.prototype._emit = function (event) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var eventCallbacks = this._events[event];\n if (!eventCallbacks) {\n return;\n }\n eventCallbacks.forEach(function (callback) {\n callback.apply(void 0, args);\n });\n };\n EventEmitter.prototype.hasListener = function (event) {\n var eventCallbacks = this._events[event];\n if (!eventCallbacks) {\n return false;\n }\n return eventCallbacks.length > 0;\n };\n EventEmitter.createChild = function (ChildObject) {\n ChildObject.prototype = Object.create(EventEmitter.prototype, {\n constructor: ChildObject,\n });\n };\n return EventEmitter;\n}());\nmodule.exports = EventEmitter;\n\n},{}],31:[function(_dereq_,module,exports){\n\"use strict\";\nvar GlobalPromise = (typeof Promise !== \"undefined\"\n ? Promise // eslint-disable-line no-undef\n : null);\nvar ExtendedPromise = /** @class */ (function () {\n function ExtendedPromise(options) {\n var _this = this;\n if (typeof options === \"function\") {\n this._promise = new ExtendedPromise.Promise(options);\n return;\n }\n this._promise = new ExtendedPromise.Promise(function (resolve, reject) {\n _this._resolveFunction = resolve;\n _this._rejectFunction = reject;\n });\n options = options || {};\n this._onResolve = options.onResolve || ExtendedPromise.defaultOnResolve;\n this._onReject = options.onReject || ExtendedPromise.defaultOnReject;\n if (ExtendedPromise.shouldCatchExceptions(options)) {\n this._promise.catch(function () {\n // prevents unhandled promise rejection warning\n // in the console for extended promises that\n // that catch the error in an asynchronous manner\n });\n }\n this._resetState();\n }\n ExtendedPromise.defaultOnResolve = function (result) {\n return ExtendedPromise.Promise.resolve(result);\n };\n ExtendedPromise.defaultOnReject = function (err) {\n return ExtendedPromise.Promise.reject(err);\n };\n ExtendedPromise.setPromise = function (PromiseClass) {\n ExtendedPromise.Promise = PromiseClass;\n };\n ExtendedPromise.shouldCatchExceptions = function (options) {\n if (options.hasOwnProperty(\"suppressUnhandledPromiseMessage\")) {\n return Boolean(options.suppressUnhandledPromiseMessage);\n }\n return Boolean(ExtendedPromise.suppressUnhandledPromiseMessage);\n };\n // start Promise methods documented in:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#Methods\n ExtendedPromise.all = function (args) {\n return ExtendedPromise.Promise.all(args);\n };\n ExtendedPromise.allSettled = function (args) {\n return ExtendedPromise.Promise.allSettled(args);\n };\n ExtendedPromise.race = function (args) {\n return ExtendedPromise.Promise.race(args);\n };\n ExtendedPromise.reject = function (arg) {\n return ExtendedPromise.Promise.reject(arg);\n };\n ExtendedPromise.resolve = function (arg) {\n return ExtendedPromise.Promise.resolve(arg);\n };\n ExtendedPromise.prototype.then = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (_a = this._promise).then.apply(_a, args);\n };\n ExtendedPromise.prototype.catch = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (_a = this._promise).catch.apply(_a, args);\n };\n ExtendedPromise.prototype.resolve = function (arg) {\n var _this = this;\n if (this.isFulfilled) {\n return this;\n }\n this._setResolved();\n ExtendedPromise.Promise.resolve()\n .then(function () {\n return _this._onResolve(arg);\n })\n .then(function (argForResolveFunction) {\n _this._resolveFunction(argForResolveFunction);\n })\n .catch(function (err) {\n _this._resetState();\n _this.reject(err);\n });\n return this;\n };\n ExtendedPromise.prototype.reject = function (arg) {\n var _this = this;\n if (this.isFulfilled) {\n return this;\n }\n this._setRejected();\n ExtendedPromise.Promise.resolve()\n .then(function () {\n return _this._onReject(arg);\n })\n .then(function (result) {\n _this._setResolved();\n _this._resolveFunction(result);\n })\n .catch(function (err) {\n return _this._rejectFunction(err);\n });\n return this;\n };\n ExtendedPromise.prototype._resetState = function () {\n this.isFulfilled = false;\n this.isResolved = false;\n this.isRejected = false;\n };\n ExtendedPromise.prototype._setResolved = function () {\n this.isFulfilled = true;\n this.isResolved = true;\n this.isRejected = false;\n };\n ExtendedPromise.prototype._setRejected = function () {\n this.isFulfilled = true;\n this.isResolved = false;\n this.isRejected = true;\n };\n ExtendedPromise.Promise = GlobalPromise;\n return ExtendedPromise;\n}());\nmodule.exports = ExtendedPromise;\n\n},{}],32:[function(_dereq_,module,exports){\n\"use strict\";\nvar set_attributes_1 = _dereq_(\"./lib/set-attributes\");\nvar default_attributes_1 = _dereq_(\"./lib/default-attributes\");\nvar assign_1 = _dereq_(\"./lib/assign\");\nmodule.exports = function createFrame(options) {\n if (options === void 0) { options = {}; }\n var iframe = document.createElement(\"iframe\");\n var config = (0, assign_1.assign)({}, default_attributes_1.defaultAttributes, options);\n if (config.style && typeof config.style !== \"string\") {\n (0, assign_1.assign)(iframe.style, config.style);\n delete config.style;\n }\n (0, set_attributes_1.setAttributes)(iframe, config);\n if (!iframe.getAttribute(\"id\")) {\n iframe.id = iframe.name;\n }\n return iframe;\n};\n\n},{\"./lib/assign\":33,\"./lib/default-attributes\":34,\"./lib/set-attributes\":35}],33:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assign = void 0;\nfunction assign(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntarget) {\n var objs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n objs[_i - 1] = arguments[_i];\n }\n objs.forEach(function (obj) {\n if (typeof obj !== \"object\") {\n return;\n }\n Object.keys(obj).forEach(function (key) {\n target[key] = obj[key];\n });\n });\n return target;\n}\nexports.assign = assign;\n\n},{}],34:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultAttributes = void 0;\nexports.defaultAttributes = {\n src: \"about:blank\",\n frameBorder: 0,\n allowtransparency: true,\n scrolling: \"no\",\n};\n\n},{}],35:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setAttributes = void 0;\nfunction setAttributes(element, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nattributes) {\n for (var key in attributes) {\n if (attributes.hasOwnProperty(key)) {\n var value = attributes[key];\n if (value == null) {\n element.removeAttribute(key);\n }\n else {\n element.setAttribute(key, value);\n }\n }\n }\n}\nexports.setAttributes = setAttributes;\n\n},{}],36:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction uuid() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0;\n var v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n\nmodule.exports = uuid;\n\n},{}],37:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction deferred(fn) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n setTimeout(function () {\n try {\n fn.apply(void 0, args);\n }\n catch (err) {\n /* eslint-disable no-console */\n console.log(\"Error in callback function\");\n console.log(err);\n /* eslint-enable no-console */\n }\n }, 1);\n };\n}\nexports.deferred = deferred;\n\n},{}],38:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction once(fn) {\n var called = false;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n fn.apply(void 0, args);\n }\n };\n}\nexports.once = once;\n\n},{}],39:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable consistent-return */\nfunction promiseOrCallback(promise, callback) {\n if (!callback) {\n return promise;\n }\n promise.then(function (data) { return callback(null, data); }).catch(function (err) { return callback(err); });\n}\nexports.promiseOrCallback = promiseOrCallback;\n\n},{}],40:[function(_dereq_,module,exports){\n\"use strict\";\nvar deferred_1 = _dereq_(\"./lib/deferred\");\nvar once_1 = _dereq_(\"./lib/once\");\nvar promise_or_callback_1 = _dereq_(\"./lib/promise-or-callback\");\nfunction wrapPromise(fn) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var callback;\n var lastArg = args[args.length - 1];\n if (typeof lastArg === \"function\") {\n callback = args.pop();\n callback = once_1.once(deferred_1.deferred(callback));\n }\n // I know, I know, this looks bad. But it's a quirk of the library that\n // we need to allow passing the this context to the original function\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore: this has an implicit any\n return promise_or_callback_1.promiseOrCallback(fn.apply(this, args), callback); // eslint-disable-line no-invalid-this\n };\n}\nwrapPromise.wrapPrototype = function (target, options) {\n if (options === void 0) { options = {}; }\n var ignoreMethods = options.ignoreMethods || [];\n var includePrivateMethods = options.transformPrivateMethods === true;\n var methods = Object.getOwnPropertyNames(target.prototype).filter(function (method) {\n var isNotPrivateMethod;\n var isNonConstructorFunction = method !== \"constructor\" &&\n typeof target.prototype[method] === \"function\";\n var isNotAnIgnoredMethod = ignoreMethods.indexOf(method) === -1;\n if (includePrivateMethods) {\n isNotPrivateMethod = true;\n }\n else {\n isNotPrivateMethod = method.charAt(0) !== \"_\";\n }\n return (isNonConstructorFunction && isNotPrivateMethod && isNotAnIgnoredMethod);\n });\n methods.forEach(function (method) {\n var original = target.prototype[method];\n target.prototype[method] = wrapPromise(original);\n });\n return target;\n};\nmodule.exports = wrapPromise;\n\n},{\"./lib/deferred\":37,\"./lib/once\":38,\"./lib/promise-or-callback\":39}],41:[function(_dereq_,module,exports){\n\"use strict\";\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 cardTypes = _dereq_(\"./lib/card-types\");\nvar add_matching_cards_to_results_1 = _dereq_(\"./lib/add-matching-cards-to-results\");\nvar is_valid_input_type_1 = _dereq_(\"./lib/is-valid-input-type\");\nvar find_best_match_1 = _dereq_(\"./lib/find-best-match\");\nvar clone_1 = _dereq_(\"./lib/clone\");\nvar customCards = {};\nvar cardNames = {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n AMERICAN_EXPRESS: \"american-express\",\n DINERS_CLUB: \"diners-club\",\n DISCOVER: \"discover\",\n JCB: \"jcb\",\n UNIONPAY: \"unionpay\",\n MAESTRO: \"maestro\",\n ELO: \"elo\",\n MIR: \"mir\",\n HIPER: \"hiper\",\n HIPERCARD: \"hipercard\",\n};\nvar ORIGINAL_TEST_ORDER = [\n cardNames.VISA,\n cardNames.MASTERCARD,\n cardNames.AMERICAN_EXPRESS,\n cardNames.DINERS_CLUB,\n cardNames.DISCOVER,\n cardNames.JCB,\n cardNames.UNIONPAY,\n cardNames.MAESTRO,\n cardNames.ELO,\n cardNames.MIR,\n cardNames.HIPER,\n cardNames.HIPERCARD,\n];\nvar testOrder = (0, clone_1.clone)(ORIGINAL_TEST_ORDER);\nfunction findType(cardType) {\n return customCards[cardType] || cardTypes[cardType];\n}\nfunction getAllCardTypes() {\n return testOrder.map(function (cardType) { return (0, clone_1.clone)(findType(cardType)); });\n}\nfunction getCardPosition(name, ignoreErrorForNotExisting) {\n if (ignoreErrorForNotExisting === void 0) { ignoreErrorForNotExisting = false; }\n var position = testOrder.indexOf(name);\n if (!ignoreErrorForNotExisting && position === -1) {\n throw new Error('\"' + name + '\" is not a supported card type.');\n }\n return position;\n}\nfunction creditCardType(cardNumber) {\n var results = [];\n if (!(0, is_valid_input_type_1.isValidInputType)(cardNumber)) {\n return results;\n }\n if (cardNumber.length === 0) {\n return getAllCardTypes();\n }\n testOrder.forEach(function (cardType) {\n var cardConfiguration = findType(cardType);\n (0, add_matching_cards_to_results_1.addMatchingCardsToResults)(cardNumber, cardConfiguration, results);\n });\n var bestMatch = (0, find_best_match_1.findBestMatch)(results);\n if (bestMatch) {\n return [bestMatch];\n }\n return results;\n}\ncreditCardType.getTypeInfo = function (cardType) {\n return (0, clone_1.clone)(findType(cardType));\n};\ncreditCardType.removeCard = function (name) {\n var position = getCardPosition(name);\n testOrder.splice(position, 1);\n};\ncreditCardType.addCard = function (config) {\n var existingCardPosition = getCardPosition(config.type, true);\n customCards[config.type] = config;\n if (existingCardPosition === -1) {\n testOrder.push(config.type);\n }\n};\ncreditCardType.updateCard = function (cardType, updates) {\n var originalObject = customCards[cardType] || cardTypes[cardType];\n if (!originalObject) {\n throw new Error(\"\\\"\".concat(cardType, \"\\\" is not a recognized type. Use `addCard` instead.'\"));\n }\n if (updates.type && originalObject.type !== updates.type) {\n throw new Error(\"Cannot overwrite type parameter.\");\n }\n var clonedCard = (0, clone_1.clone)(originalObject);\n clonedCard = __assign(__assign({}, clonedCard), updates);\n customCards[clonedCard.type] = clonedCard;\n};\ncreditCardType.changeOrder = function (name, position) {\n var currentPosition = getCardPosition(name);\n testOrder.splice(currentPosition, 1);\n testOrder.splice(position, 0, name);\n};\ncreditCardType.resetModifications = function () {\n testOrder = (0, clone_1.clone)(ORIGINAL_TEST_ORDER);\n customCards = {};\n};\ncreditCardType.types = cardNames;\nmodule.exports = creditCardType;\n\n},{\"./lib/add-matching-cards-to-results\":42,\"./lib/card-types\":43,\"./lib/clone\":44,\"./lib/find-best-match\":45,\"./lib/is-valid-input-type\":46}],42:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addMatchingCardsToResults = void 0;\nvar clone_1 = _dereq_(\"./clone\");\nvar matches_1 = _dereq_(\"./matches\");\nfunction addMatchingCardsToResults(cardNumber, cardConfiguration, results) {\n var i, patternLength;\n for (i = 0; i < cardConfiguration.patterns.length; i++) {\n var pattern = cardConfiguration.patterns[i];\n if (!(0, matches_1.matches)(cardNumber, pattern)) {\n continue;\n }\n var clonedCardConfiguration = (0, clone_1.clone)(cardConfiguration);\n if (Array.isArray(pattern)) {\n patternLength = String(pattern[0]).length;\n }\n else {\n patternLength = String(pattern).length;\n }\n if (cardNumber.length >= patternLength) {\n clonedCardConfiguration.matchStrength = patternLength;\n }\n results.push(clonedCardConfiguration);\n break;\n }\n}\nexports.addMatchingCardsToResults = addMatchingCardsToResults;\n\n},{\"./clone\":44,\"./matches\":47}],43:[function(_dereq_,module,exports){\n\"use strict\";\nvar cardTypes = {\n visa: {\n niceType: \"Visa\",\n type: \"visa\",\n patterns: [4],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n mastercard: {\n niceType: \"Mastercard\",\n type: \"mastercard\",\n patterns: [[51, 55], [2221, 2229], [223, 229], [23, 26], [270, 271], 2720],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n \"american-express\": {\n niceType: \"American Express\",\n type: \"american-express\",\n patterns: [34, 37],\n gaps: [4, 10],\n lengths: [15],\n code: {\n name: \"CID\",\n size: 4,\n },\n },\n \"diners-club\": {\n niceType: \"Diners Club\",\n type: \"diners-club\",\n patterns: [[300, 305], 36, 38, 39],\n gaps: [4, 10],\n lengths: [14, 16, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n discover: {\n niceType: \"Discover\",\n type: \"discover\",\n patterns: [6011, [644, 649], 65],\n gaps: [4, 8, 12],\n lengths: [16, 19],\n code: {\n name: \"CID\",\n size: 3,\n },\n },\n jcb: {\n niceType: \"JCB\",\n type: \"jcb\",\n patterns: [2131, 1800, [3528, 3589]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n unionpay: {\n niceType: \"UnionPay\",\n type: \"unionpay\",\n patterns: [\n 620,\n [62100, 62182],\n [62184, 62187],\n [62185, 62197],\n [62200, 62205],\n [622010, 622999],\n 622018,\n [62207, 62209],\n [623, 626],\n 6270,\n 6272,\n 6276,\n [627700, 627779],\n [627781, 627799],\n [6282, 6289],\n 6291,\n 6292,\n 810,\n [8110, 8131],\n [8132, 8151],\n [8152, 8163],\n [8164, 8171],\n ],\n gaps: [4, 8, 12],\n lengths: [14, 15, 16, 17, 18, 19],\n code: {\n name: \"CVN\",\n size: 3,\n },\n },\n maestro: {\n niceType: \"Maestro\",\n type: \"maestro\",\n patterns: [\n 493698,\n [500000, 504174],\n [504176, 506698],\n [506779, 508999],\n [56, 59],\n 63,\n 67,\n 6,\n ],\n gaps: [4, 8, 12],\n lengths: [12, 13, 14, 15, 16, 17, 18, 19],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n elo: {\n niceType: \"Elo\",\n type: \"elo\",\n patterns: [\n 401178,\n 401179,\n 438935,\n 457631,\n 457632,\n 431274,\n 451416,\n 457393,\n 504175,\n [506699, 506778],\n [509000, 509999],\n 627780,\n 636297,\n 636368,\n [650031, 650033],\n [650035, 650051],\n [650405, 650439],\n [650485, 650538],\n [650541, 650598],\n [650700, 650718],\n [650720, 650727],\n [650901, 650978],\n [651652, 651679],\n [655000, 655019],\n [655021, 655058],\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVE\",\n size: 3,\n },\n },\n mir: {\n niceType: \"Mir\",\n type: \"mir\",\n patterns: [[2200, 2204]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: \"CVP2\",\n size: 3,\n },\n },\n hiper: {\n niceType: \"Hiper\",\n type: \"hiper\",\n patterns: [637095, 63737423, 63743358, 637568, 637599, 637609, 637612],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n hipercard: {\n niceType: \"Hipercard\",\n type: \"hipercard\",\n patterns: [606282],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n};\nmodule.exports = cardTypes;\n\n},{}],44:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = void 0;\nfunction clone(originalObject) {\n if (!originalObject) {\n return null;\n }\n return JSON.parse(JSON.stringify(originalObject));\n}\nexports.clone = clone;\n\n},{}],45:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findBestMatch = void 0;\nfunction hasEnoughResultsToDetermineBestMatch(results) {\n var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) { return result.matchStrength; }).length;\n /*\n * if all possible results have a maxStrength property that means the card\n * number is sufficiently long enough to determine conclusively what the card\n * type is\n * */\n return (numberOfResultsWithMaxStrengthProperty > 0 &&\n numberOfResultsWithMaxStrengthProperty === results.length);\n}\nfunction findBestMatch(results) {\n if (!hasEnoughResultsToDetermineBestMatch(results)) {\n return null;\n }\n return results.reduce(function (bestMatch, result) {\n if (!bestMatch) {\n return result;\n }\n /*\n * If the current best match pattern is less specific than this result, set\n * the result as the new best match\n * */\n if (Number(bestMatch.matchStrength) < Number(result.matchStrength)) {\n return result;\n }\n return bestMatch;\n });\n}\nexports.findBestMatch = findBestMatch;\n\n},{}],46:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidInputType = void 0;\nfunction isValidInputType(cardNumber) {\n return typeof cardNumber === \"string\" || cardNumber instanceof String;\n}\nexports.isValidInputType = isValidInputType;\n\n},{}],47:[function(_dereq_,module,exports){\n\"use strict\";\n/*\n * Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42\n * */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matches = void 0;\nfunction matchesRange(cardNumber, min, max) {\n var maxLengthToCheck = String(min).length;\n var substr = cardNumber.substr(0, maxLengthToCheck);\n var integerRepresentationOfCardNumber = parseInt(substr, 10);\n min = parseInt(String(min).substr(0, substr.length), 10);\n max = parseInt(String(max).substr(0, substr.length), 10);\n return (integerRepresentationOfCardNumber >= min &&\n integerRepresentationOfCardNumber <= max);\n}\nfunction matchesPattern(cardNumber, pattern) {\n pattern = String(pattern);\n return (pattern.substring(0, cardNumber.length) ===\n cardNumber.substring(0, pattern.length));\n}\nfunction matches(cardNumber, pattern) {\n if (Array.isArray(pattern)) {\n return matchesRange(cardNumber, pattern[0], pattern[1]);\n }\n return matchesPattern(cardNumber, pattern);\n}\nexports.matches = matches;\n\n},{}],48:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Framebus = void 0;\nvar lib_1 = _dereq_(\"./lib\");\nvar DefaultPromise = (typeof window !== \"undefined\" &&\n window.Promise);\nvar Framebus = /** @class */ (function () {\n function Framebus(options) {\n if (options === void 0) { options = {}; }\n this.origin = options.origin || \"*\";\n this.channel = options.channel || \"\";\n this.verifyDomain = options.verifyDomain;\n // if a targetFrames configuration is not passed in,\n // the default behavior is to broadcast the payload\n // to the top level window or to the frame itself.\n // By default, the broadcast function will loop through\n // all the known siblings and children of the window.\n // If a targetFrames array is passed, it will instead\n // only broadcast to those specified targetFrames\n this.targetFrames = options.targetFrames || [];\n this.limitBroadcastToFramesArray = Boolean(options.targetFrames);\n this.isDestroyed = false;\n this.listeners = [];\n this.hasAdditionalChecksForOnListeners = Boolean(this.verifyDomain || this.limitBroadcastToFramesArray);\n }\n Framebus.setPromise = function (PromiseGlobal) {\n Framebus.Promise = PromiseGlobal;\n };\n Framebus.target = function (options) {\n return new Framebus(options);\n };\n Framebus.prototype.addTargetFrame = function (frame) {\n if (!this.limitBroadcastToFramesArray) {\n return;\n }\n this.targetFrames.push(frame);\n };\n Framebus.prototype.include = function (childWindow) {\n if (childWindow == null) {\n return false;\n }\n if (childWindow.Window == null) {\n return false;\n }\n if (childWindow.constructor !== childWindow.Window) {\n return false;\n }\n lib_1.childWindows.push(childWindow);\n return true;\n };\n Framebus.prototype.target = function (options) {\n return Framebus.target(options);\n };\n Framebus.prototype.emit = function (eventName, data, reply) {\n if (this.isDestroyed) {\n return false;\n }\n var origin = this.origin;\n eventName = this.namespaceEvent(eventName);\n if ((0, lib_1.isntString)(eventName)) {\n return false;\n }\n if ((0, lib_1.isntString)(origin)) {\n return false;\n }\n if (typeof data === \"function\") {\n reply = data;\n data = undefined; // eslint-disable-line no-undefined\n }\n var payload = (0, lib_1.packagePayload)(eventName, origin, data, reply);\n if (!payload) {\n return false;\n }\n if (this.limitBroadcastToFramesArray) {\n this.targetFramesAsWindows().forEach(function (frame) {\n (0, lib_1.sendMessage)(frame, payload, origin);\n });\n }\n else {\n (0, lib_1.broadcast)(payload, {\n origin: origin,\n frame: window.top || window.self,\n });\n }\n return true;\n };\n Framebus.prototype.emitAsPromise = function (eventName, data) {\n var _this = this;\n return new Framebus.Promise(function (resolve, reject) {\n var didAttachListener = _this.emit(eventName, data, function (payload) {\n resolve(payload);\n });\n if (!didAttachListener) {\n reject(new Error(\"Listener not added for \\\"\".concat(eventName, \"\\\"\")));\n }\n });\n };\n Framebus.prototype.on = function (eventName, originalHandler) {\n if (this.isDestroyed) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var origin = this.origin;\n var handler = originalHandler;\n eventName = this.namespaceEvent(eventName);\n if ((0, lib_1.subscriptionArgsInvalid)(eventName, handler, origin)) {\n return false;\n }\n if (this.hasAdditionalChecksForOnListeners) {\n /* eslint-disable no-invalid-this, @typescript-eslint/ban-ts-comment */\n handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // @ts-ignore\n if (!self.passesVerifyDomainCheck(this && this.origin)) {\n return;\n }\n // @ts-ignore\n if (!self.hasMatchingTargetFrame(this && this.source)) {\n return;\n }\n originalHandler.apply(void 0, args);\n };\n /* eslint-enable no-invalid-this, @typescript-eslint/ban-ts-comment */\n }\n this.listeners.push({\n eventName: eventName,\n handler: handler,\n originalHandler: originalHandler,\n });\n lib_1.subscribers[origin] = lib_1.subscribers[origin] || {};\n lib_1.subscribers[origin][eventName] = lib_1.subscribers[origin][eventName] || [];\n lib_1.subscribers[origin][eventName].push(handler);\n return true;\n };\n Framebus.prototype.off = function (eventName, originalHandler) {\n var handler = originalHandler;\n if (this.isDestroyed) {\n return false;\n }\n if (this.verifyDomain) {\n for (var i = 0; i < this.listeners.length; i++) {\n var listener = this.listeners[i];\n if (listener.originalHandler === originalHandler) {\n handler = listener.handler;\n }\n }\n }\n eventName = this.namespaceEvent(eventName);\n var origin = this.origin;\n if ((0, lib_1.subscriptionArgsInvalid)(eventName, handler, origin)) {\n return false;\n }\n var subscriberList = lib_1.subscribers[origin] && lib_1.subscribers[origin][eventName];\n if (!subscriberList) {\n return false;\n }\n for (var i = 0; i < subscriberList.length; i++) {\n if (subscriberList[i] === handler) {\n subscriberList.splice(i, 1);\n return true;\n }\n }\n return false;\n };\n Framebus.prototype.teardown = function () {\n if (this.isDestroyed) {\n return;\n }\n this.isDestroyed = true;\n for (var i = 0; i < this.listeners.length; i++) {\n var listener = this.listeners[i];\n this.off(listener.eventName, listener.handler);\n }\n this.listeners.length = 0;\n };\n Framebus.prototype.passesVerifyDomainCheck = function (origin) {\n if (!this.verifyDomain) {\n // always pass this check if no verifyDomain option was set\n return true;\n }\n return this.checkOrigin(origin);\n };\n Framebus.prototype.targetFramesAsWindows = function () {\n if (!this.limitBroadcastToFramesArray) {\n return [];\n }\n return this.targetFrames\n .map(function (frame) {\n // we can't pull off the contentWindow\n // when the iframe is originally added\n // to the array, because if it is not\n // in the DOM at that time, it will have\n // a contentWindow of `null`\n if (frame instanceof HTMLIFrameElement) {\n return frame.contentWindow;\n }\n return frame;\n })\n .filter(function (win) {\n // just in case an iframe element\n // was removed from the DOM\n // and the contentWindow property\n // is null\n return win;\n });\n };\n Framebus.prototype.hasMatchingTargetFrame = function (source) {\n if (!this.limitBroadcastToFramesArray) {\n // always pass this check if we aren't limiting to the target frames\n return true;\n }\n var matchingFrame = this.targetFramesAsWindows().find(function (frame) {\n return frame === source;\n });\n return Boolean(matchingFrame);\n };\n Framebus.prototype.checkOrigin = function (postMessageOrigin) {\n var merchantHost;\n var a = document.createElement(\"a\");\n a.href = location.href;\n if (a.protocol === \"https:\") {\n merchantHost = a.host.replace(/:443$/, \"\");\n }\n else if (a.protocol === \"http:\") {\n merchantHost = a.host.replace(/:80$/, \"\");\n }\n else {\n merchantHost = a.host;\n }\n var merchantOrigin = a.protocol + \"//\" + merchantHost;\n if (merchantOrigin === postMessageOrigin) {\n return true;\n }\n if (this.verifyDomain) {\n return this.verifyDomain(postMessageOrigin);\n }\n return true;\n };\n Framebus.prototype.namespaceEvent = function (eventName) {\n if (!this.channel) {\n return eventName;\n }\n return \"\".concat(this.channel, \":\").concat(eventName);\n };\n Framebus.Promise = DefaultPromise;\n return Framebus;\n}());\nexports.Framebus = Framebus;\n\n},{\"./lib\":56}],49:[function(_dereq_,module,exports){\n\"use strict\";\nvar lib_1 = _dereq_(\"./lib\");\nvar framebus_1 = _dereq_(\"./framebus\");\n(0, lib_1.attach)();\nmodule.exports = framebus_1.Framebus;\n\n},{\"./framebus\":48,\"./lib\":56}],50:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.detach = exports.attach = void 0;\nvar _1 = _dereq_(\"./\");\nvar isAttached = false;\nfunction attach() {\n if (isAttached || typeof window === \"undefined\") {\n return;\n }\n isAttached = true;\n window.addEventListener(\"message\", _1.onMessage, false);\n}\nexports.attach = attach;\n// removeIf(production)\nfunction detach() {\n isAttached = false;\n window.removeEventListener(\"message\", _1.onMessage, false);\n}\nexports.detach = detach;\n// endRemoveIf(production)\n\n},{\"./\":56}],51:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.broadcastToChildWindows = void 0;\nvar _1 = _dereq_(\"./\");\nfunction broadcastToChildWindows(payload, origin, source) {\n for (var i = _1.childWindows.length - 1; i >= 0; i--) {\n var childWindow = _1.childWindows[i];\n if (childWindow.closed) {\n _1.childWindows.splice(i, 1);\n }\n else if (source !== childWindow) {\n (0, _1.broadcast)(payload, {\n origin: origin,\n frame: childWindow.top,\n });\n }\n }\n}\nexports.broadcastToChildWindows = broadcastToChildWindows;\n\n},{\"./\":56}],52:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.broadcast = void 0;\nvar _1 = _dereq_(\"./\");\nfunction broadcast(payload, options) {\n var i = 0;\n var frameToBroadcastTo;\n var origin = options.origin, frame = options.frame;\n try {\n frame.postMessage(payload, origin);\n if ((0, _1.hasOpener)(frame) && frame.opener.top !== window.top) {\n broadcast(payload, {\n origin: origin,\n frame: frame.opener.top,\n });\n }\n // previously, our max value was frame.frames.length\n // but frames.length inherits from window.length\n // which can be overwritten if a developer does\n // `var length = value;` outside of a function\n // scope, it'll prevent us from looping through\n // all the frames. With this, we loop through\n // until there are no longer any frames\n // eslint-disable-next-line no-cond-assign\n while ((frameToBroadcastTo = frame.frames[i])) {\n broadcast(payload, {\n origin: origin,\n frame: frameToBroadcastTo,\n });\n i++;\n }\n }\n catch (_) {\n /* ignored */\n }\n}\nexports.broadcast = broadcast;\n\n},{\"./\":56}],53:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscribers = exports.childWindows = exports.prefix = void 0;\nexports.prefix = \"/*framebus*/\";\nexports.childWindows = [];\nexports.subscribers = {};\n\n},{}],54:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dispatch = void 0;\nvar _1 = _dereq_(\"./\");\nfunction dispatch(origin, event, data, reply, e) {\n if (!_1.subscribers[origin]) {\n return;\n }\n if (!_1.subscribers[origin][event]) {\n return;\n }\n var args = [];\n if (data) {\n args.push(data);\n }\n if (reply) {\n args.push(reply);\n }\n for (var i = 0; i < _1.subscribers[origin][event].length; i++) {\n _1.subscribers[origin][event][i].apply(e, args);\n }\n}\nexports.dispatch = dispatch;\n\n},{\"./\":56}],55:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasOpener = void 0;\nfunction hasOpener(frame) {\n if (frame.top !== frame) {\n return false;\n }\n if (frame.opener == null) {\n return false;\n }\n if (frame.opener === frame) {\n return false;\n }\n if (frame.opener.closed === true) {\n return false;\n }\n return true;\n}\nexports.hasOpener = hasOpener;\n\n},{}],56:[function(_dereq_,module,exports){\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(_dereq_(\"./attach\"), exports);\n__exportStar(_dereq_(\"./broadcast-to-child-windows\"), exports);\n__exportStar(_dereq_(\"./broadcast\"), exports);\n__exportStar(_dereq_(\"./constants\"), exports);\n__exportStar(_dereq_(\"./dispatch\"), exports);\n__exportStar(_dereq_(\"./has-opener\"), exports);\n__exportStar(_dereq_(\"./is-not-string\"), exports);\n__exportStar(_dereq_(\"./message\"), exports);\n__exportStar(_dereq_(\"./package-payload\"), exports);\n__exportStar(_dereq_(\"./send-message\"), exports);\n__exportStar(_dereq_(\"./subscribe-replier\"), exports);\n__exportStar(_dereq_(\"./subscription-args-invalid\"), exports);\n__exportStar(_dereq_(\"./types\"), exports);\n__exportStar(_dereq_(\"./unpack-payload\"), exports);\n\n},{\"./attach\":50,\"./broadcast\":52,\"./broadcast-to-child-windows\":51,\"./constants\":53,\"./dispatch\":54,\"./has-opener\":55,\"./is-not-string\":57,\"./message\":58,\"./package-payload\":59,\"./send-message\":60,\"./subscribe-replier\":61,\"./subscription-args-invalid\":62,\"./types\":63,\"./unpack-payload\":64}],57:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isntString = void 0;\nfunction isntString(str) {\n return typeof str !== \"string\";\n}\nexports.isntString = isntString;\n\n},{}],58:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onMessage = void 0;\nvar _1 = _dereq_(\"./\");\nfunction onMessage(e) {\n if ((0, _1.isntString)(e.data)) {\n return;\n }\n var payload = (0, _1.unpackPayload)(e);\n if (!payload) {\n return;\n }\n var data = payload.eventData;\n var reply = payload.reply;\n (0, _1.dispatch)(\"*\", payload.event, data, reply, e);\n (0, _1.dispatch)(e.origin, payload.event, data, reply, e);\n (0, _1.broadcastToChildWindows)(e.data, payload.origin, e.source);\n}\nexports.onMessage = onMessage;\n\n},{\"./\":56}],59:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.packagePayload = void 0;\nvar _1 = _dereq_(\"./\");\nfunction packagePayload(event, origin, data, reply) {\n var packaged;\n var payload = {\n event: event,\n origin: origin,\n };\n if (typeof reply === \"function\") {\n payload.reply = (0, _1.subscribeReplier)(reply, origin);\n }\n payload.eventData = data;\n try {\n packaged = _1.prefix + JSON.stringify(payload);\n }\n catch (e) {\n throw new Error(\"Could not stringify event: \".concat(e.message));\n }\n return packaged;\n}\nexports.packagePayload = packagePayload;\n\n},{\"./\":56}],60:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendMessage = void 0;\n/**\n * A basic function for wrapping the sending of postMessages to frames.\n */\nfunction sendMessage(frame, payload, origin) {\n try {\n frame.postMessage(payload, origin);\n }\n catch (error) {\n /* ignored */\n }\n}\nexports.sendMessage = sendMessage;\n\n},{}],61:[function(_dereq_,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscribeReplier = void 0;\nvar framebus_1 = _dereq_(\"../framebus\");\nvar uuid_1 = __importDefault(_dereq_(\"@braintree/uuid\"));\nfunction subscribeReplier(fn, origin) {\n var uuid = (0, uuid_1.default)();\n function replier(data, replyOriginHandler) {\n fn(data, replyOriginHandler);\n framebus_1.Framebus.target({\n origin: origin,\n }).off(uuid, replier);\n }\n framebus_1.Framebus.target({\n origin: origin,\n }).on(uuid, replier);\n return uuid;\n}\nexports.subscribeReplier = subscribeReplier;\n\n},{\"../framebus\":48,\"@braintree/uuid\":65}],62:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscriptionArgsInvalid = void 0;\nvar _1 = _dereq_(\"./\");\nfunction subscriptionArgsInvalid(event, fn, origin) {\n if ((0, _1.isntString)(event)) {\n return true;\n }\n if (typeof fn !== \"function\") {\n return true;\n }\n return (0, _1.isntString)(origin);\n}\nexports.subscriptionArgsInvalid = subscriptionArgsInvalid;\n\n},{\"./\":56}],63:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],64:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unpackPayload = void 0;\nvar _1 = _dereq_(\"./\");\nfunction unpackPayload(e) {\n var payload;\n if (e.data.slice(0, _1.prefix.length) !== _1.prefix) {\n return false;\n }\n try {\n payload = JSON.parse(e.data.slice(_1.prefix.length));\n }\n catch (err) {\n return false;\n }\n if (payload.reply) {\n var replyOrigin_1 = e.origin;\n var replySource_1 = e.source;\n var replyEvent_1 = payload.reply;\n payload.reply = function reply(replyData) {\n if (!replySource_1) {\n return;\n }\n var replyPayload = (0, _1.packagePayload)(replyEvent_1, replyOrigin_1, replyData);\n if (!replyPayload) {\n return;\n }\n replySource_1.postMessage(replyPayload, replyOrigin_1);\n };\n }\n return payload;\n}\nexports.unpackPayload = unpackPayload;\n\n},{\"./\":56}],65:[function(_dereq_,module,exports){\n'use strict';\n\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : r & 0x3 | 0x8;\n\n return v.toString(16);\n });\n}\n\nmodule.exports = uuid;\n\n},{}],66:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIos = exports.isIE9 = exports.isSamsungBrowser = exports.isAndroidChrome = exports.isKitKatWebview = void 0;\n// server side rendering check\nvar UA = (typeof window !== \"undefined\" &&\n window.navigator &&\n window.navigator.userAgent);\n// TODO remove this when browser detection is converted to typescript\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-ignore\nvar isAndroid = _dereq_(\"@braintree/browser-detection/is-android\");\n// @ts-ignore\nvar isChromeOs = _dereq_(\"@braintree/browser-detection/is-chrome-os\");\n// @ts-ignore\nvar isChrome = _dereq_(\"@braintree/browser-detection/is-chrome\");\n// @ts-ignore\nvar isIos = _dereq_(\"@braintree/browser-detection/is-ios\");\nexports.isIos = isIos;\n// @ts-ignore\nvar isIE9 = _dereq_(\"@braintree/browser-detection/is-ie9\");\nexports.isIE9 = isIE9;\n/* eslint-enable @typescript-eslint/ban-ts-comment */\n// Old Android Webviews used specific versions of Chrome with 0.0.0 as their version suffix\n// https://developer.chrome.com/multidevice/user-agent#webview_user_agent\nvar KITKAT_WEBVIEW_REGEX = /Version\\/\\d\\.\\d* Chrome\\/\\d*\\.0\\.0\\.0/;\nfunction isOldSamsungBrowserOrSamsungWebview(ua) {\n return !isChrome(ua) && ua.indexOf(\"Samsung\") > -1;\n}\nfunction isKitKatWebview(ua) {\n if (ua === void 0) { ua = UA; }\n return isAndroid(ua) && KITKAT_WEBVIEW_REGEX.test(ua);\n}\nexports.isKitKatWebview = isKitKatWebview;\nfunction isAndroidChrome(ua) {\n if (ua === void 0) { ua = UA; }\n return (isAndroid(ua) || isChromeOs(ua)) && isChrome(ua);\n}\nexports.isAndroidChrome = isAndroidChrome;\nfunction isSamsungBrowser(ua) {\n if (ua === void 0) { ua = UA; }\n return /SamsungBrowser/.test(ua) || isOldSamsungBrowserOrSamsungWebview(ua);\n}\nexports.isSamsungBrowser = isSamsungBrowser;\n\n},{\"@braintree/browser-detection/is-android\":79,\"@braintree/browser-detection/is-chrome\":81,\"@braintree/browser-detection/is-chrome-os\":80,\"@braintree/browser-detection/is-ie9\":82,\"@braintree/browser-detection/is-ios\":83}],67:[function(_dereq_,module,exports){\n\"use strict\";\nvar device_1 = _dereq_(\"./lib/device\");\nmodule.exports = function supportsInputFormatting() {\n // Digits get dropped in samsung browser\n return !(0, device_1.isSamsungBrowser)();\n};\n\n},{\"./lib/device\":66}],68:[function(_dereq_,module,exports){\narguments[4][3][0].apply(exports,arguments)\n},{\"dup\":3}],69:[function(_dereq_,module,exports){\narguments[4][4][0].apply(exports,arguments)\n},{\"dup\":4}],70:[function(_dereq_,module,exports){\narguments[4][5][0].apply(exports,arguments)\n},{\"./is-duckduckgo\":71,\"./is-edge\":72,\"./is-opera\":76,\"./is-samsung\":77,\"./is-silk\":78,\"dup\":5}],71:[function(_dereq_,module,exports){\narguments[4][6][0].apply(exports,arguments)\n},{\"dup\":6}],72:[function(_dereq_,module,exports){\narguments[4][7][0].apply(exports,arguments)\n},{\"dup\":7}],73:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function isIe9(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"MSIE 9\") !== -1;\n};\n\n},{}],74:[function(_dereq_,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"./is-ipados\":75,\"dup\":14}],75:[function(_dereq_,module,exports){\narguments[4][15][0].apply(exports,arguments)\n},{\"dup\":15}],76:[function(_dereq_,module,exports){\narguments[4][16][0].apply(exports,arguments)\n},{\"dup\":16}],77:[function(_dereq_,module,exports){\narguments[4][17][0].apply(exports,arguments)\n},{\"dup\":17}],78:[function(_dereq_,module,exports){\narguments[4][18][0].apply(exports,arguments)\n},{\"dup\":18}],79:[function(_dereq_,module,exports){\narguments[4][20][0].apply(exports,arguments)\n},{\"./dist/is-android\":68,\"dup\":20}],80:[function(_dereq_,module,exports){\narguments[4][21][0].apply(exports,arguments)\n},{\"./dist/is-chrome-os\":69,\"dup\":21}],81:[function(_dereq_,module,exports){\narguments[4][22][0].apply(exports,arguments)\n},{\"./dist/is-chrome\":70,\"dup\":22}],82:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/is-ie9\");\n\n},{\"./dist/is-ie9\":73}],83:[function(_dereq_,module,exports){\narguments[4][27][0].apply(exports,arguments)\n},{\"./dist/is-ios\":74,\"dup\":27}],84:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(\"./dist/supports-input-formatting\");\n\n},{\"./dist/supports-input-formatting\":67}],85:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar errors = _dereq_(\"./errors\");\nvar assign = _dereq_(\"../lib/assign\").assign;\nvar methods = _dereq_(\"../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @class\n * @param {object} options Options\n * @description <strong>You cannot use this constructor directly. Use {@link module:braintree-web/american-express.create|braintree.american-express.create} instead.</strong>\n * @classdesc This class allows you use a nonce to interact with American Express Checkout. To accept American Express cards, use Hosted Fields.\n */\nfunction AmericanExpress(options) {\n this._client = options.client;\n}\n\n/**\n * Gets the rewards balance associated with a Braintree nonce.\n * @public\n * @param {object} options Request options\n * @param {string} options.nonce An existing Braintree nonce.\n * @param {callback} [callback] The second argument, <code>data</code>, is the returned server data. If no callback is provided, `getRewardsBalance` returns a promise that resolves with the server data.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * var americanExpress = require('braintree-web/american-express');\n *\n * americanExpress.create({client: clientInstance}, function (createErr, americanExpressInstance) {\n * var options = {nonce: existingBraintreeNonce};\n * americanExpressInstance.getRewardsBalance(options, function (getErr, payload) {\n * if (getErr || payload.error) {\n * // Handle error\n * return;\n * }\n *\n * console.log('Rewards amount: ' + payload.rewardsAmount);\n * });\n * });\n */\nAmericanExpress.prototype.getRewardsBalance = function (options) {\n var nonce = options.nonce;\n var data;\n\n if (!nonce) {\n return Promise.reject(\n new BraintreeError({\n type: errors.AMEX_NONCE_REQUIRED.type,\n code: errors.AMEX_NONCE_REQUIRED.code,\n message: \"getRewardsBalance must be called with a nonce.\",\n })\n );\n }\n\n data = assign(\n {\n _meta: { source: \"american-express\" },\n paymentMethodNonce: nonce,\n },\n options\n );\n\n delete data.nonce;\n\n return this._client\n .request({\n method: \"get\",\n endpoint: \"payment_methods/amex_rewards_balance\",\n data: data,\n })\n .catch(function (err) {\n return Promise.reject(\n new BraintreeError({\n type: errors.AMEX_NETWORK_ERROR.type,\n code: errors.AMEX_NETWORK_ERROR.code,\n message:\n \"A network error occurred when getting the American Express rewards balance.\",\n details: {\n originalError: err,\n },\n })\n );\n });\n};\n\n/**\n * Gets the Express Checkout nonce profile given a nonce from American Express.\n * @public\n * @param {object} options Request options\n * @param {string} options.nonce An existing nonce from American Express (note that this is <em>not</em> a nonce from Braintree).\n * @param {callback} [callback] The second argument, <code>data</code>, is the returned server data. If no callback is provided, `getExpressCheckoutProfile` returns a promise that resolves with the server data.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * var americanExpress = require('braintree-web/american-express');\n *\n * americanExpress.create({client: clientInstance}, function (createErr, americanExpressInstance) {\n * var options = {nonce: existingAmericanExpressNonce};\n * americanExpressInstance.getExpressCheckoutProfile(options, function (getErr, payload) {\n * if (getErr) {\n * // Handle error\n * return;\n * }\n *\n * console.log('Number of cards: ' + payload.amexExpressCheckoutCards.length);\n * });\n * });\n */\nAmericanExpress.prototype.getExpressCheckoutProfile = function (options) {\n if (!options.nonce) {\n return Promise.reject(\n new BraintreeError({\n type: errors.AMEX_NONCE_REQUIRED.type,\n code: errors.AMEX_NONCE_REQUIRED.code,\n message: \"getExpressCheckoutProfile must be called with a nonce.\",\n })\n );\n }\n\n return this._client\n .request({\n method: \"get\",\n endpoint: \"payment_methods/amex_express_checkout_cards/\" + options.nonce,\n data: {\n _meta: { source: \"american-express\" },\n paymentMethodNonce: options.nonce,\n },\n })\n .catch(function (err) {\n return Promise.reject(\n new BraintreeError({\n type: errors.AMEX_NETWORK_ERROR.type,\n code: errors.AMEX_NETWORK_ERROR.code,\n message:\n \"A network error occurred when getting the American Express Checkout nonce profile.\",\n details: {\n originalError: err,\n },\n })\n );\n });\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/american-express.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * americanExpressInstance.teardown();\n * @example <caption>With callback</caption>\n * americanExpressInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nAmericanExpress.prototype.teardown = function () {\n convertMethodsToError(this, methods(AmericanExpress.prototype));\n\n return Promise.resolve();\n};\n\nmodule.exports = wrapPromise.wrapPrototype(AmericanExpress);\n\n},{\"../lib/assign\":134,\"../lib/braintree-error\":137,\"../lib/convert-methods-to-error\":140,\"../lib/methods\":168,\"./errors\":86,\"@braintree/wrap-promise\":40}],86:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.American Express - getRewardsBalance Error Codes\n * @description Errors that occur when creating components.\n * @property {MERCHANT} AMEX_NONCE_REQUIRED Occurs when a nonce is not provided to method.\n * @property {NETWORK} AMEX_NETWORK_ERROR Occurs when there is an error communicating with the Braintree gateway.\n */\n\n/**\n * @name BraintreeError.American Express - getExpressCheckoutProfile Error Codes\n * @description Errors that occur when creating components.\n * @property {MERCHANT} AMEX_NONCE_REQUIRED Occurs when a nonce is not provided to method.\n * @property {NETWORK} AMEX_NETWORK_ERROR Occurs when there is an error communicating with the Braintree gateway.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n AMEX_NONCE_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"AMEX_NONCE_REQUIRED\",\n },\n AMEX_NETWORK_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"AMEX_NETWORK_ERROR\",\n },\n};\n\n},{\"../lib/braintree-error\":137}],87:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/american-express\n * @description This module is for use with Amex Express Checkout. To accept American Express cards, use Hosted Fields.\n */\n\nvar AmericanExpress = _dereq_(\"./american-express\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {callback} [callback] The second argument, `data`, is the {@link AmericanExpress} instance. If no callback is provided, `create` returns a promise that resolves with the {@link AmericanExpress} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"American Express\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n return createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n });\n })\n .then(function (client) {\n options.client = client;\n\n return new AmericanExpress(options);\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./american-express\":85,\"@braintree/wrap-promise\":40}],88:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar analytics = _dereq_(\"../lib/analytics\");\nvar errors = _dereq_(\"./errors\");\nvar methods = _dereq_(\"../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @typedef {object} ApplePay~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {object} details Additional details.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.cardHolderName The name of the card holder.\n * @property {string} details.dpanLastTwo Last two digits of card number.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, always `ApplePayCard`.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * An Apple Pay Payment Authorization Event object.\n * @typedef {object} ApplePayPaymentAuthorizedEvent\n * @external ApplePayPaymentAuthorizedEvent\n * @see {@link https://developer.apple.com/reference/applepayjs/applepaypaymentauthorizedevent ApplePayPaymentAuthorizedEvent}\n */\n\n/**\n * An Apple Pay Payment Request object.\n * @typedef {object} ApplePayPaymentRequest\n * @external ApplePayPaymentRequest\n * @see {@link https://developer.apple.com/reference/applepayjs/1916082-applepay_js_data_types/paymentrequest PaymentRequest}\n */\n\n/**\n * @class\n * @param {object} options Options\n * @description <strong>You cannot use this constructor directly. Use {@link module:braintree-web/apple-pay.create|braintree.applePay.create} instead.</strong>\n * @classdesc This class represents an Apple Pay component. Instances of this class have methods for validating the merchant server and tokenizing payments.\n */\nfunction ApplePay(options) {\n this._instantiatedWithClient = Boolean(!options.useDeferredClient);\n this._client = options.client;\n this._createPromise = options.createPromise;\n\n if (this._client) {\n this._setMerchantIdentifier();\n }\n}\n\nApplePay.prototype._waitForClient = function () {\n if (this._client) {\n return Promise.resolve();\n }\n\n return this._createPromise.then(\n function (client) {\n this._client = client;\n\n this._setMerchantIdentifier();\n }.bind(this)\n );\n};\n\nApplePay.prototype._setMerchantIdentifier = function () {\n var applePayConfig =\n this._client.getConfiguration().gatewayConfiguration.applePayWeb;\n\n if (!applePayConfig) {\n return;\n }\n /**\n * @name ApplePay#merchantIdentifier\n * @description A special merchant ID which represents the merchant association with Braintree. Required when using `ApplePaySession.canMakePaymentsWithActiveCard`.\n * @example\n * var promise = ApplePaySession.canMakePaymentsWithActiveCard(applePayInstance.merchantIdentifier);\n * promise.then(function (canMakePaymentsWithActiveCard) {\n * if (canMakePaymentsWithActiveCard) {\n * // Set up Apple Pay buttons\n * }\n * });\n */\n Object.defineProperty(this, \"merchantIdentifier\", {\n value: applePayConfig.merchantIdentifier,\n configurable: false,\n writable: false,\n });\n};\n\n/**\n * Merges a payment request with Braintree defaults to return an {external:ApplePayPaymentRequest}.\n *\n * The following properties are assigned to `paymentRequest` if not already defined. Their default values come from the Braintree gateway.\n * - `countryCode`\n * - `currencyCode`\n * - `merchantCapabilities`\n * - `supportedNetworks`\n * @public\n * @param {external:ApplePayPaymentRequest} paymentRequest The payment request details to apply on top of those from Braintree.\n * @returns {external:ApplePayPaymentRequest|Promise} The decorated `paymentRequest` object. If `useDeferredClient` is used along with an `authorization`, this method will return a promise that resolves with the `paymentRequest` object.\n * @example\n * var applePay = require('braintree-web/apple-pay');\n *\n * applePay.create({client: clientInstance}, function (applePayErr, applePayInstance) {\n * if (applePayErr) {\n * // Handle error here\n * return;\n * }\n *\n * var paymentRequest = applePayInstance.createPaymentRequest({\n * total: {\n * label: 'My Company',\n * amount: '19.99'\n * }\n * });\n *\n * var session = new ApplePaySession(3, paymentRequest);\n *\n * // ...\n * @example <caption>With deferred client</caption>\n * var applePay = require('braintree-web/apple-pay');\n *\n * applePay.create({\n * authorization: 'client-token-or-tokenization-key',\n * useDeferredClient: true\n * }, function (applePayErr, applePayInstance) {\n * if (applePayErr) {\n * // Handle error here\n * return;\n * }\n *\n * applePayInstance.createPaymentRequest({\n * total: {\n * label: 'My Company',\n * amount: '19.99'\n * }\n * }).then(function (paymentRequest) {\n * var session = new ApplePaySession(3, paymentRequest);\n *\n * // ...\n * });\n */\nApplePay.prototype.createPaymentRequest = function (paymentRequest) {\n if (this._instantiatedWithClient) {\n return this._createPaymentRequestSynchronously(paymentRequest);\n }\n\n return this._waitForClient().then(\n function () {\n return this._createPaymentRequestSynchronously(paymentRequest);\n }.bind(this)\n );\n};\n\nApplePay.prototype._createPaymentRequestSynchronously = function (\n paymentRequest\n) {\n var applePay =\n this._client.getConfiguration().gatewayConfiguration.applePayWeb;\n var defaults = {\n countryCode: applePay.countryCode,\n currencyCode: applePay.currencyCode,\n merchantCapabilities: applePay.merchantCapabilities || [\"supports3DS\"],\n supportedNetworks: applePay.supportedNetworks.map(function (network) {\n return network === \"mastercard\" ? \"masterCard\" : network;\n }),\n };\n\n return Object.assign({}, defaults, paymentRequest);\n};\n\n/**\n * Validates your merchant website, as required by `ApplePaySession` before payment can be authorized.\n * @public\n * @param {object} options Options\n * @param {string} options.validationURL The validationURL from an `ApplePayValidateMerchantEvent`.\n * @param {string} options.displayName The canonical name for your store. Use a non-localized name. This parameter should be a UTF-8 string that is a maximum of 64 characters. The system may display this name to the user.\n * @param {callback} [callback] The second argument, <code>data</code>, is the Apple Pay merchant session object. If no callback is provided, `performValidation` returns a promise.\n * Pass the merchant session to your Apple Pay session's `completeMerchantValidation` method.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * var applePay = require('braintree-web/apple-pay');\n *\n * applePay.create({client: clientInstance}, function (applePayErr, applePayInstance) {\n * if (applePayErr) {\n * // Handle error here\n * return;\n * }\n *\n * var paymentRequest = applePayInstance.createPaymentRequest({\n * total: {\n * label: 'My Company',\n * amount: '19.99'\n * }\n * });\n * var session = new ApplePaySession(3, paymentRequest);\n *\n * session.onvalidatemerchant = function (event) {\n * applePayInstance.performValidation({\n * validationURL: event.validationURL,\n * displayName: 'My Great Store'\n * }, function (validationErr, validationData) {\n * if (validationErr) {\n * console.error(validationErr);\n * session.abort();\n * return;\n * }\n *\n * session.completeMerchantValidation(validationData);\n * });\n * };\n * });\n */\nApplePay.prototype.performValidation = function (options) {\n var self = this;\n\n if (!options || !options.validationURL) {\n return Promise.reject(\n new BraintreeError(errors.APPLE_PAY_VALIDATION_URL_REQUIRED)\n );\n }\n\n return this._waitForClient()\n .then(function () {\n var applePayWebSession = {\n validationUrl: options.validationURL,\n domainName: options.domainName || window.location.hostname,\n merchantIdentifier:\n options.merchantIdentifier || self.merchantIdentifier,\n };\n\n if (options.displayName != null) {\n applePayWebSession.displayName = options.displayName;\n }\n\n return self._client.request({\n method: \"post\",\n endpoint: \"apple_pay_web/sessions\",\n data: {\n _meta: { source: \"apple-pay\" },\n applePayWebSession: applePayWebSession,\n },\n });\n })\n .then(function (response) {\n analytics.sendEvent(self._client, \"applepay.performValidation.succeeded\");\n\n return Promise.resolve(response);\n })\n .catch(function (err) {\n analytics.sendEvent(self._client, \"applepay.performValidation.failed\");\n\n if (err.code === \"CLIENT_REQUEST_ERROR\") {\n return Promise.reject(\n new BraintreeError({\n type: errors.APPLE_PAY_MERCHANT_VALIDATION_FAILED.type,\n code: errors.APPLE_PAY_MERCHANT_VALIDATION_FAILED.code,\n message: errors.APPLE_PAY_MERCHANT_VALIDATION_FAILED.message,\n details: {\n originalError: err.details.originalError,\n },\n })\n );\n }\n\n return Promise.reject(\n new BraintreeError({\n type: errors.APPLE_PAY_MERCHANT_VALIDATION_NETWORK.type,\n code: errors.APPLE_PAY_MERCHANT_VALIDATION_NETWORK.code,\n message: errors.APPLE_PAY_MERCHANT_VALIDATION_NETWORK.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n};\n\n/**\n * Tokenizes an Apple Pay payment. This will likely be called in your `ApplePaySession`'s `onpaymentauthorized` callback.\n * @public\n * @param {object} options Options\n * @param {object} options.token The `payment.token` property of an {@link external:ApplePayPaymentAuthorizedEvent}.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link ApplePay~tokenizePayload|tokenizePayload}. If no callback is provided, `tokenize` returns a promise that resolves with a {@link ApplePay~tokenizePayload|tokenizePayload}.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * var applePay = require('braintree-web/apple-pay');\n *\n * applePay.create({client: clientInstance}, function (applePayErr, applePayInstance) {\n * if (applePayErr) {\n * // Handle error here\n * return;\n * }\n *\n * var paymentRequest = applePayInstance.createPaymentRequest({\n * total: {\n * label: 'My Company',\n * amount: '19.99'\n * }\n * });\n * var session = new ApplePaySession(3, paymentRequest);\n *\n * session.onpaymentauthorized = function (event) {\n * applePayInstance.tokenize({\n * token: event.payment.token\n * }, function (tokenizeErr, tokenizedPayload) {\n * if (tokenizeErr) {\n * session.completePayment(ApplePaySession.STATUS_FAILURE);\n * return;\n * }\n * // Send the tokenizedPayload to your server here!\n *\n * // Once the transaction is complete, call completePayment\n * // to close the Apple Pay sheet\n * session.completePayment(ApplePaySession.STATUS_SUCCESS);\n * });\n * };\n *\n * // ...\n * });\n */\nApplePay.prototype.tokenize = function (options) {\n var self = this;\n\n if (!options.token) {\n return Promise.reject(\n new BraintreeError(errors.APPLE_PAY_PAYMENT_TOKEN_REQUIRED)\n );\n }\n\n return this._waitForClient()\n .then(function () {\n return self._client.request({\n method: \"post\",\n endpoint: \"payment_methods/apple_payment_tokens\",\n data: {\n _meta: {\n source: \"apple-pay\",\n },\n applePaymentToken: Object.assign({}, options.token, {\n // The gateway requires this key to be base64-encoded.\n paymentData: btoa(JSON.stringify(options.token.paymentData)),\n }),\n },\n });\n })\n .then(function (response) {\n analytics.sendEvent(self._client, \"applepay.tokenize.succeeded\");\n\n return Promise.resolve(response.applePayCards[0]);\n })\n .catch(function (err) {\n analytics.sendEvent(self._client, \"applepay.tokenize.failed\");\n\n return Promise.reject(\n new BraintreeError({\n type: errors.APPLE_PAY_TOKENIZATION.type,\n code: errors.APPLE_PAY_TOKENIZATION.code,\n message: errors.APPLE_PAY_TOKENIZATION.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/apple-pay.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * applePayInstance.teardown();\n * @example <caption>With callback</caption>\n * applePayInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nApplePay.prototype.teardown = function () {\n convertMethodsToError(this, methods(ApplePay.prototype));\n\n return Promise.resolve();\n};\n\nmodule.exports = wrapPromise.wrapPrototype(ApplePay);\n\n},{\"../lib/analytics\":132,\"../lib/braintree-error\":137,\"../lib/convert-methods-to-error\":140,\"../lib/methods\":168,\"./errors\":89,\"@braintree/wrap-promise\":40}],89:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Apple Pay - Creation Error Codes\n * @description Errors that occur when [creating the Apple Pay component](./module-braintree-web_apple-pay.html#.create).\n * @property {MERCHANT} APPLE_PAY_NOT_ENABLED Occurs when the authorization used is not authorized to process Apple Pay.\n */\n\n/**\n * @name BraintreeError.Apple Pay - performValidation Error Codes\n * @description Errors that occur when [validating](./ApplePay.html#performValidation).\n * @property {MERCHANT} APPLE_PAY_VALIDATION_URL_REQUIRED Occurs when the `validationURL` option is not passed in.\n * @property {MERCHANT} APPLE_PAY_MERCHANT_VALIDATION_FAILED Occurs when the website domain has not been registered in the Braintree control panel.\n * @property {NETWORK} APPLE_PAY_MERCHANT_VALIDATION_NETWORK Occurs when an unknown network error occurs.\n */\n\n/**\n * @name BraintreeError.Apple Pay - tokenize Error Codes\n * @description Errors that occur when [tokenizing](./ApplePay.html#tokenize).\n * @property {MERCHANT} APPLE_PAY_PAYMENT_TOKEN_REQUIRED Occurs when the `token` option is not passed in.\n * @property {NETWORK} APPLE_PAY_TOKENIZATION Occurs when an unknown network error occurs.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n APPLE_PAY_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"APPLE_PAY_NOT_ENABLED\",\n message: \"Apple Pay is not enabled for this merchant.\",\n },\n APPLE_PAY_VALIDATION_URL_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"APPLE_PAY_VALIDATION_URL_REQUIRED\",\n message: \"performValidation must be called with a validationURL.\",\n },\n APPLE_PAY_MERCHANT_VALIDATION_NETWORK: {\n type: BraintreeError.types.NETWORK,\n code: \"APPLE_PAY_MERCHANT_VALIDATION_NETWORK\",\n message: \"A network error occurred when validating the Apple Pay merchant.\",\n },\n APPLE_PAY_MERCHANT_VALIDATION_FAILED: {\n type: BraintreeError.types.MERCHANT,\n code: \"APPLE_PAY_MERCHANT_VALIDATION_FAILED\",\n message:\n \"Make sure you have registered your domain name in the Braintree Control Panel.\",\n },\n APPLE_PAY_PAYMENT_TOKEN_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"APPLE_PAY_PAYMENT_TOKEN_REQUIRED\",\n message: \"tokenize must be called with a payment token.\",\n },\n APPLE_PAY_TOKENIZATION: {\n type: BraintreeError.types.NETWORK,\n code: \"APPLE_PAY_TOKENIZATION\",\n message: \"A network error occurred when processing the Apple Pay payment.\",\n },\n};\n\n},{\"../lib/braintree-error\":137}],90:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @module braintree-web/apple-pay\n * @description Accept Apple Pay on the Web. *This component is currently in beta and is subject to change.*\n */\n\nvar ApplePay = _dereq_(\"./apple-pay\");\nvar analytics = _dereq_(\"../lib/analytics\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar errors = _dereq_(\"./errors\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {boolean} [options.useDeferredClient] Used in conjunction with `authorization`, allows the Apple Pay instance to be available right away by fetching the client configuration in the background. When this option is used, {@link ApplePay#createPaymentRequest} will return a promise that resolves with the configuration instead of returning synchronously.\n * @param {callback} [callback] The second argument, `data`, is the {@link ApplePay} instance. If no callback is provided, `create` returns a promise that resolves with the {@link ApplePay} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"Apple Pay\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n var applePayInstance;\n var createPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n })\n .then(function (client) {\n if (!client.getConfiguration().gatewayConfiguration.applePayWeb) {\n return Promise.reject(\n new BraintreeError(errors.APPLE_PAY_NOT_ENABLED)\n );\n }\n\n analytics.sendEvent(client, \"applepay.initialized\");\n\n return client;\n });\n\n options.createPromise = createPromise;\n applePayInstance = new ApplePay(options);\n\n if (!options.useDeferredClient) {\n return createPromise.then(function (client) {\n applePayInstance._client = client;\n\n return applePayInstance;\n });\n }\n\n return applePayInstance;\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/analytics\":132,\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./apple-pay\":88,\"./errors\":89,\"@braintree/wrap-promise\":40}],91:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BRAINTREE_VERSION = _dereq_(\"./constants\").BRAINTREE_VERSION;\n\nvar GraphQL = _dereq_(\"./request/graphql\");\nvar request = _dereq_(\"./request\");\nvar isVerifiedDomain = _dereq_(\"../lib/is-verified-domain\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar convertToBraintreeError = _dereq_(\"../lib/convert-to-braintree-error\");\nvar getGatewayConfiguration = _dereq_(\"./get-configuration\").getConfiguration;\nvar createAuthorizationData = _dereq_(\"../lib/create-authorization-data\");\nvar addMetadata = _dereq_(\"../lib/add-metadata\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar once = _dereq_(\"../lib/once\");\nvar deferred = _dereq_(\"../lib/deferred\");\nvar assign = _dereq_(\"../lib/assign\").assign;\nvar analytics = _dereq_(\"../lib/analytics\");\nvar errors = _dereq_(\"./errors\");\nvar VERSION = _dereq_(\"../lib/constants\").VERSION;\nvar GRAPHQL_URLS = _dereq_(\"../lib/constants\").GRAPHQL_URLS;\nvar methods = _dereq_(\"../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar assets = _dereq_(\"../lib/assets\");\nvar FRAUDNET_FNCLS = _dereq_(\"../lib/constants\").FRAUDNET_FNCLS;\nvar FRAUDNET_SOURCE = _dereq_(\"../lib/constants\").FRAUDNET_SOURCE;\nvar FRAUDNET_URL = _dereq_(\"../lib/constants\").FRAUDNET_URL;\n\nvar cachedClients = {};\n\n/**\n * This object is returned by {@link Client#getConfiguration|getConfiguration}. This information is used extensively by other Braintree modules to properly configure themselves.\n * @typedef {object} Client~configuration\n * @property {object} client The braintree-web/client parameters.\n * @property {string} client.authorization A tokenizationKey or clientToken.\n * @property {object} gatewayConfiguration Gateway-supplied configuration.\n * @property {object} analyticsMetadata Analytics-specific data.\n * @property {string} analyticsMetadata.sessionId Uniquely identifies a browsing session.\n * @property {string} analyticsMetadata.sdkVersion The braintree.js version.\n * @property {string} analyticsMetadata.merchantAppId Identifies the merchant's web app.\n */\n\n/**\n * @class\n * @param {Client~configuration} configuration Options\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/client.create|braintree.client.create} instead.</strong>\n * @classdesc This class is required by many other Braintree components. It serves as the base API layer that communicates with our servers. It is also capable of being used to formulate direct calls to our servers, such as direct credit card tokenization. See {@link Client#request}.\n */\nfunction Client(configuration) {\n var configurationJSON, gatewayConfiguration;\n\n configuration = configuration || {};\n\n configurationJSON = JSON.stringify(configuration);\n gatewayConfiguration = configuration.gatewayConfiguration;\n\n if (!gatewayConfiguration) {\n throw new BraintreeError(errors.CLIENT_MISSING_GATEWAY_CONFIGURATION);\n }\n\n [\"assetsUrl\", \"clientApiUrl\", \"configUrl\"].forEach(function (property) {\n if (\n property in gatewayConfiguration &&\n !isVerifiedDomain(gatewayConfiguration[property])\n ) {\n throw new BraintreeError({\n type: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.type,\n code: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.code,\n message: property + \" property is on an invalid domain.\",\n });\n }\n });\n\n /**\n * Returns a copy of the configuration values.\n * @public\n * @returns {Client~configuration} configuration\n */\n this.getConfiguration = function () {\n return JSON.parse(configurationJSON);\n };\n\n this._request = request;\n this._configuration = this.getConfiguration();\n\n this._clientApiBaseUrl = gatewayConfiguration.clientApiUrl + \"/v1/\";\n\n if (gatewayConfiguration.graphQL) {\n if (!isVerifiedDomain(gatewayConfiguration.graphQL.url)) {\n throw new BraintreeError({\n type: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.type,\n code: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.code,\n message: \"graphQL.url property is on an invalid domain.\",\n });\n }\n\n this._graphQL = new GraphQL({\n graphQL: gatewayConfiguration.graphQL,\n });\n }\n}\n\nClient.initialize = function (options) {\n var clientInstance, authData;\n var promise = cachedClients[options.authorization];\n\n if (promise) {\n analytics.sendEvent(promise, \"custom.client.load.cached\");\n\n return promise;\n }\n\n try {\n authData = createAuthorizationData(options.authorization);\n } catch (err) {\n return Promise.reject(\n new BraintreeError(errors.CLIENT_INVALID_AUTHORIZATION)\n );\n }\n\n promise = getGatewayConfiguration(authData).then(function (configuration) {\n if (options.debug) {\n configuration.isDebug = true;\n }\n\n configuration.authorization = options.authorization;\n\n clientInstance = new Client(configuration);\n\n return clientInstance;\n });\n\n cachedClients[options.authorization] = promise;\n\n analytics.sendEvent(promise, \"custom.client.load.initialized\");\n\n return promise\n .then(function (client) {\n analytics.sendEvent(clientInstance, \"custom.client.load.succeeded\");\n\n return client;\n })\n .catch(function (err) {\n delete cachedClients[options.authorization];\n\n return Promise.reject(err);\n });\n};\n\n// Primarily used for testing the client initalization call\nClient.clearCache = function () {\n cachedClients = {};\n};\n\nClient.prototype._findOrCreateFraudnetJSON = function (clientMetadataId) {\n var el = document.querySelector('script[fncls=\"' + FRAUDNET_FNCLS + '\"]');\n var config, additionalData, authorizationFingerprint, parameters;\n\n if (!el) {\n el = document.body.appendChild(document.createElement(\"script\"));\n el.type = \"application/json\";\n el.setAttribute(\"fncls\", FRAUDNET_FNCLS);\n }\n\n config = this.getConfiguration();\n additionalData = {\n rda_tenant: \"bt_card\", // eslint-disable-line camelcase\n mid: config.gatewayConfiguration.merchantId,\n };\n authorizationFingerprint = config.authorizationFingerprint;\n\n if (authorizationFingerprint) {\n authorizationFingerprint.split(\"&\").forEach(function (pieces) {\n var component = pieces.split(\"=\");\n\n if (component[0] === \"customer_id\" && component.length > 1) {\n additionalData.cid = component[1];\n }\n });\n }\n\n parameters = {\n f: clientMetadataId.substr(0, 32),\n fp: additionalData,\n bu: false,\n s: FRAUDNET_SOURCE,\n };\n el.text = JSON.stringify(parameters);\n};\n\n/**\n * Used by other modules to formulate all network requests to the Braintree gateway. It is also capable of being used directly from your own form to tokenize credit card information. However, be sure to satisfy PCI compliance if you use direct card tokenization.\n * @public\n * @param {object} options Request options:\n * @param {string} options.method HTTP method, e.g. \"get\" or \"post\".\n * @param {string} options.endpoint Endpoint path, e.g. \"payment_methods\".\n * @param {object} options.data Data to send with the request.\n * @param {number} [options.timeout=60000] Set a timeout (in milliseconds) for the request.\n * @param {callback} [callback] The second argument, <code>data</code>, is the returned server data.\n * @example\n * <caption>Direct Credit Card Tokenization</caption>\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * var form = document.getElementById('my-form-id');\n * var data = {\n * creditCard: {\n * number: form['cc-number'].value,\n * cvv: form['cc-cvv'].value,\n * expirationDate: form['cc-expiration-date'].value,\n * billingAddress: {\n * postalCode: form['cc-postal-code'].value\n * },\n * options: {\n * validate: false\n * }\n * }\n * };\n *\n * // Warning: For a merchant to be eligible for the easiest level of PCI compliance (SAQ A),\n * // payment fields cannot be hosted on your checkout page.\n * // For an alternative to the following, use Hosted Fields.\n * clientInstance.request({\n * endpoint: 'payment_methods/credit_cards',\n * method: 'post',\n * data: data\n * }, function (requestErr, response) {\n * // More detailed example of handling API errors: https://codepen.io/braintree/pen/MbwjdM\n * if (requestErr) { throw new Error(requestErr); }\n *\n * console.log('Got nonce:', response.creditCards[0].nonce);\n * });\n * });\n * @example\n * <caption>Tokenizing Fields for AVS Checks</caption>\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * var form = document.getElementById('my-form-id');\n * var data = {\n * creditCard: {\n * number: form['cc-number'].value,\n * cvv: form['cc-cvv'].value,\n * expirationDate: form['cc-date'].value,\n * // The billing address can be checked with AVS rules.\n * // See: https://articles.braintreepayments.com/support/guides/fraud-tools/basic/avs-cvv-rules\n * billingAddress: {\n * postalCode: form['cc-postal-code'].value,\n * streetAddress: form['cc-street-address'].value,\n * countryName: form['cc-country-name'].value,\n * countryCodeAlpha2: form['cc-country-alpha2'].value,\n * countryCodeAlpha3: form['cc-country-alpha3'].value,\n * countryCodeNumeric: form['cc-country-numeric'].value\n * },\n * options: {\n * validate: false\n * }\n * }\n * };\n *\n * // Warning: For a merchant to be eligible for the easiest level of PCI compliance (SAQ A),\n * // payment fields cannot be hosted on your checkout page.\n * // For an alternative to the following, use Hosted Fields.\n * clientInstance.request({\n * endpoint: 'payment_methods/credit_cards',\n * method: 'post',\n * data: data\n * }, function (requestErr, response) {\n * // More detailed example of handling API errors: https://codepen.io/braintree/pen/MbwjdM\n * if (requestErr) { throw new Error(requestErr); }\n *\n * console.log('Got nonce:', response.creditCards[0].nonce);\n * });\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nClient.prototype.request = function (options, callback) {\n var self = this; // eslint-disable-line no-invalid-this\n var requestPromise = new Promise(function (resolve, reject) {\n var optionName, api, baseUrl, requestOptions;\n var shouldCollectData = Boolean(\n options.endpoint === \"payment_methods/credit_cards\" &&\n self.getConfiguration().gatewayConfiguration.creditCards\n .collectDeviceData\n );\n\n if (options.api !== \"graphQLApi\") {\n if (!options.method) {\n optionName = \"options.method\";\n } else if (!options.endpoint) {\n optionName = \"options.endpoint\";\n }\n }\n\n if (optionName) {\n throw new BraintreeError({\n type: errors.CLIENT_OPTION_REQUIRED.type,\n code: errors.CLIENT_OPTION_REQUIRED.code,\n message: optionName + \" is required when making a request.\",\n });\n }\n\n if (\"api\" in options) {\n api = options.api;\n } else {\n api = \"clientApi\";\n }\n\n requestOptions = {\n method: options.method,\n graphQL: self._graphQL,\n timeout: options.timeout,\n metadata: self._configuration.analyticsMetadata,\n };\n\n if (api === \"clientApi\") {\n baseUrl = self._clientApiBaseUrl;\n\n requestOptions.data = addMetadata(self._configuration, options.data);\n } else if (api === \"graphQLApi\") {\n baseUrl =\n GRAPHQL_URLS[self._configuration.gatewayConfiguration.environment];\n options.endpoint = \"\";\n requestOptions.method = \"post\";\n requestOptions.data = assign(\n {\n clientSdkMetadata: {\n platform: self._configuration.analyticsMetadata.platform,\n source: self._configuration.analyticsMetadata.source,\n integration: self._configuration.analyticsMetadata.integration,\n sessionId: self._configuration.analyticsMetadata.sessionId,\n version: VERSION,\n },\n },\n options.data\n );\n\n requestOptions.headers = getAuthorizationHeadersForGraphQL(\n self._configuration\n );\n } else {\n throw new BraintreeError({\n type: errors.CLIENT_OPTION_INVALID.type,\n code: errors.CLIENT_OPTION_INVALID.code,\n message: \"options.api is invalid.\",\n });\n }\n\n requestOptions.url = baseUrl + options.endpoint;\n requestOptions.sendAnalyticsEvent = function (kind) {\n analytics.sendEvent(self, kind);\n };\n\n self._request(requestOptions, function (err, data, status) {\n var resolvedData, requestError;\n\n requestError = formatRequestError(status, err);\n\n if (requestError) {\n reject(requestError);\n\n return;\n }\n\n if (api === \"graphQLApi\" && data.errors) {\n reject(\n convertToBraintreeError(data.errors, {\n type: errors.CLIENT_GRAPHQL_REQUEST_ERROR.type,\n code: errors.CLIENT_GRAPHQL_REQUEST_ERROR.code,\n message: errors.CLIENT_GRAPHQL_REQUEST_ERROR.message,\n })\n );\n\n return;\n }\n\n resolvedData = assign({ _httpStatus: status }, data);\n\n if (\n shouldCollectData &&\n resolvedData.creditCards &&\n resolvedData.creditCards.length > 0\n ) {\n self._findOrCreateFraudnetJSON(resolvedData.creditCards[0].nonce);\n\n assets.loadScript({\n src: FRAUDNET_URL,\n forceScriptReload: true,\n });\n }\n resolve(resolvedData);\n });\n });\n\n if (typeof callback === \"function\") {\n callback = once(deferred(callback));\n\n requestPromise\n .then(function (response) {\n callback(null, response, response._httpStatus);\n })\n .catch(function (err) {\n var status = err && err.details && err.details.httpStatus;\n\n callback(err, null, status);\n });\n\n return;\n }\n\n return requestPromise; // eslint-disable-line consistent-return\n};\n\n// eslint-disable-next-line consistent-return\nfunction formatRequestError(status, err) {\n var requestError;\n\n if (status === -1) {\n requestError = new BraintreeError(errors.CLIENT_REQUEST_TIMEOUT);\n } else if (status === 401) {\n requestError = new BraintreeError(errors.CLIENT_AUTHORIZATION_INVALID);\n } else if (status === 403) {\n requestError = new BraintreeError(errors.CLIENT_AUTHORIZATION_INSUFFICIENT);\n } else if (status === 429) {\n requestError = new BraintreeError(errors.CLIENT_RATE_LIMITED);\n } else if (status >= 500) {\n requestError = new BraintreeError(errors.CLIENT_GATEWAY_NETWORK);\n } else if (status < 200 || status >= 400) {\n requestError = convertToBraintreeError(err, {\n type: errors.CLIENT_REQUEST_ERROR.type,\n code: errors.CLIENT_REQUEST_ERROR.code,\n message: errors.CLIENT_REQUEST_ERROR.message,\n });\n }\n\n if (requestError) {\n requestError.details = requestError.details || {};\n requestError.details.httpStatus = status;\n\n return requestError;\n }\n}\n\nClient.prototype.toJSON = function () {\n return this.getConfiguration();\n};\n\n/**\n * Returns the Client version.\n * @public\n * @returns {String} The created client's version.\n * @example\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * console.log(clientInstance.getVersion()); // Ex: 1.0.0\n * });\n * @returns {void}\n */\nClient.prototype.getVersion = function () {\n return VERSION;\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/client.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * clientInstance.teardown();\n * @example <caption>With callback</caption>\n * clientInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nClient.prototype.teardown = wrapPromise(function () {\n var self = this; // eslint-disable-line no-invalid-this\n\n delete cachedClients[self.getConfiguration().authorization];\n convertMethodsToError(self, methods(Client.prototype));\n\n return Promise.resolve();\n});\n\nfunction getAuthorizationHeadersForGraphQL(configuration) {\n var token =\n configuration.authorizationFingerprint || configuration.authorization;\n\n return {\n Authorization: \"Bearer \" + token,\n \"Braintree-Version\": BRAINTREE_VERSION,\n };\n}\n\nmodule.exports = Client;\n\n},{\"../lib/add-metadata\":131,\"../lib/analytics\":132,\"../lib/assets\":133,\"../lib/assign\":134,\"../lib/braintree-error\":137,\"../lib/constants\":139,\"../lib/convert-methods-to-error\":140,\"../lib/convert-to-braintree-error\":141,\"../lib/create-authorization-data\":143,\"../lib/deferred\":145,\"../lib/is-verified-domain\":166,\"../lib/methods\":168,\"../lib/once\":169,\"./constants\":92,\"./errors\":93,\"./get-configuration\":94,\"./request\":105,\"./request/graphql\":103,\"@braintree/wrap-promise\":40}],92:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n BRAINTREE_VERSION: \"2018-05-10\",\n};\n\n},{}],93:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Client - Internal Error Codes\n * @ignore\n * @description These codes should never be experienced by the merchant directly.\n * @property {MERCHANT} CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN An error to prevent client creation for domains that are not allowed in the JS.\n * @property {INTERNAL} CLIENT_MISSING_GATEWAY_CONFIGURATION Occurs when the client is created without a gateway configuration. Should never happen.\n */\n\n/**\n * @name BraintreeError.Client - Create Error Codes\n * @description Errors that may occur when [creating the client](./module-braintree-web_client.html#.create)\n * @property {MERCHANT} CLIENT_INVALID_AUTHORIZATION Occurs when client token cannot be parsed.\n */\n\n/**\n * @name BraintreeError.Client - Request Error Codes\n * @description Errors that may occur when [using the request method](./Client.html#request)\n * @property {MERCHANT} CLIENT_OPTION_REQUIRED An option required in the request method was not provided. Usually `options.method` or `options.endpoint`\n * @property {MERCHANT} CLIENT_OPTION_INVALID The request option provided is invalid.\n * @property {MERCHANT} CLIENT_GATEWAY_NETWORK The Braintree gateway could not be contacted.\n * @property {NETWORK} CLIENT_REQUEST_TIMEOUT The request took too long to complete and timed out.\n * @property {NETWORK} CLIENT_REQUEST_ERROR The response from a request had status 400 or greater.\n * @property {NETWORK} CLIENT_GRAPHQL_REQUEST_ERROR The response from a request to GraphQL contained an error.\n * @property {MERCHANT} CLIENT_RATE_LIMITED The response from a request had a status of 429, indicating rate limiting.\n * @property {MERCHANT} CLIENT_AUTHORIZATION_INSUFFICIENT The user associated with the client token or tokenization key does not have permissions to make the request.\n * @property {MERCHANT} CLIENT_AUTHORIZATION_INVALID The provided authorization could not be found. Either the client token has expired and a new client token must be generated or the tokenization key used is set to be inactive or has been deleted.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN\",\n },\n CLIENT_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_OPTION_REQUIRED\",\n },\n CLIENT_OPTION_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_OPTION_INVALID\",\n },\n CLIENT_MISSING_GATEWAY_CONFIGURATION: {\n type: BraintreeError.types.INTERNAL,\n code: \"CLIENT_MISSING_GATEWAY_CONFIGURATION\",\n message: \"Missing gatewayConfiguration.\",\n },\n CLIENT_INVALID_AUTHORIZATION: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_INVALID_AUTHORIZATION\",\n message:\n \"Authorization is invalid. Make sure your client token or tokenization key is valid.\",\n },\n CLIENT_GATEWAY_NETWORK: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_GATEWAY_NETWORK\",\n message: \"Cannot contact the gateway at this time.\",\n },\n CLIENT_REQUEST_TIMEOUT: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_REQUEST_TIMEOUT\",\n message: \"Request timed out waiting for a reply.\",\n },\n CLIENT_REQUEST_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_REQUEST_ERROR\",\n message: \"There was a problem with your request.\",\n },\n CLIENT_GRAPHQL_REQUEST_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_GRAPHQL_REQUEST_ERROR\",\n message: \"There was a problem with your request.\",\n },\n CLIENT_RATE_LIMITED: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_RATE_LIMITED\",\n message: \"You are being rate-limited; please try again in a few minutes.\",\n },\n CLIENT_AUTHORIZATION_INSUFFICIENT: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_AUTHORIZATION_INSUFFICIENT\",\n message: \"The authorization used has insufficient privileges.\",\n },\n CLIENT_AUTHORIZATION_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_AUTHORIZATION_INVALID\",\n message:\n \"Either the client token has expired and a new one should be generated or the tokenization key has been deactivated or deleted.\",\n },\n};\n\n},{\"../lib/braintree-error\":137}],94:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar request = _dereq_(\"./request\");\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar constants = _dereq_(\"../lib/constants\");\nvar errors = _dereq_(\"./errors\");\nvar GraphQL = _dereq_(\"./request/graphql\");\nvar GRAPHQL_URLS = _dereq_(\"../lib/constants\").GRAPHQL_URLS;\nvar isDateStringBeforeOrOn = _dereq_(\"../lib/is-date-string-before-or-on\");\n\nvar BRAINTREE_VERSION = _dereq_(\"./constants\").BRAINTREE_VERSION;\n\nfunction getConfiguration(authData) {\n return new Promise(function (resolve, reject) {\n var configuration, attrs, configUrl, reqOptions;\n var sessionId = uuid();\n var analyticsMetadata = {\n merchantAppId: window.location.host,\n platform: constants.PLATFORM,\n sdkVersion: constants.VERSION,\n source: constants.SOURCE,\n // NEXT_MAJOR_VERSION remove one of these to not duplicate data. Target parity with mobile platforms approach.\n integration: constants.INTEGRATION,\n integrationType: constants.INTEGRATION,\n sessionId: sessionId,\n };\n\n attrs = authData.attrs;\n configUrl = authData.configUrl;\n\n attrs._meta = analyticsMetadata;\n attrs.braintreeLibraryVersion = constants.BRAINTREE_LIBRARY_VERSION;\n attrs.configVersion = \"3\";\n\n reqOptions = {\n url: configUrl,\n method: \"GET\",\n data: attrs,\n };\n\n if (attrs.authorizationFingerprint && authData.graphQL) {\n if (isDateStringBeforeOrOn(authData.graphQL.date, BRAINTREE_VERSION)) {\n reqOptions.graphQL = new GraphQL({\n graphQL: {\n url: authData.graphQL.url,\n features: [\"configuration\"],\n },\n });\n }\n\n reqOptions.metadata = analyticsMetadata;\n } else if (attrs.tokenizationKey) {\n reqOptions.graphQL = new GraphQL({\n graphQL: {\n url: GRAPHQL_URLS[authData.environment],\n features: [\"configuration\"],\n },\n });\n\n reqOptions.metadata = analyticsMetadata;\n }\n\n // NEXT_MAJOR_VERSION\n // there are various issues with the config endpoint where the values returned\n // do not match the values from the merchant account id passed into a client token\n // we need to update the configuration request endpoint to be able to pass the\n // correct values. The following ones are incorrect\n // * applePayWeb - definitely supportedNetworks, which compiles all the card\n // networks from all the merchant accounts instead of providing just the\n // ones from the specified one. The same is probably true for ios apple pay\n // Also the merchantidentifier\n // NEXT_MAJOR_VERSION Allow passing in merchant account id when creating the component\n // to fetch the config for that merchant account id (particularly helpful when using\n // a tokenization key for authorization)\n request(reqOptions, function (err, response, status) {\n var errorTemplate;\n\n if (err) {\n if (status === 403) {\n errorTemplate = errors.CLIENT_AUTHORIZATION_INSUFFICIENT;\n } else if (status === 401) {\n errorTemplate = errors.CLIENT_AUTHORIZATION_INVALID;\n } else {\n errorTemplate = errors.CLIENT_GATEWAY_NETWORK;\n }\n\n reject(\n new BraintreeError({\n type: errorTemplate.type,\n code: errorTemplate.code,\n message: errorTemplate.message,\n details: {\n originalError: err,\n },\n })\n );\n\n return;\n }\n\n configuration = {\n authorizationType: attrs.tokenizationKey\n ? \"TOKENIZATION_KEY\"\n : \"CLIENT_TOKEN\",\n authorizationFingerprint: attrs.authorizationFingerprint,\n analyticsMetadata: analyticsMetadata,\n gatewayConfiguration: response,\n };\n\n resolve(configuration);\n });\n });\n}\n\nmodule.exports = {\n getConfiguration: wrapPromise(getConfiguration),\n};\n\n},{\"../lib/braintree-error\":137,\"../lib/constants\":139,\"../lib/is-date-string-before-or-on\":164,\"./constants\":92,\"./errors\":93,\"./request\":105,\"./request/graphql\":103,\"@braintree/uuid\":36,\"@braintree/wrap-promise\":40}],95:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar Client = _dereq_(\"./client\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar sharedErrors = _dereq_(\"../lib/errors\");\n\n/** @module braintree-web/client */\n\n/**\n * @function create\n * @description This function is the entry point for the <code>braintree.client</code> module. It is used for creating {@link Client} instances that service communication to Braintree servers.\n * @param {object} options Object containing all {@link Client} options:\n * @param {string} options.authorization A tokenizationKey or clientToken.\n * @param {callback} [callback] The second argument, <code>data</code>, is the {@link Client} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * if (createErr) {\n * if (createErr.code === 'CLIENT_AUTHORIZATION_INVALID') {\n * // either the client token has expired, and a new one should be generated\n * // or the tokenization key was deactivated or deleted\n * } else {\n * console.log('something went wrong creating the client instance', createErr);\n * }\n * return;\n * }\n *\n * // set up other components\n * });\n * @static\n */\nfunction create(options) {\n if (!options.authorization) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INSTANTIATION_OPTION_REQUIRED.type,\n code: sharedErrors.INSTANTIATION_OPTION_REQUIRED.code,\n message:\n \"options.authorization is required when instantiating a client.\",\n })\n );\n }\n\n return Client.initialize(options);\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/braintree-error\":137,\"../lib/errors\":148,\"./client\":91,\"@braintree/wrap-promise\":40}],96:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar querystring = _dereq_(\"../../lib/querystring\");\nvar assign = _dereq_(\"../../lib/assign\").assign;\nvar prepBody = _dereq_(\"./prep-body\");\nvar parseBody = _dereq_(\"./parse-body\");\nvar xhr = _dereq_(\"./xhr\");\nvar isXHRAvailable = xhr.isAvailable;\nvar GraphQLRequest = _dereq_(\"./graphql/request\");\nvar DefaultRequest = _dereq_(\"./default-request\");\n\nvar MAX_TCP_RETRYCOUNT = 1;\nvar TCP_PRECONNECT_BUG_STATUS_CODE = 408;\n\nfunction requestShouldRetry(status) {\n return !status || status === TCP_PRECONNECT_BUG_STATUS_CODE;\n}\n\nfunction graphQLRequestShouldRetryWithClientApi(body) {\n var errorClass =\n !body.data &&\n body.errors &&\n body.errors[0] &&\n body.errors[0].extensions &&\n body.errors[0].extensions.errorClass;\n\n return errorClass === \"UNKNOWN\" || errorClass === \"INTERNAL\";\n}\n\nfunction _requestWithRetry(options, tcpRetryCount, cb) {\n var status, resBody, ajaxRequest, body, method, headers, parsedBody;\n var url = options.url;\n var graphQL = options.graphQL;\n var timeout = options.timeout;\n var req = xhr.getRequestObject();\n var callback = cb;\n var isGraphQLRequest = Boolean(\n graphQL && graphQL.isGraphQLRequest(url, options.data)\n );\n\n options.headers = assign(\n { \"Content-Type\": \"application/json\" },\n options.headers\n );\n\n if (isGraphQLRequest) {\n ajaxRequest = new GraphQLRequest(options);\n } else {\n ajaxRequest = new DefaultRequest(options);\n }\n\n url = ajaxRequest.getUrl();\n body = ajaxRequest.getBody();\n method = ajaxRequest.getMethod();\n headers = ajaxRequest.getHeaders();\n\n if (method === \"GET\") {\n url = querystring.queryify(url, body);\n body = null;\n }\n\n if (isXHRAvailable) {\n req.onreadystatechange = function () {\n if (req.readyState !== 4) {\n return;\n }\n\n if (req.status === 0 && isGraphQLRequest) {\n // If a merchant experiences a connection\n // issue to the GraphQL endpoint (possibly\n // due to a Content Security Policy), retry\n // the request against the old client API.\n delete options.graphQL;\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n\n parsedBody = parseBody(req.responseText);\n resBody = ajaxRequest.adaptResponseBody(parsedBody);\n status = ajaxRequest.determineStatus(req.status, parsedBody);\n\n if (status >= 400 || status < 200) {\n if (\n isGraphQLRequest &&\n graphQLRequestShouldRetryWithClientApi(parsedBody)\n ) {\n delete options.graphQL;\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n\n if (tcpRetryCount < MAX_TCP_RETRYCOUNT && requestShouldRetry(status)) {\n tcpRetryCount++;\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n callback(resBody || \"error\", null, status || 500);\n } else {\n callback(null, resBody, status);\n }\n };\n } else {\n if (options.headers) {\n url = querystring.queryify(url, headers);\n }\n\n req.onload = function () {\n callback(null, parseBody(req.responseText), req.status);\n };\n\n req.onerror = function () {\n // XDomainRequest does not report a body or status for errors, so\n // hardcode to 'error' and 500, respectively\n callback(\"error\", null, 500);\n };\n\n // This must remain for IE9 to work\n req.onprogress = function () {};\n\n req.ontimeout = function () {\n callback(\"timeout\", null, -1);\n };\n }\n\n try {\n req.open(method, url, true);\n } catch (requestOpenError) {\n // If a merchant has a Content Security Policy and they have\n // not allowed our endpoints, some browsers may\n // synchronously throw an error. If it is not a GraphQL\n // request, we throw the error. If it is a GraphQL request\n // we remove the GraphQL option and try the request against\n // the old client API.\n if (!isGraphQLRequest) {\n throw requestOpenError;\n }\n\n delete options.graphQL;\n\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n\n req.timeout = timeout;\n\n if (isXHRAvailable) {\n Object.keys(headers).forEach(function (headerKey) {\n req.setRequestHeader(headerKey, headers[headerKey]);\n });\n }\n\n try {\n req.send(prepBody(method, body));\n } catch (e) {\n /* ignored */\n }\n}\n\nfunction request(options, cb) {\n _requestWithRetry(options, 0, cb);\n}\n\nmodule.exports = {\n request: request,\n};\n\n},{\"../../lib/assign\":134,\"../../lib/querystring\":170,\"./default-request\":97,\"./graphql/request\":104,\"./parse-body\":106,\"./prep-body\":107,\"./xhr\":108}],97:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction DefaultRequest(options) {\n this._url = options.url;\n this._data = options.data;\n this._method = options.method;\n this._headers = options.headers;\n}\n\nDefaultRequest.prototype.getUrl = function () {\n return this._url;\n};\n\nDefaultRequest.prototype.getBody = function () {\n return this._data;\n};\n\nDefaultRequest.prototype.getMethod = function () {\n return this._method;\n};\n\nDefaultRequest.prototype.getHeaders = function () {\n return this._headers;\n};\n\nDefaultRequest.prototype.adaptResponseBody = function (parsedBody) {\n return parsedBody;\n};\n\nDefaultRequest.prototype.determineStatus = function (status) {\n return status;\n};\n\nmodule.exports = DefaultRequest;\n\n},{}],98:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar errorResponseAdapter = _dereq_(\"./error\");\nvar assign = _dereq_(\"../../../../lib/assign\").assign;\n\n/* eslint-disable camelcase */\nvar cardTypeTransforms = {\n creditCard: {\n AMERICAN_EXPRESS: \"American Express\",\n DISCOVER: \"Discover\",\n INTERNATIONAL_MAESTRO: \"Maestro\",\n JCB: \"JCB\",\n MASTERCARD: \"MasterCard\",\n SOLO: \"Solo\",\n UK_MAESTRO: \"UK Maestro\",\n UNION_PAY: \"UnionPay\",\n VISA: \"Visa\",\n ELO: \"Elo\",\n HIPER: \"Hiper\",\n HIPERCARD: \"Hipercard\",\n },\n applePayWeb: {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n DISCOVER: \"discover\",\n AMERICAN_EXPRESS: \"amex\",\n INTERNATIONAL_MAESTRO: \"maestro\",\n ELO: \"elo\",\n },\n visaCheckout: {\n VISA: \"Visa\",\n MASTERCARD: \"MasterCard\",\n DISCOVER: \"Discover\",\n AMERICAN_EXPRESS: \"American Express\",\n },\n googlePay: {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n DISCOVER: \"discover\",\n AMERICAN_EXPRESS: \"amex\",\n INTERNATIONAL_MAESTRO: \"maestro\",\n ELO: \"elo\",\n },\n masterpass: {\n VISA: \"visa\",\n MASTERCARD: \"master\",\n DISCOVER: \"discover\",\n AMERICAN_EXPRESS: \"amex\",\n DINERS: \"diners\",\n INTERNATIONAL_MAESTRO: \"maestro\",\n JCB: \"jcb\",\n },\n};\n/* eslint-enable camelcase */\n\nfunction configurationResponseAdapter(responseBody, ctx) {\n var adaptedResponse;\n\n if (responseBody.data && !responseBody.errors) {\n adaptedResponse = adaptConfigurationResponseBody(responseBody, ctx);\n } else {\n adaptedResponse = errorResponseAdapter(responseBody);\n }\n\n return adaptedResponse;\n}\n\nfunction adaptConfigurationResponseBody(body, ctx) {\n var configuration = body.data.clientConfiguration;\n var response;\n\n response = {\n environment: configuration.environment.toLowerCase(),\n clientApiUrl: configuration.clientApiUrl,\n assetsUrl: configuration.assetsUrl,\n analytics: {\n url: configuration.analyticsUrl,\n },\n merchantId: configuration.merchantId,\n venmo: \"off\",\n };\n\n if (configuration.supportedFeatures) {\n response.graphQL = {\n url: ctx._graphQL._config.url,\n features: configuration.supportedFeatures.map(function (feature) {\n return feature.toLowerCase();\n }),\n };\n }\n\n if (configuration.braintreeApi) {\n response.braintreeApi = configuration.braintreeApi;\n }\n\n if (configuration.applePayWeb) {\n response.applePayWeb = configuration.applePayWeb;\n response.applePayWeb.supportedNetworks = mapCardTypes(\n configuration.applePayWeb.supportedCardBrands,\n cardTypeTransforms.applePayWeb\n );\n\n delete response.applePayWeb.supportedCardBrands;\n }\n\n if (configuration.ideal) {\n response.ideal = configuration.ideal;\n }\n\n if (configuration.kount) {\n response.kount = {\n kountMerchantId: configuration.kount.merchantId,\n };\n }\n\n if (configuration.creditCard) {\n response.challenges = configuration.creditCard.challenges.map(function (\n challenge\n ) {\n return challenge.toLowerCase();\n });\n\n response.creditCards = {\n supportedCardTypes: mapCardTypes(\n configuration.creditCard.supportedCardBrands,\n cardTypeTransforms.creditCard\n ),\n };\n response.threeDSecureEnabled = configuration.creditCard.threeDSecureEnabled;\n response.threeDSecure = configuration.creditCard.threeDSecure;\n } else {\n response.challenges = [];\n response.creditCards = {\n supportedCardTypes: [],\n };\n response.threeDSecureEnabled = false;\n }\n\n if (configuration.googlePay) {\n response.androidPay = {\n displayName: configuration.googlePay.displayName,\n enabled: true,\n environment: configuration.googlePay.environment.toLowerCase(),\n googleAuthorizationFingerprint:\n configuration.googlePay.googleAuthorization,\n paypalClientId: configuration.googlePay.paypalClientId,\n supportedNetworks: mapCardTypes(\n configuration.googlePay.supportedCardBrands,\n cardTypeTransforms.googlePay\n ),\n };\n }\n\n if (configuration.venmo) {\n response.payWithVenmo = {\n merchantId: configuration.venmo.merchantId,\n accessToken: configuration.venmo.accessToken,\n environment: configuration.venmo.environment.toLowerCase(),\n enrichedCustomerDataEnabled:\n configuration.venmo.enrichedCustomerDataEnabled,\n };\n }\n\n if (configuration.paypal) {\n response.paypalEnabled = true;\n response.paypal = assign({}, configuration.paypal);\n response.paypal.currencyIsoCode = response.paypal.currencyCode;\n response.paypal.environment = response.paypal.environment.toLowerCase();\n\n delete response.paypal.currencyCode;\n } else {\n response.paypalEnabled = false;\n }\n\n if (configuration.unionPay) {\n response.unionPay = {\n enabled: true,\n merchantAccountId: configuration.unionPay.merchantAccountId,\n };\n }\n\n if (configuration.visaCheckout) {\n response.visaCheckout = {\n apikey: configuration.visaCheckout.apiKey,\n encryptionKey: configuration.visaCheckout.encryptionKey,\n externalClientId: configuration.visaCheckout.externalClientId,\n supportedCardTypes: mapCardTypes(\n configuration.visaCheckout.supportedCardBrands,\n cardTypeTransforms.visaCheckout\n ),\n };\n }\n\n if (configuration.masterpass) {\n response.masterpass = {\n merchantCheckoutId: configuration.masterpass.merchantCheckoutId,\n supportedNetworks: mapCardTypes(\n configuration.masterpass.supportedCardBrands,\n cardTypeTransforms.masterpass\n ),\n };\n }\n\n if (configuration.usBankAccount) {\n response.usBankAccount = {\n routeId: configuration.usBankAccount.routeId,\n plaid: {\n publicKey: configuration.usBankAccount.plaidPublicKey,\n },\n };\n }\n\n return response;\n}\n\nfunction mapCardTypes(cardTypes, cardTypeTransformMap) {\n return cardTypes.reduce(function (acc, type) {\n if (cardTypeTransformMap.hasOwnProperty(type)) {\n return acc.concat(cardTypeTransformMap[type]);\n }\n\n return acc;\n }, []);\n}\n\nmodule.exports = configurationResponseAdapter;\n\n},{\"../../../../lib/assign\":134,\"./error\":100}],99:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar errorResponseAdapter = _dereq_(\"./error\");\n\nvar CARD_BRAND_MAP = {\n /* eslint-disable camelcase */\n AMERICAN_EXPRESS: \"American Express\",\n DINERS: \"Discover\",\n DISCOVER: \"Discover\",\n ELO: \"Elo\",\n HIPER: \"Hiper\",\n HIPERCARD: \"Hipercard\",\n INTERNATIONAL_MAESTRO: \"Maestro\",\n JCB: \"JCB\",\n MASTERCARD: \"MasterCard\",\n UK_MAESTRO: \"Maestro\",\n UNION_PAY: \"UnionPay\",\n VISA: \"Visa\",\n /* eslint-enable camelcase */\n};\n\nvar BIN_DATA_MAP = {\n YES: \"Yes\",\n NO: \"No\",\n UNKNOWN: \"Unknown\",\n};\n\nvar AUTHENTICATION_INSIGHT_MAP = {\n PSDTWO: \"psd2\",\n};\n\nfunction creditCardTokenizationResponseAdapter(responseBody) {\n var adaptedResponse;\n\n if (responseBody.data && !responseBody.errors) {\n adaptedResponse = adaptTokenizeCreditCardResponseBody(responseBody);\n } else {\n adaptedResponse = errorResponseAdapter(responseBody);\n }\n\n return adaptedResponse;\n}\n\nfunction adaptTokenizeCreditCardResponseBody(body) {\n var data = body.data.tokenizeCreditCard;\n var creditCard = data.creditCard;\n var lastTwo = creditCard.last4 ? creditCard.last4.substr(2, 4) : \"\";\n var binData = creditCard.binData;\n var response, regulationEnvironment;\n\n if (binData) {\n [\n \"commercial\",\n \"debit\",\n \"durbinRegulated\",\n \"healthcare\",\n \"payroll\",\n \"prepaid\",\n ].forEach(function (key) {\n if (binData[key]) {\n binData[key] = BIN_DATA_MAP[binData[key]];\n } else {\n binData[key] = \"Unknown\";\n }\n });\n\n [\"issuingBank\", \"countryOfIssuance\", \"productId\"].forEach(function (key) {\n if (!binData[key]) {\n binData[key] = \"Unknown\";\n }\n });\n }\n\n response = {\n creditCards: [\n {\n binData: binData,\n consumed: false,\n description: lastTwo ? \"ending in \" + lastTwo : \"\",\n nonce: data.token,\n details: {\n cardholderName: creditCard.cardholderName,\n expirationMonth: creditCard.expirationMonth,\n expirationYear: creditCard.expirationYear,\n bin: creditCard.bin || \"\",\n cardType: CARD_BRAND_MAP[creditCard.brandCode] || \"Unknown\",\n lastFour: creditCard.last4 || \"\",\n lastTwo: lastTwo,\n },\n type: \"CreditCard\",\n threeDSecureInfo: null,\n },\n ],\n };\n\n if (data.authenticationInsight) {\n regulationEnvironment =\n data.authenticationInsight.customerAuthenticationRegulationEnvironment;\n response.creditCards[0].authenticationInsight = {\n regulationEnvironment:\n AUTHENTICATION_INSIGHT_MAP[regulationEnvironment] ||\n regulationEnvironment.toLowerCase(),\n };\n }\n\n return response;\n}\n\nmodule.exports = creditCardTokenizationResponseAdapter;\n\n},{\"./error\":100}],100:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction errorResponseAdapter(responseBody) {\n var response;\n var errorClass =\n responseBody.errors &&\n responseBody.errors[0] &&\n responseBody.errors[0].extensions &&\n responseBody.errors[0].extensions.errorClass;\n\n if (errorClass === \"VALIDATION\") {\n response = userErrorResponseAdapter(responseBody);\n } else if (errorClass) {\n response = errorWithClassResponseAdapter(responseBody);\n } else {\n response = {\n error: { message: \"There was a problem serving your request\" },\n fieldErrors: [],\n };\n }\n\n return response;\n}\n\nfunction errorWithClassResponseAdapter(responseBody) {\n return {\n error: { message: responseBody.errors[0].message },\n fieldErrors: [],\n };\n}\n\nfunction userErrorResponseAdapter(responseBody) {\n var fieldErrors = buildFieldErrors(responseBody.errors);\n\n if (fieldErrors.length === 0) {\n return { error: { message: responseBody.errors[0].message } };\n }\n\n return {\n error: { message: getLegacyMessage(fieldErrors) },\n fieldErrors: fieldErrors,\n };\n}\n\nfunction buildFieldErrors(errors) {\n var fieldErrors = [];\n\n errors.forEach(function (error) {\n if (!(error.extensions && error.extensions.inputPath)) {\n return;\n }\n addFieldError(error.extensions.inputPath.slice(1), error, fieldErrors);\n });\n\n return fieldErrors;\n}\n\nfunction addFieldError(inputPath, errorDetail, fieldErrors) {\n var fieldError;\n var legacyCode = errorDetail.extensions.legacyCode;\n var inputField = inputPath[0];\n\n if (inputPath.length === 1) {\n fieldErrors.push({\n code: legacyCode,\n field: inputField,\n message: errorDetail.message,\n });\n\n return;\n }\n\n fieldErrors.forEach(function (candidate) {\n if (candidate.field === inputField) {\n fieldError = candidate;\n }\n });\n\n if (!fieldError) {\n fieldError = { field: inputField, fieldErrors: [] };\n fieldErrors.push(fieldError);\n }\n\n addFieldError(inputPath.slice(1), errorDetail, fieldError.fieldErrors);\n}\n\nfunction getLegacyMessage(errors) {\n var legacyMessages = {\n creditCard: \"Credit card is invalid\",\n };\n\n var field = errors[0].field;\n\n return legacyMessages[field];\n}\n\nmodule.exports = errorResponseAdapter;\n\n},{}],101:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar CONFIGURATION_QUERY =\n \"query ClientConfiguration { \" +\n \" clientConfiguration { \" +\n \" analyticsUrl \" +\n \" environment \" +\n \" merchantId \" +\n \" assetsUrl \" +\n \" clientApiUrl \" +\n \" creditCard { \" +\n \" supportedCardBrands \" +\n \" challenges \" +\n \" threeDSecureEnabled \" +\n \" threeDSecure { \" +\n \" cardinalAuthenticationJWT \" +\n \" } \" +\n \" } \" +\n \" applePayWeb { \" +\n \" countryCode \" +\n \" currencyCode \" +\n \" merchantIdentifier \" +\n \" supportedCardBrands \" +\n \" } \" +\n \" googlePay { \" +\n \" displayName \" +\n \" supportedCardBrands \" +\n \" environment \" +\n \" googleAuthorization \" +\n \" paypalClientId \" +\n \" } \" +\n \" ideal { \" +\n \" routeId \" +\n \" assetsUrl \" +\n \" } \" +\n \" kount { \" +\n \" merchantId \" +\n \" } \" +\n \" masterpass { \" +\n \" merchantCheckoutId \" +\n \" supportedCardBrands \" +\n \" } \" +\n \" paypal { \" +\n \" displayName \" +\n \" clientId \" +\n \" assetsUrl \" +\n \" environment \" +\n \" environmentNoNetwork \" +\n \" unvettedMerchant \" +\n \" braintreeClientId \" +\n \" billingAgreementsEnabled \" +\n \" merchantAccountId \" +\n \" currencyCode \" +\n \" payeeEmail \" +\n \" } \" +\n \" unionPay { \" +\n \" merchantAccountId \" +\n \" } \" +\n \" usBankAccount { \" +\n \" routeId \" +\n \" plaidPublicKey \" +\n \" } \" +\n \" venmo { \" +\n \" merchantId \" +\n \" accessToken \" +\n \" environment \" +\n \" enrichedCustomerDataEnabled\" +\n \" } \" +\n \" visaCheckout { \" +\n \" apiKey \" +\n \" externalClientId \" +\n \" supportedCardBrands \" +\n \" } \" +\n \" braintreeApi { \" +\n \" accessToken \" +\n \" url \" +\n \" } \" +\n \" supportedFeatures \" +\n \" } \" +\n \"}\";\n\nfunction configuration() {\n return {\n query: CONFIGURATION_QUERY,\n operationName: \"ClientConfiguration\",\n };\n}\n\nmodule.exports = configuration;\n\n},{}],102:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar assign = _dereq_(\"../../../../lib/assign\").assign;\n\nfunction createMutation(config) {\n var hasAuthenticationInsight = config.hasAuthenticationInsight;\n var mutation = \"mutation TokenizeCreditCard($input: TokenizeCreditCardInput!\";\n\n if (hasAuthenticationInsight) {\n mutation += \", $authenticationInsightInput: AuthenticationInsightInput!\";\n }\n\n mutation +=\n \") { \" +\n \" tokenizeCreditCard(input: $input) { \" +\n \" token \" +\n \" creditCard { \" +\n \" bin \" +\n \" brandCode \" +\n \" last4 \" +\n \" cardholderName \" +\n \" expirationMonth\" +\n \" expirationYear\" +\n \" binData { \" +\n \" prepaid \" +\n \" healthcare \" +\n \" debit \" +\n \" durbinRegulated \" +\n \" commercial \" +\n \" payroll \" +\n \" issuingBank \" +\n \" countryOfIssuance \" +\n \" productId \" +\n \" } \" +\n \" } \";\n\n if (hasAuthenticationInsight) {\n mutation +=\n \" authenticationInsight(input: $authenticationInsightInput) {\" +\n \" customerAuthenticationRegulationEnvironment\" +\n \" }\";\n }\n\n mutation += \" } }\";\n\n return mutation;\n}\n\nfunction createCreditCardTokenizationBody(body, options) {\n var cc = body.creditCard;\n var billingAddress = cc && cc.billingAddress;\n var expDate = cc && cc.expirationDate;\n var expirationMonth =\n cc && (cc.expirationMonth || (expDate && expDate.split(\"/\")[0].trim()));\n var expirationYear =\n cc && (cc.expirationYear || (expDate && expDate.split(\"/\")[1].trim()));\n var variables = {\n input: {\n creditCard: {\n number: cc && cc.number,\n expirationMonth: expirationMonth,\n expirationYear: expirationYear,\n cvv: cc && cc.cvv,\n cardholderName: cc && cc.cardholderName,\n },\n options: {},\n },\n };\n\n if (options.hasAuthenticationInsight) {\n variables.authenticationInsightInput = {\n merchantAccountId: body.merchantAccountId,\n };\n }\n\n if (billingAddress) {\n variables.input.creditCard.billingAddress = billingAddress;\n }\n\n variables.input = addValidationRule(body, variables.input);\n\n return variables;\n}\n\nfunction addValidationRule(body, input) {\n var validate;\n\n if (\n body.creditCard &&\n body.creditCard.options &&\n typeof body.creditCard.options.validate === \"boolean\"\n ) {\n validate = body.creditCard.options.validate;\n } else if (\n (body.authorizationFingerprint && body.tokenizationKey) ||\n body.authorizationFingerprint\n ) {\n validate = true;\n } else if (body.tokenizationKey) {\n validate = false;\n }\n\n if (typeof validate === \"boolean\") {\n input.options = assign(\n {\n validate: validate,\n },\n input.options\n );\n }\n\n return input;\n}\n\nfunction creditCardTokenization(body) {\n var options = {\n hasAuthenticationInsight: Boolean(\n body.authenticationInsight && body.merchantAccountId\n ),\n };\n\n return {\n query: createMutation(options),\n variables: createCreditCardTokenizationBody(body, options),\n operationName: \"TokenizeCreditCard\",\n };\n}\n\nmodule.exports = creditCardTokenization;\n\n},{\"../../../../lib/assign\":134}],103:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar features = {\n tokenize_credit_cards: \"payment_methods/credit_cards\", // eslint-disable-line camelcase\n configuration: \"configuration\",\n};\n\nvar disallowedInputPaths = [\"creditCard.options.unionPayEnrollment\"];\n\nfunction GraphQL(config) {\n this._config = config.graphQL;\n}\n\nGraphQL.prototype.getGraphQLEndpoint = function () {\n return this._config.url;\n};\n\nGraphQL.prototype.isGraphQLRequest = function (url, body) {\n var featureEnabled;\n var path = this.getClientApiPath(url);\n\n if (!this._isGraphQLEnabled() || !path) {\n return false;\n }\n\n featureEnabled = this._config.features.some(function (feature) {\n return features[feature] === path;\n });\n\n if (containsDisallowedlistedKeys(body)) {\n return false;\n }\n\n return featureEnabled;\n};\n\nGraphQL.prototype.getClientApiPath = function (url) {\n var path;\n var clientApiPrefix = \"/client_api/v1/\";\n var pathParts = url.split(clientApiPrefix);\n\n if (pathParts.length > 1) {\n path = pathParts[1].split(\"?\")[0];\n }\n\n return path;\n};\n\nGraphQL.prototype._isGraphQLEnabled = function () {\n return Boolean(this._config);\n};\n\nfunction containsDisallowedlistedKeys(body) {\n return disallowedInputPaths.some(function (keys) {\n var value = keys.split(\".\").reduce(function (accumulator, key) {\n return accumulator && accumulator[key];\n }, body);\n\n return value !== undefined; // eslint-disable-line no-undefined\n });\n}\n\nmodule.exports = GraphQL;\n\n},{}],104:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BRAINTREE_VERSION = _dereq_(\"../../constants\").BRAINTREE_VERSION;\n\nvar assign = _dereq_(\"../../../lib/assign\").assign;\nvar snakeCaseToCamelCase = _dereq_(\"../../../lib/snake-case-to-camel-case\");\n\nvar creditCardTokenizationBodyGenerator = _dereq_(\"./generators/credit-card-tokenization\");\nvar creditCardTokenizationResponseAdapter = _dereq_(\"./adapters/credit-card-tokenization\");\n\nvar configurationBodyGenerator = _dereq_(\"./generators/configuration\");\nvar configurationResponseAdapter = _dereq_(\"./adapters/configuration\");\n\nvar generators = {\n \"payment_methods/credit_cards\": creditCardTokenizationBodyGenerator,\n configuration: configurationBodyGenerator,\n};\nvar adapters = {\n \"payment_methods/credit_cards\": creditCardTokenizationResponseAdapter,\n configuration: configurationResponseAdapter,\n};\n\nfunction GraphQLRequest(options) {\n var clientApiPath = options.graphQL.getClientApiPath(options.url);\n\n this._graphQL = options.graphQL;\n this._data = options.data;\n this._method = options.method;\n this._headers = options.headers;\n this._clientSdkMetadata = {\n source: options.metadata.source,\n integration: options.metadata.integration,\n sessionId: options.metadata.sessionId,\n };\n this._sendAnalyticsEvent = options.sendAnalyticsEvent || Function.prototype;\n\n this._generator = generators[clientApiPath];\n this._adapter = adapters[clientApiPath];\n\n this._sendAnalyticsEvent(\"graphql.init\");\n}\n\nGraphQLRequest.prototype.getUrl = function () {\n return this._graphQL.getGraphQLEndpoint();\n};\n\nGraphQLRequest.prototype.getBody = function () {\n var formattedBody = formatBodyKeys(this._data);\n var generatedBody = this._generator(formattedBody);\n var body = assign(\n { clientSdkMetadata: this._clientSdkMetadata },\n generatedBody\n );\n\n return JSON.stringify(body);\n};\n\nGraphQLRequest.prototype.getMethod = function () {\n return \"POST\";\n};\n\nGraphQLRequest.prototype.getHeaders = function () {\n var authorization, headers;\n\n if (this._data.authorizationFingerprint) {\n this._sendAnalyticsEvent(\"graphql.authorization-fingerprint\");\n authorization = this._data.authorizationFingerprint;\n } else {\n this._sendAnalyticsEvent(\"graphql.tokenization-key\");\n authorization = this._data.tokenizationKey;\n }\n\n headers = {\n Authorization: \"Bearer \" + authorization,\n \"Braintree-Version\": BRAINTREE_VERSION,\n };\n\n return assign({}, this._headers, headers);\n};\n\nGraphQLRequest.prototype.adaptResponseBody = function (parsedBody) {\n return this._adapter(parsedBody, this);\n};\n\nGraphQLRequest.prototype.determineStatus = function (\n httpStatus,\n parsedResponse\n) {\n var status, errorClass;\n\n if (httpStatus === 200) {\n errorClass =\n parsedResponse.errors &&\n parsedResponse.errors[0] &&\n parsedResponse.errors[0].extensions &&\n parsedResponse.errors[0].extensions.errorClass;\n\n if (parsedResponse.data && !parsedResponse.errors) {\n status = 200;\n } else if (errorClass === \"VALIDATION\") {\n status = 422;\n } else if (errorClass === \"AUTHORIZATION\") {\n status = 403;\n } else if (errorClass === \"AUTHENTICATION\") {\n status = 401;\n } else if (isGraphQLError(errorClass, parsedResponse)) {\n status = 403;\n } else {\n status = 500;\n }\n } else if (!httpStatus) {\n status = 500;\n } else {\n status = httpStatus;\n }\n\n this._sendAnalyticsEvent(\"graphql.status.\" + httpStatus);\n this._sendAnalyticsEvent(\"graphql.determinedStatus.\" + status);\n\n return status;\n};\n\nfunction isGraphQLError(errorClass, parsedResponse) {\n return !errorClass && parsedResponse.errors[0].message;\n}\n\nfunction formatBodyKeys(originalBody) {\n var body = {};\n\n Object.keys(originalBody).forEach(function (key) {\n var camelCaseKey = snakeCaseToCamelCase(key);\n\n if (typeof originalBody[key] === \"object\") {\n body[camelCaseKey] = formatBodyKeys(originalBody[key]);\n } else if (typeof originalBody[key] === \"number\") {\n body[camelCaseKey] = String(originalBody[key]);\n } else {\n body[camelCaseKey] = originalBody[key];\n }\n });\n\n return body;\n}\n\nmodule.exports = GraphQLRequest;\n\n},{\"../../../lib/assign\":134,\"../../../lib/snake-case-to-camel-case\":172,\"../../constants\":92,\"./adapters/configuration\":98,\"./adapters/credit-card-tokenization\":99,\"./generators/configuration\":101,\"./generators/credit-card-tokenization\":102}],105:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar once = _dereq_(\"../../lib/once\");\nvar AJAXDriver = _dereq_(\"./ajax-driver\");\n\nmodule.exports = function (options, cb) {\n cb = once(cb || Function.prototype);\n options.method = (options.method || \"GET\").toUpperCase();\n options.timeout = options.timeout == null ? 60000 : options.timeout;\n options.data = options.data || {};\n\n AJAXDriver.request(options, cb);\n};\n\n},{\"../../lib/once\":169,\"./ajax-driver\":96}],106:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (body) {\n try {\n body = JSON.parse(body);\n } catch (e) {\n /* ignored */\n }\n\n return body;\n};\n\n},{}],107:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (method, body) {\n if (typeof method !== \"string\") {\n throw new Error(\"Method must be a string\");\n }\n\n if (method.toLowerCase() !== \"get\" && body != null) {\n body = typeof body === \"string\" ? body : JSON.stringify(body);\n }\n\n return body;\n};\n\n},{}],108:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar isXHRAvailable =\n typeof window !== \"undefined\" &&\n window.XMLHttpRequest &&\n \"withCredentials\" in new window.XMLHttpRequest();\n\nfunction getRequestObject() {\n return isXHRAvailable\n ? new window.XMLHttpRequest()\n : new window.XDomainRequest();\n}\n\nmodule.exports = {\n isAvailable: isXHRAvailable,\n getRequestObject: getRequestObject,\n};\n\n},{}],109:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Data Collector - Creation Error Codes\n * @description Errors that occur when [creating the Data Collector component](./module-braintree-web_data-collector.html#.create).\n * @property {MERCHANT} DATA_COLLECTOR_KOUNT_NOT_ENABLED Occurs when Kount is enabled in creation options but is not enabled on the Braintree control panel.\n * @property {MERCHANT} DATA_COLLECTOR_KOUNT_ERROR Occurs when Kount errors while setting up.\n * @property {MERCHANT} DATA_COLLECTOR_REQUIRES_CREATE_OPTIONS Occurs when Kount or PayPal Fraudnet could not be enabled.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n DATA_COLLECTOR_KOUNT_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"DATA_COLLECTOR_KOUNT_NOT_ENABLED\",\n message: \"Kount is not enabled for this merchant.\",\n },\n DATA_COLLECTOR_KOUNT_ERROR: {\n type: BraintreeError.types.MERCHANT,\n code: \"DATA_COLLECTOR_KOUNT_ERROR\",\n },\n DATA_COLLECTOR_REQUIRES_CREATE_OPTIONS: {\n type: BraintreeError.types.MERCHANT,\n code: \"DATA_COLLECTOR_REQUIRES_CREATE_OPTIONS\",\n message: \"Data Collector must be created with Kount and/or PayPal.\",\n },\n};\n\n},{\"../lib/braintree-error\":137}],110:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar FRAUDNET_FNCLS = _dereq_(\"../lib/constants\").FRAUDNET_FNCLS;\nvar FRAUDNET_SOURCE = _dereq_(\"../lib/constants\").FRAUDNET_SOURCE;\nvar FRAUDNET_URL = _dereq_(\"../lib/constants\").FRAUDNET_URL;\nvar loadScript = _dereq_(\"../lib/assets\").loadScript;\n\nvar cachedSessionId;\n\nfunction setup(options) {\n var fraudNet = new Fraudnet();\n\n options = options || {};\n\n if (!options.sessionId && cachedSessionId) {\n fraudNet.sessionId = cachedSessionId;\n\n return Promise.resolve(fraudNet);\n }\n\n return fraudNet.initialize(options);\n}\n\nfunction clearSessionIdCache() {\n cachedSessionId = null;\n}\n\nfunction Fraudnet() {}\n\nFraudnet.prototype.initialize = function (options) {\n var environment = options.environment;\n var self = this;\n\n this.sessionId = options.sessionId || _generateSessionId();\n if (!options.sessionId) {\n cachedSessionId = this.sessionId;\n }\n this._beaconId = _generateBeaconId(this.sessionId);\n this._parameterBlock = _createParameterBlock(\n this.sessionId,\n this._beaconId,\n environment\n );\n\n return loadScript({\n src: FRAUDNET_URL,\n })\n .then(function (block) {\n self._thirdPartyBlock = block;\n\n return self;\n })\n .catch(function () {\n // if the fraudnet script fails to load\n // we just resolve with nothing\n // and data collector ignores it\n return null;\n });\n};\n\nFraudnet.prototype.teardown = function () {\n removeElementIfOnPage(document.querySelector('iframe[title=\"ppfniframe\"]'));\n removeElementIfOnPage(document.querySelector('iframe[title=\"pbf\"]'));\n\n removeElementIfOnPage(this._parameterBlock);\n removeElementIfOnPage(this._thirdPartyBlock);\n};\n\nfunction removeElementIfOnPage(element) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nfunction _generateSessionId() {\n var i;\n var id = \"\";\n\n for (i = 0; i < 32; i++) {\n id += Math.floor(Math.random() * 16).toString(16);\n }\n\n return id;\n}\n\nfunction _generateBeaconId(sessionId) {\n var timestamp = new Date().getTime() / 1000;\n\n return (\n \"https://b.stats.paypal.com/counter.cgi\" +\n \"?i=127.0.0.1\" +\n \"&p=\" +\n sessionId +\n \"&t=\" +\n timestamp +\n \"&a=14\"\n );\n}\n\nfunction _createParameterBlock(sessionId, beaconId, environment) {\n var el = document.body.appendChild(document.createElement(\"script\"));\n var config = {\n f: sessionId,\n s: FRAUDNET_SOURCE,\n b: beaconId,\n };\n\n // for some reason, the presence of the sandbox\n // attribute in a production environment causes\n // some weird behavior with what url paths are\n // hit, so instead, we only apply this attribute\n // when it is not a production environment\n if (environment !== \"production\") {\n config.sandbox = true;\n }\n\n el.type = \"application/json\";\n el.setAttribute(\"fncls\", FRAUDNET_FNCLS);\n el.text = JSON.stringify(config);\n\n return el;\n}\n\nmodule.exports = {\n setup: setup,\n clearSessionIdCache: clearSessionIdCache,\n};\n\n},{\"../lib/assets\":133,\"../lib/constants\":139}],111:[function(_dereq_,module,exports){\n\"use strict\";\n/** @module braintree-web/data-collector */\n\nvar kount = _dereq_(\"./kount\");\nvar fraudnet = _dereq_(\"./fraudnet\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar methods = _dereq_(\"../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar errors = _dereq_(\"./errors\");\n\n/**\n * @class\n * @global\n * @name DataCollector\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/data-collector.create|braintree-web.data-collector.create} instead.</strong>\n * @classdesc This class is used for fraud integration with PayPal and Kount. Instances of this class have {@link DataCollector#deviceData|deviceData} which is used to correlate user sessions with server transactions.\n */\n\n/**\n * @memberof DataCollector\n * @name deviceData\n * @type string\n * @description JSON string to pass with server transactions.\n * @instance\n */\n\n/**\n * @memberof DataCollector\n * @name rawDeviceData\n * @type object\n * @description The device data as an object instead of a string.\n * @instance\n */\n\n/**\n * @memberof DataCollector\n * @name teardown\n * @function\n * @description Cleanly remove anything set up by {@link module:braintree-web/data-collector.create|create}.\n * @param {callback} [callback] Called on completion. If no callback is provided, `teardown` returns a promise.\n * @instance\n * @example\n * dataCollectorInstance.teardown();\n * @example <caption>With callback</caption>\n * dataCollectorInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\n\n/**\n * @memberof DataCollector\n * @name getDeviceData\n * @function\n * @description Resolves with device data once it is ready.\n * @param {object} [options] Options for how device data is resolved.\n * @param {boolean} [options.raw=false] When set to true, the device data will resolve as an object instead of a JSON string.\n * @param {callback} [callback] Called on completion. If no callback is provided, `getDeviceData` returns a promise.\n * @instance\n * @example\n * dataCollectorInstance.getDeviceData();\n * @example <caption>Without options</caption>\n * dataCollectorInstance.getDeviceData().then(function (deviceData) {\n * // typeof deviceData === 'string'\n * // pass onto your server with the payment method nonce\n * });\n * @example <caption>With options</caption>\n * dataCollectorInstance.getDeviceData({\n * raw: true\n * }).then(function (deviceData) {\n * // typeof deviceData === 'object'\n * // for if you'd like to parse the data before sending it to your server\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\n\n/**\n * @static\n * @function create\n * @description Creates a DataCollector instance and collects device data based on your merchant configuration. We recommend that you call this method as early as possible, e.g. as soon as your website loads. If that's too early, call it at the beginning of customer checkout.\n * **Note:** To use your own Kount ID, contact our support team ([support@braintreepayments.com](mailto:support@braintreepayments.com) or [877.434.2894](tel:877.434.2894)).\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {boolean} [options.useDeferredClient] Used in conjunction with `authorization`, allows the Data Collector instance to be available right away by fetching the client configuration in the background. When this option is used, {@link GooglePayment#getDeviceData} must be used to collect the device data.\n * @param {boolean} [options.kount] Kount fraud data collection will occur if the merchant configuration has it enabled.\n * **Note:** the data sent to Kount is asynchronous and may not have completed by the time the data collector create call is complete. In most cases, this will not matter, but if you create the data collector instance and immediately navigate away from the page, the device information may fail to be sent to Kount.\n * @param {boolean} [options.paypal] *Deprecated:* PayPal fraud data collection will occur when the DataCollector instance is created.\n * @param {string} [options.riskCorrelationId] Pass a custom risk correlation id when creating the data collector.\n * @param {string} [options.clientMetadataId] Deprecated. Use `options.riskCorrelationId` instead.\n * @param {string} [options.correlationId] Deprecated. Use `options.riskCorrelationId` instead.\n * @param {callback} [callback] The second argument, `data`, is the {@link DataCollector} instance.\n * @returns {(Promise|void)} Returns a promise that resolves the {@link DataCollector} instance if no callback is provided.\n */\nfunction create(options) {\n var name = \"Data Collector\";\n var result = {\n _instances: [],\n };\n var data;\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n result._instantiatedWithAClient = !options.useDeferredClient;\n result._createPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n })\n .then(function (client) {\n var kountInstance;\n var config = client.getConfiguration();\n\n if (options.kount === true && config.gatewayConfiguration.kount) {\n try {\n kountInstance = kount.setup({\n environment: config.gatewayConfiguration.environment,\n merchantId: config.gatewayConfiguration.kount.kountMerchantId,\n });\n } catch (err) {\n return Promise.reject(\n new BraintreeError({\n type: errors.DATA_COLLECTOR_KOUNT_ERROR.type,\n code: errors.DATA_COLLECTOR_KOUNT_ERROR.code,\n message: err.message,\n })\n );\n }\n\n data = kountInstance.deviceData;\n result._instances.push(kountInstance);\n } else {\n data = {};\n }\n\n return Promise.resolve(client);\n })\n .then(function (client) {\n return fraudnet\n .setup({\n sessionId:\n options.riskCorrelationId ||\n options.clientMetadataId ||\n options.correlationId,\n environment:\n client.getConfiguration().gatewayConfiguration.environment,\n })\n .then(function (fraudnetInstance) {\n if (fraudnetInstance) {\n data.correlation_id = fraudnetInstance.sessionId; // eslint-disable-line camelcase\n result._instances.push(fraudnetInstance);\n }\n });\n })\n .then(function () {\n if (result._instances.length === 0) {\n // NEXT_MAJOR_VERSION either this should error with a specific error that\n // no data collector instances could be set up, or we should just swallow\n // the error and document that no device data will be returned if\n // data collector cannot be instantiated. We can't change the error code here\n // without possibly breaking merchant integrations relying on this inccorrect\n // behavior.\n return Promise.reject(\n new BraintreeError(errors.DATA_COLLECTOR_REQUIRES_CREATE_OPTIONS)\n );\n }\n\n result.deviceData = JSON.stringify(data);\n result.rawDeviceData = data;\n\n return result;\n });\n\n result.teardown = createTeardownMethod(result);\n result.getDeviceData = createGetDeviceDataMethod(result);\n\n if (result._instantiatedWithAClient) {\n return result._createPromise;\n }\n\n return result;\n });\n}\n\nfunction createTeardownMethod(result) {\n return wrapPromise(function teardown() {\n return result._createPromise.then(function () {\n result._instances.forEach(function (instance) {\n if (instance) {\n instance.teardown();\n }\n });\n\n convertMethodsToError(result, methods(result));\n });\n });\n}\n\nfunction createGetDeviceDataMethod(result) {\n return wrapPromise(function getDeviceData(options) {\n options = options || {};\n\n return result._createPromise.then(function () {\n if (options.raw) {\n return Promise.resolve(result.rawDeviceData);\n }\n\n return Promise.resolve(result.deviceData);\n });\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/convert-methods-to-error\":140,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"../lib/methods\":168,\"./errors\":109,\"./fraudnet\":110,\"./kount\":112,\"@braintree/wrap-promise\":40}],112:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar sjcl = _dereq_(\"./vendor/sjcl\");\nvar camelCaseToSnakeCase = _dereq_(\"../lib/camel-case-to-snake-case\");\n\nvar QA_URL = \"https://assets.qa.braintreepayments.com/data\";\nvar IFRAME_ID_PREFIX = \"braintreeDataFrame-\";\nvar environmentUrls = {\n development: QA_URL,\n qa: QA_URL,\n sandbox: \"https://assets.braintreegateway.com/sandbox/data\",\n production: \"https://assets.braintreegateway.com/data\",\n};\nvar cachedDeviceData = {};\n\nfunction setup(o) {\n var options = o != null ? o : {};\n\n return new Kount(options);\n}\n\nfunction Kount(options) {\n var previouslyInitializedDeviceData = Kount.getCachedDeviceData(\n options.merchantId\n );\n\n if (previouslyInitializedDeviceData) {\n this.deviceData = previouslyInitializedDeviceData;\n this._isCached = true;\n\n return;\n }\n\n this._currentEnvironment = this._initializeEnvironment(options);\n\n sjcl.random.startCollectors();\n\n this._deviceSessionId = this._generateDeviceSessionId();\n this.deviceData = this._getDeviceData();\n\n Kount.setCachedDeviceData(options.merchantId, this.deviceData);\n\n this._iframe = this._setupIFrame();\n}\n\nKount.getCachedDeviceData = function (merchantId) {\n return cachedDeviceData[merchantId];\n};\n\nKount.setCachedDeviceData = function (merchantId, data) {\n cachedDeviceData[merchantId] = data;\n};\n\nKount.prototype.teardown = function () {\n if (!this._isCached) {\n sjcl.random.stopCollectors();\n\n this._removeIframe();\n }\n};\n\nKount.prototype._removeIframe = function () {\n this._iframe.parentNode.removeChild(this._iframe);\n};\n\nKount.prototype._getDeviceData = function () {\n return camelCaseToSnakeCase({\n deviceSessionId: this._deviceSessionId,\n fraudMerchantId: this._currentEnvironment.id,\n });\n};\n\nKount.prototype._generateDeviceSessionId = function () {\n var bits, hexString;\n\n bits = sjcl.random.randomWords(4, 0);\n hexString = sjcl.codec.hex.fromBits(bits);\n\n return hexString;\n};\n\nKount.prototype._setupIFrame = function () {\n var params, iframe;\n var self = this;\n\n params = \"?m=\" + this._currentEnvironment.id + \"&s=\" + this._deviceSessionId;\n\n iframe = document.createElement(\"iframe\");\n iframe.width = 1;\n iframe.id = IFRAME_ID_PREFIX + this._deviceSessionId;\n iframe.height = 1;\n iframe.frameBorder = 0;\n iframe.scrolling = \"no\";\n iframe.style.position = \"fixed\";\n iframe.style.left = \"-999999px\";\n iframe.style.top = \"-999999px\";\n iframe.title = \"Braintree-Kount-iframe\";\n iframe.setAttribute(\"aria-hidden\", \"true\");\n\n document.body.appendChild(iframe);\n setTimeout(function () {\n iframe.src = self._currentEnvironment.url + \"/logo.htm\" + params;\n iframe.innerHTML =\n '<img src=\"' +\n self._currentEnvironment.url +\n \"/logo.gif\" +\n params +\n '\" alt=\"\" />';\n }, 10);\n\n return iframe;\n};\n\nKount.prototype._initializeEnvironment = function (options) {\n var url = environmentUrls[options.environment];\n\n if (url == null) {\n throw new Error(\n options.environment + \" is not a valid environment for kount.environment\"\n );\n }\n\n return {\n url: url,\n name: options.environment,\n id: options.merchantId,\n };\n};\n\nmodule.exports = {\n setup: setup,\n Kount: Kount,\n environmentUrls: environmentUrls,\n};\n\n},{\"../lib/camel-case-to-snake-case\":138,\"./vendor/sjcl\":113}],113:[function(_dereq_,module,exports){\n\"use strict\";\nvar sjcl = {\n cipher: {},\n hash: {},\n keyexchange: {},\n mode: {},\n misc: {},\n codec: {},\n exception: {\n corrupt: function (a) {\n this.toString = function () {\n return \"CORRUPT: \" + this.message;\n };\n this.message = a;\n },\n invalid: function (a) {\n this.toString = function () {\n return \"INVALID: \" + this.message;\n };\n this.message = a;\n },\n bug: function (a) {\n this.toString = function () {\n return \"BUG: \" + this.message;\n };\n this.message = a;\n },\n notReady: function (a) {\n this.toString = function () {\n return \"NOT READY: \" + this.message;\n };\n this.message = a;\n },\n },\n};\nsjcl.cipher.aes = function (a) {\n this.l[0][0][0] || this.G();\n var b,\n c,\n d,\n e,\n f = this.l[0][4],\n g = this.l[1];\n b = a.length;\n var k = 1;\n if (4 !== b && 6 !== b && 8 !== b)\n throw new sjcl.exception.invalid(\"invalid aes key size\");\n this.b = [(d = a.slice(0)), (e = [])];\n for (a = b; a < 4 * b + 28; a++) {\n c = d[a - 1];\n if (0 === a % b || (8 === b && 4 === a % b))\n (c =\n (f[c >>> 24] << 24) ^\n (f[(c >> 16) & 255] << 16) ^\n (f[(c >> 8) & 255] << 8) ^\n f[c & 255]),\n 0 === a % b &&\n ((c = (c << 8) ^ (c >>> 24) ^ (k << 24)),\n (k = (k << 1) ^ (283 * (k >> 7))));\n d[a] = d[a - b] ^ c;\n }\n for (b = 0; a; b++, a--)\n (c = d[b & 3 ? a : a - 4]),\n (e[b] =\n 4 >= a || 4 > b\n ? c\n : g[0][f[c >>> 24]] ^\n g[1][f[(c >> 16) & 255]] ^\n g[2][f[(c >> 8) & 255]] ^\n g[3][f[c & 255]]);\n};\nsjcl.cipher.aes.prototype = {\n encrypt: function (a) {\n return t(this, a, 0);\n },\n decrypt: function (a) {\n return t(this, a, 1);\n },\n l: [\n [[], [], [], [], []],\n [[], [], [], [], []],\n ],\n G: function () {\n var a = this.l[0],\n b = this.l[1],\n c = a[4],\n d = b[4],\n e,\n f,\n g,\n k = [],\n l = [],\n p,\n n,\n h,\n m;\n for (e = 0; 0x100 > e; e++) l[(k[e] = (e << 1) ^ (283 * (e >> 7))) ^ e] = e;\n for (f = g = 0; !c[f]; f ^= p || 1, g = l[g] || 1)\n for (\n h = g ^ (g << 1) ^ (g << 2) ^ (g << 3) ^ (g << 4),\n h = (h >> 8) ^ (h & 255) ^ 99,\n c[f] = h,\n d[h] = f,\n n = k[(e = k[(p = k[f])])],\n m = (0x1010101 * n) ^ (0x10001 * e) ^ (0x101 * p) ^ (0x1010100 * f),\n n = (0x101 * k[h]) ^ (0x1010100 * h),\n e = 0;\n 4 > e;\n e++\n )\n (a[e][f] = n = (n << 24) ^ (n >>> 8)),\n (b[e][h] = m = (m << 24) ^ (m >>> 8));\n for (e = 0; 5 > e; e++) (a[e] = a[e].slice(0)), (b[e] = b[e].slice(0));\n },\n};\nfunction t(a, b, c) {\n if (4 !== b.length)\n throw new sjcl.exception.invalid(\"invalid aes block size\");\n var d = a.b[c],\n e = b[0] ^ d[0],\n f = b[c ? 3 : 1] ^ d[1],\n g = b[2] ^ d[2];\n b = b[c ? 1 : 3] ^ d[3];\n var k,\n l,\n p,\n n = d.length / 4 - 2,\n h,\n m = 4,\n q = [0, 0, 0, 0];\n k = a.l[c];\n a = k[0];\n var r = k[1],\n v = k[2],\n w = k[3],\n x = k[4];\n for (h = 0; h < n; h++)\n (k =\n a[e >>> 24] ^ r[(f >> 16) & 255] ^ v[(g >> 8) & 255] ^ w[b & 255] ^ d[m]),\n (l =\n a[f >>> 24] ^\n r[(g >> 16) & 255] ^\n v[(b >> 8) & 255] ^\n w[e & 255] ^\n d[m + 1]),\n (p =\n a[g >>> 24] ^\n r[(b >> 16) & 255] ^\n v[(e >> 8) & 255] ^\n w[f & 255] ^\n d[m + 2]),\n (b =\n a[b >>> 24] ^\n r[(e >> 16) & 255] ^\n v[(f >> 8) & 255] ^\n w[g & 255] ^\n d[m + 3]),\n (m += 4),\n (e = k),\n (f = l),\n (g = p);\n for (h = 0; 4 > h; h++)\n (q[c ? 3 & -h : h] =\n (x[e >>> 24] << 24) ^\n (x[(f >> 16) & 255] << 16) ^\n (x[(g >> 8) & 255] << 8) ^\n x[b & 255] ^\n d[m++]),\n (k = e),\n (e = f),\n (f = g),\n (g = b),\n (b = k);\n return q;\n}\nsjcl.bitArray = {\n bitSlice: function (a, b, c) {\n a = sjcl.bitArray.M(a.slice(b / 32), 32 - (b & 31)).slice(1);\n return void 0 === c ? a : sjcl.bitArray.clamp(a, c - b);\n },\n extract: function (a, b, c) {\n var d = Math.floor((-b - c) & 31);\n return (\n (((b + c - 1) ^ b) & -32\n ? (a[(b / 32) | 0] << (32 - d)) ^ (a[(b / 32 + 1) | 0] >>> d)\n : a[(b / 32) | 0] >>> d) &\n ((1 << c) - 1)\n );\n },\n concat: function (a, b) {\n if (0 === a.length || 0 === b.length) return a.concat(b);\n var c = a[a.length - 1],\n d = sjcl.bitArray.getPartial(c);\n return 32 === d\n ? a.concat(b)\n : sjcl.bitArray.M(b, d, c | 0, a.slice(0, a.length - 1));\n },\n bitLength: function (a) {\n var b = a.length;\n return 0 === b ? 0 : 32 * (b - 1) + sjcl.bitArray.getPartial(a[b - 1]);\n },\n clamp: function (a, b) {\n if (32 * a.length < b) return a;\n a = a.slice(0, Math.ceil(b / 32));\n var c = a.length;\n b = b & 31;\n 0 < c &&\n b &&\n (a[c - 1] = sjcl.bitArray.partial(\n b,\n a[c - 1] & (2147483648 >> (b - 1)),\n 1\n ));\n return a;\n },\n partial: function (a, b, c) {\n return 32 === a ? b : (c ? b | 0 : b << (32 - a)) + 0x10000000000 * a;\n },\n getPartial: function (a) {\n return Math.round(a / 0x10000000000) || 32;\n },\n equal: function (a, b) {\n if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) return !1;\n var c = 0,\n d;\n for (d = 0; d < a.length; d++) c |= a[d] ^ b[d];\n return 0 === c;\n },\n M: function (a, b, c, d) {\n var e;\n e = 0;\n for (void 0 === d && (d = []); 32 <= b; b -= 32) d.push(c), (c = 0);\n if (0 === b) return d.concat(a);\n for (e = 0; e < a.length; e++)\n d.push(c | (a[e] >>> b)), (c = a[e] << (32 - b));\n e = a.length ? a[a.length - 1] : 0;\n a = sjcl.bitArray.getPartial(e);\n d.push(sjcl.bitArray.partial((b + a) & 31, 32 < b + a ? c : d.pop(), 1));\n return d;\n },\n Y: function (a, b) {\n return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]];\n },\n byteswapM: function (a) {\n var b, c;\n for (b = 0; b < a.length; ++b)\n (c = a[b]),\n (a[b] =\n (c >>> 24) | ((c >>> 8) & 0xff00) | ((c & 0xff00) << 8) | (c << 24));\n return a;\n },\n};\nsjcl.codec.utf8String = {\n fromBits: function (a) {\n var b = \"\",\n c = sjcl.bitArray.bitLength(a),\n d,\n e;\n for (d = 0; d < c / 8; d++)\n 0 === (d & 3) && (e = a[d / 4]),\n (b += String.fromCharCode(((e >>> 8) >>> 8) >>> 8)),\n (e <<= 8);\n return decodeURIComponent(escape(b));\n },\n toBits: function (a) {\n a = unescape(encodeURIComponent(a));\n var b = [],\n c,\n d = 0;\n for (c = 0; c < a.length; c++)\n (d = (d << 8) | a.charCodeAt(c)), 3 === (c & 3) && (b.push(d), (d = 0));\n c & 3 && b.push(sjcl.bitArray.partial(8 * (c & 3), d));\n return b;\n },\n};\nsjcl.codec.hex = {\n fromBits: function (a) {\n var b = \"\",\n c;\n for (c = 0; c < a.length; c++)\n b += ((a[c] | 0) + 0xf00000000000).toString(16).substr(4);\n return b.substr(0, sjcl.bitArray.bitLength(a) / 4);\n },\n toBits: function (a) {\n var b,\n c = [],\n d;\n a = a.replace(/\\s|0x/g, \"\");\n d = a.length;\n a = a + \"00000000\";\n for (b = 0; b < a.length; b += 8) c.push(parseInt(a.substr(b, 8), 16) ^ 0);\n return sjcl.bitArray.clamp(c, 4 * d);\n },\n};\nsjcl.hash.sha256 = function (a) {\n this.b[0] || this.G();\n a\n ? ((this.u = a.u.slice(0)), (this.o = a.o.slice(0)), (this.h = a.h))\n : this.reset();\n};\nsjcl.hash.sha256.hash = function (a) {\n return new sjcl.hash.sha256().update(a).finalize();\n};\nsjcl.hash.sha256.prototype = {\n blockSize: 512,\n reset: function () {\n this.u = this.K.slice(0);\n this.o = [];\n this.h = 0;\n return this;\n },\n update: function (a) {\n \"string\" === typeof a && (a = sjcl.codec.utf8String.toBits(a));\n var b,\n c = (this.o = sjcl.bitArray.concat(this.o, a));\n b = this.h;\n a = this.h = b + sjcl.bitArray.bitLength(a);\n if (0x1fffffffffffff < a)\n throw new sjcl.exception.invalid(\"Cannot hash more than 2^53 - 1 bits\");\n if (\"undefined\" !== typeof Uint32Array) {\n var d = new Uint32Array(c),\n e = 0;\n for (b = 512 + b - ((512 + b) & 0x1ff); b <= a; b += 512)\n u(this, d.subarray(16 * e, 16 * (e + 1))), (e += 1);\n c.splice(0, 16 * e);\n } else\n for (b = 512 + b - ((512 + b) & 0x1ff); b <= a; b += 512)\n u(this, c.splice(0, 16));\n return this;\n },\n finalize: function () {\n var a,\n b = this.o,\n c = this.u,\n b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1, 1)]);\n for (a = b.length + 2; a & 15; a++) b.push(0);\n b.push(Math.floor(this.h / 0x100000000));\n for (b.push(this.h | 0); b.length; ) u(this, b.splice(0, 16));\n this.reset();\n return c;\n },\n K: [],\n b: [],\n G: function () {\n function a(a) {\n return (0x100000000 * (a - Math.floor(a))) | 0;\n }\n for (var b = 0, c = 2, d, e; 64 > b; c++) {\n e = !0;\n for (d = 2; d * d <= c; d++)\n if (0 === c % d) {\n e = !1;\n break;\n }\n e &&\n (8 > b && (this.K[b] = a(Math.pow(c, 0.5))),\n (this.b[b] = a(Math.pow(c, 1 / 3))),\n b++);\n }\n },\n};\nfunction u(a, b) {\n var c,\n d,\n e,\n f = a.u,\n g = a.b,\n k = f[0],\n l = f[1],\n p = f[2],\n n = f[3],\n h = f[4],\n m = f[5],\n q = f[6],\n r = f[7];\n for (c = 0; 64 > c; c++)\n 16 > c\n ? (d = b[c])\n : ((d = b[(c + 1) & 15]),\n (e = b[(c + 14) & 15]),\n (d = b[c & 15] =\n (((d >>> 7) ^ (d >>> 18) ^ (d >>> 3) ^ (d << 25) ^ (d << 14)) +\n ((e >>> 17) ^ (e >>> 19) ^ (e >>> 10) ^ (e << 15) ^ (e << 13)) +\n b[c & 15] +\n b[(c + 9) & 15]) |\n 0)),\n (d =\n d +\n r +\n ((h >>> 6) ^\n (h >>> 11) ^\n (h >>> 25) ^\n (h << 26) ^\n (h << 21) ^\n (h << 7)) +\n (q ^ (h & (m ^ q))) +\n g[c]),\n (r = q),\n (q = m),\n (m = h),\n (h = (n + d) | 0),\n (n = p),\n (p = l),\n (l = k),\n (k =\n (d +\n ((l & p) ^ (n & (l ^ p))) +\n ((l >>> 2) ^\n (l >>> 13) ^\n (l >>> 22) ^\n (l << 30) ^\n (l << 19) ^\n (l << 10))) |\n 0);\n f[0] = (f[0] + k) | 0;\n f[1] = (f[1] + l) | 0;\n f[2] = (f[2] + p) | 0;\n f[3] = (f[3] + n) | 0;\n f[4] = (f[4] + h) | 0;\n f[5] = (f[5] + m) | 0;\n f[6] = (f[6] + q) | 0;\n f[7] = (f[7] + r) | 0;\n}\nsjcl.prng = function (a) {\n this.c = [new sjcl.hash.sha256()];\n this.i = [0];\n this.H = 0;\n this.v = {};\n this.F = 0;\n this.J = {};\n this.L = this.f = this.j = this.T = 0;\n this.b = [0, 0, 0, 0, 0, 0, 0, 0];\n this.g = [0, 0, 0, 0];\n this.C = void 0;\n this.D = a;\n this.s = !1;\n this.B = { progress: {}, seeded: {} };\n this.m = this.S = 0;\n this.w = 1;\n this.A = 2;\n this.O = 0x10000;\n this.I = [0, 48, 64, 96, 128, 192, 0x100, 384, 512, 768, 1024];\n this.P = 3e4;\n this.N = 80;\n};\nsjcl.prng.prototype = {\n randomWords: function (a, b) {\n var c = [],\n d;\n d = this.isReady(b);\n var e;\n if (d === this.m)\n throw new sjcl.exception.notReady(\"generator isn't seeded\");\n if (d & this.A) {\n d = !(d & this.w);\n e = [];\n var f = 0,\n g;\n this.L = e[0] = new Date().valueOf() + this.P;\n for (g = 0; 16 > g; g++) e.push((0x100000000 * Math.random()) | 0);\n for (\n g = 0;\n g < this.c.length &&\n ((e = e.concat(this.c[g].finalize())),\n (f += this.i[g]),\n (this.i[g] = 0),\n d || !(this.H & (1 << g)));\n g++\n );\n this.H >= 1 << this.c.length &&\n (this.c.push(new sjcl.hash.sha256()), this.i.push(0));\n this.f -= f;\n f > this.j && (this.j = f);\n this.H++;\n this.b = sjcl.hash.sha256.hash(this.b.concat(e));\n this.C = new sjcl.cipher.aes(this.b);\n for (\n d = 0;\n 4 > d && ((this.g[d] = (this.g[d] + 1) | 0), !this.g[d]);\n d++\n );\n }\n for (d = 0; d < a; d += 4)\n 0 === (d + 1) % this.O && y(this),\n (e = z(this)),\n c.push(e[0], e[1], e[2], e[3]);\n y(this);\n return c.slice(0, a);\n },\n setDefaultParanoia: function (a, b) {\n if (\n 0 === a &&\n \"Setting paranoia=0 will ruin your security; use it only for testing\" !==\n b\n )\n throw new sjcl.exception.invalid(\n \"Setting paranoia=0 will ruin your security; use it only for testing\"\n );\n this.D = a;\n },\n addEntropy: function (a, b, c) {\n c = c || \"user\";\n var d,\n e,\n f = new Date().valueOf(),\n g = this.v[c],\n k = this.isReady(),\n l = 0;\n d = this.J[c];\n void 0 === d && (d = this.J[c] = this.T++);\n void 0 === g && (g = this.v[c] = 0);\n this.v[c] = (this.v[c] + 1) % this.c.length;\n switch (typeof a) {\n case \"number\":\n void 0 === b && (b = 1);\n this.c[g].update([d, this.F++, 1, b, f, 1, a | 0]);\n break;\n case \"object\":\n c = Object.prototype.toString.call(a);\n if (\"[object Uint32Array]\" === c) {\n e = [];\n for (c = 0; c < a.length; c++) e.push(a[c]);\n a = e;\n } else\n for (\n \"[object Array]\" !== c && (l = 1), c = 0;\n c < a.length && !l;\n c++\n )\n \"number\" !== typeof a[c] && (l = 1);\n if (!l) {\n if (void 0 === b)\n for (c = b = 0; c < a.length; c++)\n for (e = a[c]; 0 < e; ) b++, (e = e >>> 1);\n this.c[g].update([d, this.F++, 2, b, f, a.length].concat(a));\n }\n break;\n case \"string\":\n void 0 === b && (b = a.length);\n this.c[g].update([d, this.F++, 3, b, f, a.length]);\n this.c[g].update(a);\n break;\n default:\n l = 1;\n }\n if (l)\n throw new sjcl.exception.bug(\n \"random: addEntropy only supports number, array of numbers or string\"\n );\n this.i[g] += b;\n this.f += b;\n k === this.m &&\n (this.isReady() !== this.m && A(\"seeded\", Math.max(this.j, this.f)),\n A(\"progress\", this.getProgress()));\n },\n isReady: function (a) {\n a = this.I[void 0 !== a ? a : this.D];\n return this.j && this.j >= a\n ? this.i[0] > this.N && new Date().valueOf() > this.L\n ? this.A | this.w\n : this.w\n : this.f >= a\n ? this.A | this.m\n : this.m;\n },\n getProgress: function (a) {\n a = this.I[a ? a : this.D];\n return this.j >= a ? 1 : this.f > a ? 1 : this.f / a;\n },\n startCollectors: function () {\n if (!this.s) {\n this.a = {\n loadTimeCollector: B(this, this.V),\n mouseCollector: B(this, this.W),\n keyboardCollector: B(this, this.U),\n accelerometerCollector: B(this, this.R),\n touchCollector: B(this, this.X),\n };\n if (window.addEventListener)\n window.addEventListener(\"load\", this.a.loadTimeCollector, !1),\n window.addEventListener(\"mousemove\", this.a.mouseCollector, !1),\n window.addEventListener(\"keypress\", this.a.keyboardCollector, !1),\n window.addEventListener(\n \"devicemotion\",\n this.a.accelerometerCollector,\n !1\n ),\n window.addEventListener(\"touchmove\", this.a.touchCollector, !1);\n else if (document.attachEvent)\n document.attachEvent(\"onload\", this.a.loadTimeCollector),\n document.attachEvent(\"onmousemove\", this.a.mouseCollector),\n document.attachEvent(\"keypress\", this.a.keyboardCollector);\n else throw new sjcl.exception.bug(\"can't attach event\");\n this.s = !0;\n }\n },\n stopCollectors: function () {\n this.s &&\n (window.removeEventListener\n ? (window.removeEventListener(\"load\", this.a.loadTimeCollector, !1),\n window.removeEventListener(\"mousemove\", this.a.mouseCollector, !1),\n window.removeEventListener(\"keypress\", this.a.keyboardCollector, !1),\n window.removeEventListener(\n \"devicemotion\",\n this.a.accelerometerCollector,\n !1\n ),\n window.removeEventListener(\"touchmove\", this.a.touchCollector, !1))\n : document.detachEvent &&\n (document.detachEvent(\"onload\", this.a.loadTimeCollector),\n document.detachEvent(\"onmousemove\", this.a.mouseCollector),\n document.detachEvent(\"keypress\", this.a.keyboardCollector)),\n (this.s = !1));\n },\n addEventListener: function (a, b) {\n this.B[a][this.S++] = b;\n },\n removeEventListener: function (a, b) {\n var c,\n d,\n e = this.B[a],\n f = [];\n for (d in e) e.hasOwnProperty(d) && e[d] === b && f.push(d);\n for (c = 0; c < f.length; c++) (d = f[c]), delete e[d];\n },\n U: function () {\n C(this, 1);\n },\n W: function (a) {\n var b, c;\n try {\n (b = a.x || a.clientX || a.offsetX || 0),\n (c = a.y || a.clientY || a.offsetY || 0);\n } catch (d) {\n c = b = 0;\n }\n 0 != b && 0 != c && this.addEntropy([b, c], 2, \"mouse\");\n C(this, 0);\n },\n X: function (a) {\n a = a.touches[0] || a.changedTouches[0];\n this.addEntropy([a.pageX || a.clientX, a.pageY || a.clientY], 1, \"touch\");\n C(this, 0);\n },\n V: function () {\n C(this, 2);\n },\n R: function (a) {\n a =\n a.accelerationIncludingGravity.x ||\n a.accelerationIncludingGravity.y ||\n a.accelerationIncludingGravity.z;\n if (window.orientation) {\n var b = window.orientation;\n \"number\" === typeof b && this.addEntropy(b, 1, \"accelerometer\");\n }\n a && this.addEntropy(a, 2, \"accelerometer\");\n C(this, 0);\n },\n};\nfunction A(a, b) {\n var c,\n d = sjcl.random.B[a],\n e = [];\n for (c in d) d.hasOwnProperty(c) && e.push(d[c]);\n for (c = 0; c < e.length; c++) e[c](b);\n}\nfunction C(a, b) {\n \"undefined\" !== typeof window &&\n window.performance &&\n \"function\" === typeof window.performance.now\n ? a.addEntropy(window.performance.now(), b, \"loadtime\")\n : a.addEntropy(new Date().valueOf(), b, \"loadtime\");\n}\nfunction y(a) {\n a.b = z(a).concat(z(a));\n a.C = new sjcl.cipher.aes(a.b);\n}\nfunction z(a) {\n for (var b = 0; 4 > b && ((a.g[b] = (a.g[b] + 1) | 0), !a.g[b]); b++);\n return a.C.encrypt(a.g);\n}\nfunction B(a, b) {\n return function () {\n b.apply(a, arguments);\n };\n}\nsjcl.random = new sjcl.prng(6);\na: try {\n var D, E, F, G;\n if ((G = \"undefined\" !== typeof module && module.exports)) {\n var H;\n try {\n H = _dereq_(\"crypto\");\n } catch (a) {\n H = null;\n }\n G = E = H;\n }\n if (G && E.randomBytes)\n (D = E.randomBytes(128)),\n (D = new Uint32Array(new Uint8Array(D).buffer)),\n sjcl.random.addEntropy(D, 1024, \"crypto['randomBytes']\");\n else if (\n \"undefined\" !== typeof window &&\n \"undefined\" !== typeof Uint32Array\n ) {\n F = new Uint32Array(32);\n if (window.crypto && window.crypto.getRandomValues)\n window.crypto.getRandomValues(F);\n else if (window.msCrypto && window.msCrypto.getRandomValues)\n window.msCrypto.getRandomValues(F);\n else break a;\n sjcl.random.addEntropy(F, 1024, \"crypto['getRandomValues']\");\n }\n} catch (a) {\n \"undefined\" !== typeof window &&\n window.console &&\n (console.log(\"There was an error collecting entropy from the browser:\"),\n console.log(a));\n}\n\"undefined\" !== typeof module && module.exports && (module.exports = sjcl);\n\"function\" === typeof define &&\n define([], function () {\n return sjcl;\n });\n\n},{\"crypto\":undefined}],114:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Google Payment - Creation Error Codes\n * @description Errors that occur when [creating the Google Payment component](./module-braintree-web_google-payment.html#.create).\n * @property {MERCHANT} GOOGLE_PAYMENT_NOT_ENABLED Occurs when Google Pay is not enabled on the Braintree control panel.\n * @property {MERCHANT} GOOGLE_PAYMENT_UNSUPPORTED_VERSION Occurs when a Google Pay version is used that is not supported by the Braintree SDK.\n */\n\n/**\n * @name BraintreeError.Google Payment - parseResponse Error Codes\n * @description Errors that occur when [parsing the response from Google](./GooglePayment.html#parseResponse).\n * @property {UNKNOWN} GOOGLE_PAYMENT_GATEWAY_ERROR Occurs when Google Pay could not be tokenized.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n GOOGLE_PAYMENT_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"GOOGLE_PAYMENT_NOT_ENABLED\",\n message: \"Google Pay is not enabled for this merchant.\",\n },\n GOOGLE_PAYMENT_GATEWAY_ERROR: {\n code: \"GOOGLE_PAYMENT_GATEWAY_ERROR\",\n message:\n \"There was an error when tokenizing the Google Pay payment method.\",\n type: BraintreeError.types.UNKNOWN,\n },\n GOOGLE_PAYMENT_UNSUPPORTED_VERSION: {\n code: \"GOOGLE_PAYMENT_UNSUPPORTED_VERSION\",\n type: BraintreeError.types.MERCHANT,\n },\n};\n\n},{\"../lib/braintree-error\":137}],115:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar analytics = _dereq_(\"../lib/analytics\");\nvar assign = _dereq_(\"../lib/assign\").assign;\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar find = _dereq_(\"../lib/find\");\nvar generateGooglePayConfiguration = _dereq_(\"../lib/generate-google-pay-configuration\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar errors = _dereq_(\"./errors\");\nvar methods = _dereq_(\"../lib/methods\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\nvar CREATE_PAYMENT_DATA_REQUEST_METHODS = {\n 1: \"_createV1PaymentDataRequest\",\n 2: \"_createV2PaymentDataRequest\",\n};\n\n/**\n * @typedef {object} GooglePayment~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {object} details Additional account details.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {boolean} details.isNetworkTokenized True if the card is network tokenized.\n * @property {string} details.bin First six digits of card number.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, `CreditCard` or `AndroidPayCard`.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * @class GooglePayment\n * @param {object} options Google Payment {@link module:braintree-web/google-payment.create create} options.\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/google-payment.create|braintree-web.google-payment.create} instead.</strong>\n * @classdesc This class represents a Google Payment component produced by {@link module:braintree-web/google-payment.create|braintree-web/google-payment.create}. Instances of this class have methods for initializing the Google Pay flow.\n */\nfunction GooglePayment(options) {\n this._createPromise = options.createPromise;\n this._client = options.client;\n this._useDeferredClient = options.useDeferredClient;\n // NEXT_MAJOR_VERSION this should be updated to 2 (or whatever the current latest version is)\n this._googlePayVersion = options.googlePayVersion || 1;\n this._googleMerchantId = options.googleMerchantId;\n\n if (this._isUnsupportedGooglePayAPIVersion()) {\n throw new BraintreeError({\n code: errors.GOOGLE_PAYMENT_UNSUPPORTED_VERSION.code,\n message:\n \"The Braintree SDK does not support Google Pay version \" +\n this._googlePayVersion +\n \". Please upgrade the version of your Braintree SDK and contact support if this error persists.\",\n type: errors.GOOGLE_PAYMENT_UNSUPPORTED_VERSION.type,\n });\n }\n}\n\nGooglePayment.prototype._waitForClient = function () {\n if (this._client) {\n return Promise.resolve();\n }\n\n return this._createPromise.then(\n function (client) {\n this._client = client;\n }.bind(this)\n );\n};\n\nGooglePayment.prototype._isUnsupportedGooglePayAPIVersion = function () {\n // if we don't have createPaymentDatqRequest method for the specific\n // API version, then the version is not supported\n return !(this._googlePayVersion in CREATE_PAYMENT_DATA_REQUEST_METHODS);\n};\n\nGooglePayment.prototype._getDefaultConfig = function () {\n if (!this._defaultConfig) {\n this._defaultConfig = generateGooglePayConfiguration(\n this._client.getConfiguration(),\n this._googlePayVersion,\n this._googleMerchantId\n );\n }\n\n return this._defaultConfig;\n};\n\nGooglePayment.prototype._createV1PaymentDataRequest = function (\n paymentDataRequest\n) {\n var defaultConfig = this._getDefaultConfig();\n var overrideCardNetworks =\n paymentDataRequest.cardRequirements &&\n paymentDataRequest.cardRequirements.allowedCardNetworks;\n var defaultConfigCardNetworks =\n defaultConfig.cardRequirements.allowedCardNetworks;\n var allowedCardNetworks = overrideCardNetworks || defaultConfigCardNetworks;\n\n paymentDataRequest = assign({}, defaultConfig, paymentDataRequest);\n\n // this way we can preserve allowedCardNetworks from default integration\n // if merchant did not pass any in `cardRequirements`\n paymentDataRequest.cardRequirements.allowedCardNetworks = allowedCardNetworks;\n\n return paymentDataRequest;\n};\n\nGooglePayment.prototype._createV2PaymentDataRequest = function (\n paymentDataRequest\n) {\n var defaultConfig = this._getDefaultConfig();\n\n if (paymentDataRequest.allowedPaymentMethods) {\n paymentDataRequest.allowedPaymentMethods.forEach(function (paymentMethod) {\n var defaultPaymentMethod = find(\n defaultConfig.allowedPaymentMethods,\n \"type\",\n paymentMethod.type\n );\n\n if (defaultPaymentMethod) {\n applyDefaultsToPaymentMethodConfiguration(\n paymentMethod,\n defaultPaymentMethod\n );\n }\n });\n }\n\n paymentDataRequest = assign({}, defaultConfig, paymentDataRequest);\n\n return paymentDataRequest;\n};\n\n/**\n * Create a configuration object for use in the `loadPaymentData` method.\n *\n * **Note**: Version 1 of the Google Pay Api is deprecated and will become unsupported in a future version. Until then, version 1 will continue to be used by default, and version 1 schema parameters and overrides will remain functional on existing integrations. However, new integrations and all following examples will be presented in the GooglePay version 2 schema. See [Google Pay's upgrade guide](https://developers.google.com/pay/api/web/guides/resources/update-to-latest-version) to see how to update your integration.\n *\n * If `options.googlePayVersion === 2` was set during the initial {@link module:braintree-web/google-payment.create|create} call, overrides must match the Google Pay v2 schema to be valid.\n *\n * @public\n * @param {object} overrides The supplied parameters for creating the PaymentDataRequest object. Required parameters are:\n * @param {object} overrides.transactionInfo Object according to the [Google Pay Transaction Info](https://developers.google.com/pay/api/web/reference/object#TransactionInfo) spec.\n * Optionally, any of the parameters in the [PaymentDataRequest](https://developers.google.com/pay/api/web/reference/object#PaymentDataRequest) parameters can be overridden, but note that it is recommended only to override top level parameters to avoid squashing deeply nested configuration objects. An example can be found below showing how to safely edit these deeply nested objects.\n * @example\n * var paymentDataRequest = googlePaymentInstance.createPaymentDataRequest({\n * merchantInfo: {\n * merchantId: 'my-merchant-id-from-google'\n * },\n * transactionInfo: {\n * currencyCode: 'USD',\n * totalPriceStatus: 'FINAL',\n * totalPrice: '100.00'\n * }\n * });\n *\n * // Update card payment methods to require billing address\n * var cardPaymentMethod = paymentDataRequest.allowedPaymentMethods;\n * cardPaymentMethod.parameters.billingAddressRequired = true;\n * cardPaymentMethod.parameters.billingAddressParameters = {\n * format: 'FULL',\n * phoneNumberRequired: true\n * };\n *\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * })\n *\n * paymentsClient.loadPaymentData(paymentDataRequest).then(function (response) {\n * // handle response with googlePaymentInstance.parseResponse\n * // (see below)\n * });\n * @example <caption>With deferred client</caption>\n * googlePaymentInstance.createPaymentDataRequest({\n * merchantInfo: {\n * merchantId: 'my-merchant-id-from-google'\n * },\n * transactionInfo: {\n * currencyCode: 'USD',\n * totalPriceStatus: 'FINAL',\n * totalPrice: '100.00'\n * }\n * }).then(function (paymentDataRequest) {\n * // Update card payment methods to require billing address\n * var cardPaymentMethod = paymentDataRequest.allowedPaymentMethods;\n * cardPaymentMethod.parameters.billingAddressRequired = true;\n * cardPaymentMethod.parameters.billingAddressParameters = {\n * format: 'FULL',\n * phoneNumberRequired: true\n * };\n *\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * })\n *\n * return paymentsClient.loadPaymentData(paymentDataRequest);\n * }).then(function (response) {\n * // handle response with googlePaymentInstance.parseResponse\n * // (see below)\n * });\n * @returns {object|Promise} Returns a configuration object for Google PaymentDataRequest. If instantiated with `useDeferredClient` and an `authorization` it will return a promise that resolves with the configuration.\n */\nGooglePayment.prototype.createPaymentDataRequest = function (overrides) {\n if (!this._useDeferredClient) {\n return this._createPaymentDataRequestSyncronously(overrides);\n }\n\n return this._waitForClient().then(\n function () {\n return this._createPaymentDataRequestSyncronously(overrides);\n }.bind(this)\n );\n};\n\nGooglePayment.prototype._createPaymentDataRequestSyncronously = function (\n overrides\n) {\n var paymentDataRequest = assign({}, overrides);\n var version = this._googlePayVersion;\n var createPaymentDataRequestMethod =\n CREATE_PAYMENT_DATA_REQUEST_METHODS[version];\n\n analytics.sendEvent(\n this._createPromise,\n \"google-payment.v\" + version + \".createPaymentDataRequest\"\n );\n\n return this[createPaymentDataRequestMethod](paymentDataRequest);\n};\n\n/**\n * Parse the response from the tokenization.\n * @public\n * @param {object} response The response back from the Google Pay tokenization.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link GooglePay~tokenizePayload|tokenizePayload}. If no callback is provided, `parseResponse` returns a promise that resolves with a {@link GooglePayment~tokenizePayload|tokenizePayload}.\n * @example with callback\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * })\n *\n * paymentsClient.loadPaymentData(paymentDataRequestFromCreatePaymentDataRequest).then(function (response) {\n * googlePaymentInstance.parseResponse(response, function (err, data) {\n * if (err) {\n * // handle errors\n * }\n * // send parsedResponse.nonce to your server\n * });\n * });\n * @example with promise\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * })\n *\n * paymentsClient.loadPaymentData(paymentDataRequestFromCreatePaymentDataRequest).then(function (response) {\n * return googlePaymentInstance.parseResponse(response);\n * }).then(function (parsedResponse) {\n * // send parsedResponse.nonce to your server\n * }).catch(function (err) {\n * // handle errors\n * });\n * @returns {(Promise|void)} Returns a promise that resolves the parsed response if no callback is provided.\n */\nGooglePayment.prototype.parseResponse = function (response) {\n var self = this;\n\n return Promise.resolve()\n .then(function () {\n var payload;\n var rawResponse =\n response.apiVersion === 2\n ? response.paymentMethodData.tokenizationData.token\n : response.paymentMethodToken.token;\n var parsedResponse = JSON.parse(rawResponse);\n var error = parsedResponse.error;\n\n if (error) {\n return Promise.reject(error);\n }\n\n analytics.sendEvent(\n self._createPromise,\n \"google-payment.parseResponse.succeeded\"\n );\n\n if (parsedResponse.paypalAccounts) {\n payload = parsedResponse.paypalAccounts[0];\n analytics.sendEvent(\n self._createPromise,\n \"google-payment.parseResponse.succeeded.paypal\"\n );\n\n return Promise.resolve({\n nonce: payload.nonce,\n type: payload.type,\n description: payload.description,\n });\n }\n payload = parsedResponse.androidPayCards[0];\n analytics.sendEvent(\n self._createPromise,\n \"google-payment.parseResponse.succeeded.google-payment\"\n );\n\n return Promise.resolve({\n nonce: payload.nonce,\n type: payload.type,\n description: payload.description,\n details: {\n cardType: payload.details.cardType,\n lastFour: payload.details.lastFour,\n lastTwo: payload.details.lastTwo,\n isNetworkTokenized: payload.details.isNetworkTokenized,\n bin: payload.details.bin,\n },\n binData: payload.binData,\n });\n })\n .catch(function (error) {\n analytics.sendEvent(\n self._createPromise,\n \"google-payment.parseResponse.failed\"\n );\n\n return Promise.reject(\n new BraintreeError({\n code: errors.GOOGLE_PAYMENT_GATEWAY_ERROR.code,\n message: errors.GOOGLE_PAYMENT_GATEWAY_ERROR.message,\n type: errors.GOOGLE_PAYMENT_GATEWAY_ERROR.type,\n details: {\n originalError: error,\n },\n })\n );\n });\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/google-payment.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * googlePaymentInstance.teardown();\n * @example <caption>With callback</caption>\n * googlePaymentInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nGooglePayment.prototype.teardown = function () {\n convertMethodsToError(this, methods(GooglePayment.prototype));\n\n return Promise.resolve();\n};\n\nfunction applyDefaultsToPaymentMethodConfiguration(\n merchantSubmittedPaymentMethod,\n defaultPaymentMethod\n) {\n Object.keys(defaultPaymentMethod).forEach(function (parameter) {\n if (typeof defaultPaymentMethod[parameter] === \"object\") {\n merchantSubmittedPaymentMethod[parameter] = assign(\n {},\n defaultPaymentMethod[parameter],\n merchantSubmittedPaymentMethod[parameter]\n );\n } else {\n merchantSubmittedPaymentMethod[parameter] =\n merchantSubmittedPaymentMethod[parameter] ||\n defaultPaymentMethod[parameter];\n }\n });\n}\n\nmodule.exports = wrapPromise.wrapPrototype(GooglePayment);\n\n},{\"../lib/analytics\":132,\"../lib/assign\":134,\"../lib/braintree-error\":137,\"../lib/convert-methods-to-error\":140,\"../lib/find\":150,\"../lib/generate-google-pay-configuration\":162,\"../lib/methods\":168,\"./errors\":114,\"@braintree/wrap-promise\":40}],116:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/google-payment\n * @description A component to integrate with Google Pay. The majority of the integration uses [Google's pay.js JavaScript file](https://pay.google.com/gp/p/js/pay.js). The Braintree component generates the configuration object necessary for Google Pay to initiate the Payment Request and parse the returned data to retrieve the payment method nonce which is used to process the transaction on the server.\n */\n\nvar GooglePayment = _dereq_(\"./google-payment\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar VERSION = \"3.103.0\";\nvar errors = _dereq_(\"./errors\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {boolean} [options.useDeferredClient] Used in conjunction with `authorization`, allows the Google Payment instance to be available right away by fetching the client configuration in the background. When this option is used, {@link GooglePayment#createPaymentDataRequest} will return a promise that resolves with the configuration instead of returning synchronously.\n * @param {number} [options.googlePayVersion] The version of the Google Pay API to use. Value of 2 is required to accept parameters documented [by Google](https://developers.google.com/pay/api/web/reference/object). Omit this parameter to use the deprecated Google Pay Version 1.\n * @param {string} [options.googleMerchantId] A Google merchant identifier issued after your website is approved by Google. Required when PaymentsClient is initialized with an environment property of PRODUCTION, but may be omitted in TEST environment.\n * @param {callback} [callback] The second argument, `data`, is the {@link GooglePayment} instance. If no callback is provided, `create` returns a promise that resolves with the {@link GooglePayment} instance.\n * @example <caption>Simple Example</caption>\n * // include https://pay.google.com/gp/p/js/pay.js in a script tag\n * // on your page to load the `google.payments.api.PaymentsClient` global object.\n *\n * var paymentButton = document.querySelector('#google-pay-button');\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * });\n *\n * braintree.client.create({\n * authorization: 'tokenization-key-or-client-token'\n * }).then(function (clientInstance) {\n * return braintree.googlePayment.create({\n * client: clientInstance,\n * googlePayVersion: 2,\n * googleMerchantId: 'your-merchant-id-from-google'\n * });\n * }).then(function (googlePaymentInstance) {\n * paymentButton.addEventListener('click', function (event) {\n * var paymentDataRequest;\n *\n * event.preventDefault();\n *\n * paymentDataRequest = googlePaymentInstance.createPaymentDataRequest({\n * transactionInfo: {\n * currencyCode: 'USD',\n * totalPriceStatus: 'FINAL',\n * totalPrice: '100.00'\n * }\n * });\n *\n * paymentsClient.loadPaymentData(paymentDataRequest).then(function (paymentData) {\n * return googlePaymentInstance.parseResponse(paymentData);\n * }).then(function (result) {\n * // send result.nonce to your server\n * }).catch(function (err) {\n * // handle err\n * });\n * });\n * });\n * @example <caption>Check Browser and Customer Compatibility</caption>\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * });\n *\n * function setupGooglePayButton(googlePaymentInstance) {\n * var button = document.createElement('button');\n *\n * button.id = 'google-pay';\n * button.appendChild(document.createTextNode('Google Pay'));\n * button.addEventListener('click', function (event) {\n * var paymentRequestData;\n *\n * event.preventDefault();\n *\n * paymentDataRequest = googlePaymentInstance.createPaymentDataRequest({\n * transactionInfo: {\n * currencyCode: 'USD',\n * totalPriceStatus: 'FINAL',\n * totalPrice: '100.00' // your amount\n * }\n * });\n *\n * paymentsClient.loadPaymentData(paymentDataRequest).then(function (paymentData) {\n * return googlePaymentInstance.parseResponse(paymentData);\n * }).then(function (result) {\n * // send result.nonce to your server\n * }).catch(function (err) {\n * // handle errors\n * });\n * });\n *\n * document.getElementById('container').appendChild(button);\n * }\n *\n * braintree.client.create({\n * authorization: 'tokenization-key-or-client-token'\n * }).then(function (clientInstance) {\n * return braintree.googlePayment.create({\n * client: clientInstance,\n * googlePayVersion: 2,\n * googleMerchantId: 'your-merchant-id-from-google'\n * });\n * }).then(function (googlePaymentInstance) {\n *\n * return paymentsClient.isReadyToPay({\n * // see https://developers.google.com/pay/api/web/reference/object#IsReadyToPayRequest for all options\n * apiVersion: 2,\n * apiVersionMinor: 0,\n * allowedPaymentMethods: googlePaymentInstance.createPaymentDataRequest().allowedPaymentMethods,\n * existingPaymentMethodRequired: true\n * });\n * }).then(function (response) {\n * if (response.result) {\n * setupGooglePayButton(googlePaymentInstance);\n * }\n * }).catch(function (err) {\n * // handle setup errors\n * });\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"Google Pay\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n var createPromise, instance;\n\n createPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n })\n .then(function (client) {\n var configuration = client.getConfiguration();\n\n options.client = client;\n if (!configuration.gatewayConfiguration.androidPay) {\n return Promise.reject(\n new BraintreeError(errors.GOOGLE_PAYMENT_NOT_ENABLED)\n );\n }\n\n return client;\n });\n\n options.createPromise = createPromise;\n instance = new GooglePayment(options);\n\n if (!options.useDeferredClient) {\n return createPromise.then(function (client) {\n instance._client = client;\n\n return instance;\n });\n }\n\n return instance;\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./errors\":114,\"./google-payment\":115,\"@braintree/wrap-promise\":40}],117:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar errors = _dereq_(\"../shared/errors\");\nvar allowedAttributes = _dereq_(\"../shared/constants\").allowedAttributes;\n\nfunction attributeValidationError(attribute, value) {\n var err;\n\n if (!allowedAttributes.hasOwnProperty(attribute)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED.type,\n code: errors.HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED.code,\n message:\n 'The \"' + attribute + '\" attribute is not supported in Hosted Fields.',\n });\n } else if (value != null && !_isValid(attribute, value)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED.type,\n code: errors.HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED.code,\n message:\n 'Value \"' +\n value +\n '\" is not allowed for \"' +\n attribute +\n '\" attribute.',\n });\n }\n\n return err;\n}\n\nfunction _isValid(attribute, value) {\n if (allowedAttributes[attribute] === \"string\") {\n return typeof value === \"string\" || typeof value === \"number\";\n } else if (allowedAttributes[attribute] === \"boolean\") {\n return String(value) === \"true\" || String(value) === \"false\";\n }\n\n return false;\n}\n\nmodule.exports = attributeValidationError;\n\n},{\"../../lib/braintree-error\":137,\"../shared/constants\":125,\"../shared/errors\":126}],118:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar constants = _dereq_(\"../shared/constants\");\nvar useMin = _dereq_(\"../../lib/use-min\");\n\nmodule.exports = function composeUrl(assetsUrl, componentId, isDebug) {\n return (\n assetsUrl +\n \"/web/\" +\n constants.VERSION +\n \"/html/hosted-fields-frame\" +\n useMin(isDebug) +\n \".html#\" +\n componentId\n );\n};\n\n},{\"../../lib/use-min\":173,\"../shared/constants\":125}],119:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar directions = _dereq_(\"../shared/constants\").navigationDirections;\nvar browserDetection = _dereq_(\"../shared/browser-detection\");\nvar focusIntercept = _dereq_(\"../shared/focus-intercept\");\nvar findParentTags = _dereq_(\"../shared/find-parent-tags\");\nvar userFocusableTagNames = [\"INPUT\", \"SELECT\", \"TEXTAREA\"];\n// Devices with software keyboards do not or cannot focus on input types\n// that do not require keyboard-based interaction.\nvar unfocusedInputTypes = [\n \"hidden\",\n \"button\",\n \"reset\",\n \"submit\",\n \"checkbox\",\n \"radio\",\n \"file\",\n];\n\nfunction _isUserFocusableElement(element) {\n if (!browserDetection.hasSoftwareKeyboard()) {\n // on desktop browsers, the only input type that isn't focusable\n // is the hidden input\n return element.type !== \"hidden\";\n }\n\n return (\n userFocusableTagNames.indexOf(element.tagName) > -1 &&\n unfocusedInputTypes.indexOf(element.type) < 0\n );\n}\n\nfunction _createNavigationHelper(direction, numberOfElementsInForm) {\n switch (direction) {\n case directions.BACK:\n return {\n checkIndexBounds: function (index) {\n return index < 0;\n },\n indexChange: -1,\n };\n case directions.FORWARD:\n return {\n checkIndexBounds: function (index) {\n return index > numberOfElementsInForm - 1;\n },\n indexChange: 1,\n };\n default:\n }\n\n return {};\n}\n\nfunction _findFirstFocusableElement(elementsInForm) {\n var elementsIndex, element;\n\n for (\n elementsIndex = 0;\n elementsIndex < elementsInForm.length;\n elementsIndex++\n ) {\n element = elementsInForm[elementsIndex];\n\n if (_isUserFocusableElement(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nmodule.exports = {\n removeExtraFocusElements: function (checkoutForm, onRemoveFocusIntercepts) {\n var elements = Array.prototype.slice.call(checkoutForm.elements);\n var firstFocusableInput = _findFirstFocusableElement(elements);\n var lastFocusableInput = _findFirstFocusableElement(elements.reverse());\n\n // these should never be identical, because there will at least be the\n // before and the after input\n [firstFocusableInput, lastFocusableInput].forEach(function (input) {\n if (!input) {\n return;\n }\n\n if (focusIntercept.matchFocusElement(input.getAttribute(\"id\"))) {\n onRemoveFocusIntercepts(input.getAttribute(\"id\"));\n }\n });\n },\n\n createFocusChangeHandler: function (hostedFieldsId, callbacks) {\n return function (data) {\n var currentIndex, targetElement, checkoutForm, navHelper;\n var sourceElement = document.getElementById(\n \"bt-\" + data.field + \"-\" + data.direction + \"-\" + hostedFieldsId\n );\n\n if (!sourceElement) {\n return;\n }\n\n checkoutForm = findParentTags(sourceElement, \"form\")[0];\n\n if (document.forms.length < 1 || !checkoutForm) {\n callbacks.onRemoveFocusIntercepts();\n\n return;\n }\n\n checkoutForm = [].slice.call(checkoutForm.elements);\n currentIndex = checkoutForm.indexOf(sourceElement);\n navHelper = _createNavigationHelper(data.direction, checkoutForm.length);\n\n do {\n currentIndex += navHelper.indexChange;\n if (navHelper.checkIndexBounds(currentIndex)) {\n return;\n }\n targetElement = checkoutForm[currentIndex];\n } while (!_isUserFocusableElement(targetElement));\n\n if (focusIntercept.matchFocusElement(targetElement.getAttribute(\"id\"))) {\n callbacks.onTriggerInputFocus(\n targetElement.getAttribute(\"data-braintree-type\")\n );\n } else {\n targetElement.focus();\n }\n };\n },\n};\n\n},{\"../shared/browser-detection\":124,\"../shared/constants\":125,\"../shared/find-parent-tags\":127,\"../shared/focus-intercept\":128}],120:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar allowedStyles = _dereq_(\"../shared/constants\").allowedStyles;\n\nmodule.exports = function getStylesFromClass(cssClass) {\n var element = document.createElement(\"input\");\n var styles = {};\n var computedStyles;\n\n if (cssClass[0] === \".\") {\n cssClass = cssClass.substring(1);\n }\n\n element.className = cssClass;\n element.style.display = \"none !important\";\n element.style.position = \"fixed !important\";\n element.style.left = \"-99999px !important\";\n element.style.top = \"-99999px !important\";\n document.body.appendChild(element);\n\n computedStyles = window.getComputedStyle(element);\n\n allowedStyles.forEach(function (style) {\n var value = computedStyles[style];\n\n if (value) {\n styles[style] = value;\n }\n });\n\n document.body.removeChild(element);\n\n return styles;\n};\n\n},{\"../shared/constants\":125}],121:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar assign = _dereq_(\"../../lib/assign\").assign;\nvar createAssetsUrl = _dereq_(\"../../lib/create-assets-url\");\nvar isVerifiedDomain = _dereq_(\"../../lib/is-verified-domain\");\nvar Destructor = _dereq_(\"../../lib/destructor\");\nvar iFramer = _dereq_(\"@braintree/iframer\");\nvar Bus = _dereq_(\"framebus\");\nvar createDeferredClient = _dereq_(\"../../lib/create-deferred-client\");\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar composeUrl = _dereq_(\"./compose-url\");\nvar getStylesFromClass = _dereq_(\"./get-styles-from-class\");\nvar constants = _dereq_(\"../shared/constants\");\nvar errors = _dereq_(\"../shared/errors\");\nvar INTEGRATION_TIMEOUT_MS =\n _dereq_(\"../../lib/constants\").INTEGRATION_TIMEOUT_MS;\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar findParentTags = _dereq_(\"../shared/find-parent-tags\");\nvar browserDetection = _dereq_(\"../shared/browser-detection\");\nvar events = constants.events;\nvar EventEmitter = _dereq_(\"@braintree/event-emitter\");\nvar injectFrame = _dereq_(\"./inject-frame\");\nvar analytics = _dereq_(\"../../lib/analytics\");\nvar allowedFields = constants.allowedFields;\nvar methods = _dereq_(\"../../lib/methods\");\nvar shadow = _dereq_(\"../../lib/shadow\");\nvar findRootNode = _dereq_(\"../../lib/find-root-node\");\nvar convertMethodsToError = _dereq_(\"../../lib/convert-methods-to-error\");\nvar sharedErrors = _dereq_(\"../../lib/errors\");\nvar getCardTypes = _dereq_(\"../shared/get-card-types\");\nvar attributeValidationError = _dereq_(\"./attribute-validation-error\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar focusChange = _dereq_(\"./focus-change\");\nvar destroyFocusIntercept = _dereq_(\"../shared/focus-intercept\").destroy;\n\nvar SAFARI_FOCUS_TIMEOUT = 5;\n\n/**\n * @typedef {object} HostedFields~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {object} authenticationInsight Info about the [regulatory environment](https://developer.paypal.com/braintree/docs/guides/3d-secure/advanced-options/javascript/v3#authentication-insight) of the tokenized card. Only available if `authenticationInsight.merchantAccountId` is passed in the `tokenize` method options.\n * @property {string} authenticationInsight.regulationEnvironment The [regulation environment](https://developer.paypal.com/braintree/docs/guides/3d-secure/advanced-options/javascript/v3#authentication-insight) for the tokenized card.\n * @property {object} details Additional account details.\n * @property {string} details.bin The BIN number of the card.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.expirationMonth The expiration month of the card.\n * @property {string} details.expirationYear The expiration year of the card.\n * @property {string} details.cardholderName The cardholder name tokenized with the card.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, always `CreditCard`.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * @typedef {object} HostedFields~stateObject\n * @description The event payload sent from {@link HostedFields#on|on} or {@link HostedFields#getState|getState}.\n * @property {HostedFields~hostedFieldsCard[]} cards\n * This will return an array of potential {@link HostedFields~hostedFieldsCard|cards}. If the card type has been determined, the array will contain only one card.\n * Internally, Hosted Fields uses <a href=\"https://github.com/braintree/credit-card-type\">credit-card-type</a>,\n * an open-source card detection library.\n * @property {string} emittedBy\n * The name of the field associated with an event. This will not be included if returned by {@link HostedFields#getState|getState}. It will be one of the following strings:<br>\n * - `\"number\"`\n * - `\"cvv\"`\n * - `\"expirationDate\"`\n * - `\"expirationMonth\"`\n * - `\"expirationYear\"`\n * - `\"postalCode\"`\n * - `\"cardholderName\"`\n * @property {object} fields\n * @property {?HostedFields~hostedFieldsFieldData} fields.number {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the number field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.cvv {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the CVV field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.expirationDate {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the expiration date field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.expirationMonth {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the expiration month field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.expirationYear {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the expiration year field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.postalCode {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the postal code field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.cardholderName {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the cardholder name field, if it is present.\n */\n\n/**\n * @typedef {object} HostedFields~binPayload\n * @description The event payload sent from {@link HostedFields#on|on} when the {@link HostedFields#event:binAvailable|binAvailable} event is emitted.\n * @property {string} bin The first 6 digits of the card number.\n */\n\n/**\n * @typedef {object} HostedFields~hostedFieldsFieldData\n * @description Data about Hosted Fields fields, sent in {@link HostedFields~stateObject|stateObjects}.\n * @property {HTMLElement} container Reference to the container DOM element on your page associated with the current event.\n * @property {boolean} isFocused Whether or not the input is currently focused.\n * @property {boolean} isEmpty Whether or not the user has entered a value in the input.\n * @property {boolean} isPotentiallyValid\n * A determination based on the future validity of the input value.\n * This is helpful when a user is entering a card number and types <code>\"41\"</code>.\n * While that value is not valid for submission, it is still possible for\n * it to become a fully qualified entry. However, if the user enters <code>\"4x\"</code>\n * it is clear that the card number can never become valid and isPotentiallyValid will\n * return false.\n * @property {boolean} isValid Whether or not the value of the associated input is <i>fully</i> qualified for submission.\n */\n\n/**\n * @typedef {object} HostedFields~hostedFieldsCard\n * @description Information about the card type, sent in {@link HostedFields~stateObject|stateObjects}.\n * @property {string} type The code-friendly representation of the card type. It will be one of the following strings:\n * - `american-express`\n * - `diners-club`\n * - `discover`\n * - `jcb`\n * - `maestro`\n * - `master-card`\n * - `unionpay`\n * - `visa`\n * @property {string} niceType The pretty-printed card type. It will be one of the following strings:\n * - `American Express`\n * - `Diners Club`\n * - `Discover`\n * - `JCB`\n * - `Maestro`\n * - `MasterCard`\n * - `UnionPay`\n * - `Visa`\n * @property {object} code\n * This object contains data relevant to the security code requirements of the card brand.\n * For example, on a Visa card there will be a <code>CVV</code> of 3 digits, whereas an\n * American Express card requires a 4-digit <code>CID</code>.\n * @property {string} code.name <code>\"CVV\"</code> <code>\"CID\"</code> <code>\"CVC\"</code>\n * @property {number} code.size The expected length of the security code. Typically, this is 3 or 4.\n */\n\n/**\n * @name HostedFields#on\n * @function\n * @param {string} event The name of the event to which you are subscribing.\n * @param {function} handler A callback to handle the event.\n * @description Subscribes a handler function to a named event.\n *\n * **Events that emit a {@link HostedFields~stateObject|stateObject}.**\n * * {@link HostedFields#event:blur|blur}\n * * {@link HostedFields#event:focus|focus}\n * * {@link HostedFields#event:empty|empty}\n * * {@link HostedFields#event:notEmpty|notEmpty}\n * * {@link HostedFields#event:cardTypeChange|cardTypeChange}\n * * {@link HostedFields#event:validityChange|validityChange}\n * * {@link HostedFields#event:inputSubmitRequest|inputSubmitRequest}\n *\n * **Other Events**\n * * {@link HostedFields#event:binAvailable|binAvailable} - emits a {@link HostedFields~binPayload|bin payload}. Note: If you are using a [Referrer-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy) header that prevents the origin from being sent, this event will not fire.\n * @example\n * <caption>Listening to a Hosted Field event, in this case 'focus'</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('focus', function (event) {\n * console.log(event.emittedBy, 'has been focused');\n * });\n * });\n * @returns {void}\n */\n\n/**\n * @name HostedFields#off\n * @function\n * @param {string} event The name of the event to which you are unsubscribing.\n * @param {function} handler The callback for the event you are unsubscribing from.\n * @description Unsubscribes the handler function to a named event.\n * @example\n * <caption>Subscribing and then unsubscribing from a Hosted Field event, in this case 'focus'</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * var callback = function (event) {\n * console.log(event.emittedBy, 'has been focused');\n * };\n * hostedFieldsInstance.on('focus', callback);\n *\n * // later on\n * hostedFieldsInstance.off('focus', callback);\n * });\n * @returns {void}\n */\n\n/**\n * This event is emitted when the user requests submission of an input field, such as by pressing the Enter or Return key on their keyboard, or mobile equivalent.\n * @event HostedFields#inputSubmitRequest\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Clicking a submit button upon hitting Enter (or equivalent) within a Hosted Field</caption>\n * var hostedFields = require('braintree-web/hosted-fields');\n * var submitButton = document.querySelector('input[type=\"submit\"]');\n *\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('inputSubmitRequest', function () {\n * // User requested submission, e.g. by pressing Enter or equivalent\n * submitButton.click();\n * });\n * });\n */\n\n/**\n * This event is emitted when a field transitions from having data to being empty.\n * @event HostedFields#empty\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to an empty event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('empty', function (event) {\n * console.log(event.emittedBy, 'is now empty');\n * });\n * });\n */\n\n/**\n * This event is emitted when a field transitions from being empty to having data.\n * @event HostedFields#notEmpty\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to an notEmpty event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('notEmpty', function (event) {\n * console.log(event.emittedBy, 'is now not empty');\n * });\n * });\n */\n\n/**\n * This event is emitted when a field loses focus.\n * @event HostedFields#blur\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to a blur event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('blur', function (event) {\n * console.log(event.emittedBy, 'lost focus');\n * });\n * });\n */\n\n/**\n * This event is emitted when a field gains focus.\n * @event HostedFields#focus\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to a focus event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('focus', function (event) {\n * console.log(event.emittedBy, 'gained focus');\n * });\n * });\n */\n\n/**\n * This event is emitted when activity within the number field has changed such that the possible card type has changed.\n * @event HostedFields#cardTypeChange\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to a cardTypeChange event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('cardTypeChange', function (event) {\n * if (event.cards.length === 1) {\n * console.log(event.cards[0].type);\n * } else {\n * console.log('Type of card not yet known');\n * }\n * });\n * });\n */\n\n/**\n * This event is emitted when the validity of a field has changed. Validity is represented in the {@link HostedFields~stateObject|stateObject} as two booleans: `isValid` and `isPotentiallyValid`.\n * @event HostedFields#validityChange\n * @type {HostedFields~stateObject}\n * @example\n * <caption>Listening to a validityChange event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('validityChange', function (event) {\n * var field = event.fields[event.emittedBy];\n *\n * if (field.isValid) {\n * console.log(event.emittedBy, 'is fully valid');\n * } else if (field.isPotentiallyValid) {\n * console.log(event.emittedBy, 'is potentially valid');\n * } else {\n * console.log(event.emittedBy, 'is not valid');\n * }\n * });\n * });\n */\n\n/**\n * This event is emitted when the first 6 digits of the card number have been entered by the customer.\n * @event HostedFields#binAvailable\n * @type {string}\n * @example\n * <caption>Listening to a `binAvailable` event</caption>\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('binAvailable', function (event) {\n * event.bin // send bin to 3rd party bin service\n * });\n * });\n */\n\nfunction createInputEventHandler(fields) {\n return function (eventData) {\n var field;\n var merchantPayload = eventData.merchantPayload;\n var emittedBy = merchantPayload.emittedBy;\n var container = fields[emittedBy].containerElement;\n\n Object.keys(merchantPayload.fields).forEach(function (key) {\n merchantPayload.fields[key].container = fields[key].containerElement;\n });\n\n field = merchantPayload.fields[emittedBy];\n\n container.classList.toggle(\n constants.externalClasses.FOCUSED,\n field.isFocused\n );\n container.classList.toggle(constants.externalClasses.VALID, field.isValid);\n\n container.classList.toggle(\n constants.externalClasses.INVALID,\n !field.isPotentiallyValid\n );\n\n // eslint-disable-next-line no-invalid-this\n this._state = {\n cards: merchantPayload.cards,\n fields: merchantPayload.fields,\n };\n\n this._emit(eventData.type, merchantPayload); // eslint-disable-line no-invalid-this\n };\n}\n\nfunction isVisibleEnough(node) {\n var boundingBox = node.getBoundingClientRect();\n var verticalMidpoint = Math.floor(boundingBox.height / 2);\n var horizontalMidpoint = Math.floor(boundingBox.width / 2);\n\n return (\n boundingBox.top <\n (window.innerHeight - verticalMidpoint ||\n document.documentElement.clientHeight - verticalMidpoint) &&\n boundingBox.right > horizontalMidpoint &&\n boundingBox.bottom > verticalMidpoint &&\n boundingBox.left <\n (window.innerWidth - horizontalMidpoint ||\n document.documentElement.clientWidth - horizontalMidpoint)\n );\n}\n\n/**\n * @class HostedFields\n * @param {object} options The Hosted Fields {@link module:braintree-web/hosted-fields.create create} options.\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/hosted-fields.create|braintree-web.hosted-fields.create} instead.</strong>\n * @classdesc This class represents a Hosted Fields component produced by {@link module:braintree-web/hosted-fields.create|braintree-web/hosted-fields.create}. Instances of this class have methods for interacting with the input fields within Hosted Fields' iframes.\n */\nfunction HostedFields(options) {\n var failureTimeout, clientConfig, assetsUrl, isDebug, hostedFieldsUrl;\n var self = this;\n var fields = {};\n var frameReadyPromiseResolveFunctions = {};\n var frameReadyPromises = [];\n var componentId = uuid();\n\n this._merchantConfigurationOptions = assign({}, options);\n\n if (options.client) {\n clientConfig = options.client.getConfiguration();\n assetsUrl = clientConfig.gatewayConfiguration.assetsUrl;\n isDebug = clientConfig.isDebug;\n } else {\n assetsUrl = createAssetsUrl.create(options.authorization);\n isDebug = Boolean(options.isDebug);\n }\n\n this._clientPromise = createDeferredClient.create({\n client: options.client,\n authorization: options.authorization,\n debug: isDebug,\n assetsUrl: assetsUrl,\n name: \"Hosted Fields\",\n });\n\n hostedFieldsUrl = composeUrl(assetsUrl, componentId, isDebug);\n\n if (!options.fields || Object.keys(options.fields).length === 0) {\n throw new BraintreeError({\n type: sharedErrors.INSTANTIATION_OPTION_REQUIRED.type,\n code: sharedErrors.INSTANTIATION_OPTION_REQUIRED.code,\n message: \"options.fields is required when instantiating Hosted Fields.\",\n });\n }\n\n EventEmitter.call(this);\n\n this._injectedNodes = [];\n this._destructor = new Destructor();\n this._fields = fields;\n this._state = {\n fields: {},\n cards: getCardTypes(\"\"),\n };\n\n this._bus = new Bus({\n channel: componentId,\n verifyDomain: isVerifiedDomain,\n targetFrames: [window],\n });\n\n this._destructor.registerFunctionForTeardown(function () {\n self._bus.teardown();\n });\n\n // NEXT_MAJOR_VERSION analytics events should have present tense verbs\n if (!options.client) {\n analytics.sendEvent(\n this._clientPromise,\n \"custom.hosted-fields.initialized.deferred-client\"\n );\n } else {\n analytics.sendEvent(\n this._clientPromise,\n \"custom.hosted-fields.initialized\"\n );\n }\n\n Object.keys(options.fields).forEach(\n function (key) {\n var field, externalContainer, internalContainer, frame, frameReadyPromise;\n\n if (!constants.allowedFields.hasOwnProperty(key)) {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_INVALID_FIELD_KEY.type,\n code: errors.HOSTED_FIELDS_INVALID_FIELD_KEY.code,\n message: '\"' + key + '\" is not a valid field.',\n });\n }\n\n field = options.fields[key];\n // NEXT_MAJOR_VERSION remove selector as an option\n // and simply make the API take a container\n externalContainer = field.container || field.selector;\n\n if (typeof externalContainer === \"string\") {\n externalContainer = document.querySelector(externalContainer);\n }\n\n if (!externalContainer || externalContainer.nodeType !== 1) {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.type,\n code: errors.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.code,\n message: errors.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.message,\n details: {\n fieldSelector: field.selector,\n fieldContainer: field.container,\n fieldKey: key,\n },\n });\n } else if (\n externalContainer.querySelector('iframe[name^=\"braintree-\"]')\n ) {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.type,\n code: errors.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.code,\n message: errors.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.message,\n details: {\n fieldSelector: field.selector,\n fieldContainer: field.container,\n fieldKey: key,\n },\n });\n }\n\n internalContainer = externalContainer;\n\n if (shadow.isShadowElement(internalContainer)) {\n internalContainer = shadow.transformToSlot(\n internalContainer,\n \"height: 100%\"\n );\n }\n\n if (field.maxlength && typeof field.maxlength !== \"number\") {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,\n message: \"The value for maxlength must be a number.\",\n details: {\n fieldKey: key,\n },\n });\n }\n\n if (field.minlength && typeof field.minlength !== \"number\") {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,\n message: \"The value for minlength must be a number.\",\n details: {\n fieldKey: key,\n },\n });\n }\n\n frame = iFramer({\n type: key,\n name: \"braintree-hosted-field-\" + key,\n style: constants.defaultIFrameStyle,\n title:\n field.iframeTitle ||\n \"Secure Credit Card Frame - \" + constants.allowedFields[key].label,\n });\n this._bus.addTargetFrame(frame);\n\n this._injectedNodes.push.apply(\n this._injectedNodes,\n injectFrame(componentId, frame, internalContainer, function () {\n self.focus(key);\n })\n );\n\n this._setupLabelFocus(key, externalContainer);\n fields[key] = {\n frameElement: frame,\n containerElement: externalContainer,\n };\n frameReadyPromise = new Promise(function (resolve) {\n frameReadyPromiseResolveFunctions[key] = resolve;\n });\n frameReadyPromises.push(frameReadyPromise);\n\n this._state.fields[key] = {\n isEmpty: true,\n isValid: false,\n isPotentiallyValid: true,\n isFocused: false,\n container: externalContainer,\n };\n\n // prevents loading the iframe from blocking the code\n setTimeout(function () {\n frame.src = hostedFieldsUrl;\n }, 0);\n }.bind(this)\n );\n\n if (this._merchantConfigurationOptions.styles) {\n Object.keys(this._merchantConfigurationOptions.styles).forEach(function (\n selector\n ) {\n var className = self._merchantConfigurationOptions.styles[selector];\n\n if (typeof className === \"string\") {\n self._merchantConfigurationOptions.styles[selector] =\n getStylesFromClass(className);\n }\n });\n }\n\n this._bus.on(events.REMOVE_FOCUS_INTERCEPTS, function (data) {\n destroyFocusIntercept(data && data.id);\n });\n\n this._bus.on(\n events.TRIGGER_FOCUS_CHANGE,\n focusChange.createFocusChangeHandler(componentId, {\n onRemoveFocusIntercepts: function (element) {\n self._bus.emit(events.REMOVE_FOCUS_INTERCEPTS, {\n id: element,\n });\n },\n onTriggerInputFocus: function (targetType) {\n self.focus(targetType);\n },\n })\n );\n\n this._bus.on(events.READY_FOR_CLIENT, function (reply) {\n self._clientPromise.then(function (client) {\n reply(client);\n });\n });\n\n this._bus.on(events.CARD_FORM_ENTRY_HAS_BEGUN, function () {\n analytics.sendEvent(self._clientPromise, \"hosted-fields.input.started\");\n });\n\n this._bus.on(events.BIN_AVAILABLE, function (bin) {\n self._emit(\"binAvailable\", {\n bin: bin,\n });\n });\n\n failureTimeout = setTimeout(function () {\n analytics.sendEvent(\n self._clientPromise,\n \"custom.hosted-fields.load.timed-out\"\n );\n self._emit(\"timeout\");\n }, INTEGRATION_TIMEOUT_MS);\n\n Promise.all(frameReadyPromises).then(function (results) {\n var reply = results[0];\n\n clearTimeout(failureTimeout);\n reply(\n formatMerchantConfigurationForIframes(self._merchantConfigurationOptions)\n );\n\n self._cleanUpFocusIntercepts();\n\n self._emit(\"ready\");\n });\n\n this._bus.on(events.FRAME_READY, function (data, reply) {\n frameReadyPromiseResolveFunctions[data.field](reply);\n });\n\n this._bus.on(events.INPUT_EVENT, createInputEventHandler(fields).bind(this));\n\n this._destructor.registerFunctionForTeardown(function () {\n var j, node, parent;\n\n for (j = 0; j < self._injectedNodes.length; j++) {\n node = self._injectedNodes[j];\n parent = node.parentNode;\n\n parent.removeChild(node);\n\n parent.classList.remove(\n constants.externalClasses.FOCUSED,\n constants.externalClasses.INVALID,\n constants.externalClasses.VALID\n );\n }\n });\n\n this._destructor.registerFunctionForTeardown(function () {\n destroyFocusIntercept();\n });\n\n this._destructor.registerFunctionForTeardown(function () {\n var methodNames = methods(HostedFields.prototype).concat(\n methods(EventEmitter.prototype)\n );\n\n convertMethodsToError(self, methodNames);\n });\n}\n\nEventEmitter.createChild(HostedFields);\n\nHostedFields.prototype._setupLabelFocus = function (type, container) {\n var labels, i;\n var self = this;\n var rootNode = findRootNode(container);\n\n if (container.id == null) {\n return;\n }\n\n function triggerFocus() {\n self.focus(type);\n }\n\n // find any labels in the normal DOM\n labels = Array.prototype.slice.call(\n document.querySelectorAll('label[for=\"' + container.id + '\"]')\n );\n if (rootNode !== document) {\n // find any labels within the shadow dom\n labels = labels.concat(\n Array.prototype.slice.call(\n rootNode.querySelectorAll('label[for=\"' + container.id + '\"]')\n )\n );\n }\n // find any labels surrounding the container that don't also have the `for` attribute\n labels = labels.concat(findParentTags(container, \"label\"));\n // filter out any accidental duplicates\n labels = labels.filter(function (label, index, arr) {\n return arr.indexOf(label) === index;\n });\n\n for (i = 0; i < labels.length; i++) {\n labels[i].addEventListener(\"click\", triggerFocus, false);\n }\n\n this._destructor.registerFunctionForTeardown(function () {\n for (i = 0; i < labels.length; i++) {\n labels[i].removeEventListener(\"click\", triggerFocus, false);\n }\n });\n};\n\nHostedFields.prototype._getAnyFieldContainer = function () {\n var self = this;\n\n return Object.keys(this._fields).reduce(function (found, field) {\n return found || self._fields[field].containerElement;\n }, null);\n};\n\nHostedFields.prototype._cleanUpFocusIntercepts = function () {\n var iframeContainer, checkoutForm;\n\n if (document.forms.length < 1) {\n this._bus.emit(events.REMOVE_FOCUS_INTERCEPTS);\n } else {\n iframeContainer = this._getAnyFieldContainer();\n checkoutForm = findParentTags(iframeContainer, \"form\")[0];\n\n if (checkoutForm) {\n focusChange.removeExtraFocusElements(\n checkoutForm,\n function (id) {\n this._bus.emit(events.REMOVE_FOCUS_INTERCEPTS, {\n id: id,\n });\n }.bind(this)\n );\n } else {\n this._bus.emit(events.REMOVE_FOCUS_INTERCEPTS);\n }\n }\n};\n\nHostedFields.prototype._attachInvalidFieldContainersToError = function (err) {\n if (\n !(\n err.details &&\n err.details.invalidFieldKeys &&\n err.details.invalidFieldKeys.length > 0\n )\n ) {\n return;\n }\n err.details.invalidFields = {};\n err.details.invalidFieldKeys.forEach(\n function (field) {\n err.details.invalidFields[field] = this._fields[field].containerElement;\n }.bind(this)\n );\n};\n\n/**\n * Get card verification challenges, such as requirements for cvv and postal code.\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. If no callback is provided, `getChallenges` returns a promise.\n * @example\n * hostedFieldsInstance.getChallenges().then(function (challenges) {\n * challenges // ['cvv', 'postal_code']\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.getChallenges = function () {\n return this._clientPromise.then(function (client) {\n return client.getConfiguration().gatewayConfiguration.challenges;\n });\n};\n\n/**\n * Get supported card types configured in the Braintree Control Panel\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. If no callback is provided, `getSupportedCardTypes` returns a promise.\n * @example\n * hostedFieldsInstance.getSupportedCardTypes().then(function (cardTypes) {\n * cardTypes // ['Visa', 'American Express', 'Mastercard']\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.getSupportedCardTypes = function () {\n return this._clientPromise.then(function (client) {\n var cards = client\n .getConfiguration()\n .gatewayConfiguration.creditCards.supportedCardTypes.map(function (\n cardType\n ) {\n if (cardType === \"MasterCard\") {\n // Mastercard changed their branding. We can't update our\n // config without creating a breaking change, so we just\n // hard code the change here\n return \"Mastercard\";\n }\n\n return cardType;\n });\n\n return cards;\n });\n};\n\n/**\n * Cleanly remove anything set up by {@link module:braintree-web/hosted-fields.create|create}.\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. No data is returned if teardown completes successfully. If no callback is provided, `teardown` returns a promise.\n * @example\n * hostedFieldsInstance.teardown(function (teardownErr) {\n * if (teardownErr) {\n * console.error('Could not tear down Hosted Fields!');\n * } else {\n * console.info('Hosted Fields has been torn down!');\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.teardown = function () {\n var self = this;\n\n return new Promise(function (resolve, reject) {\n self._destructor.teardown(function (err) {\n analytics.sendEvent(\n self._clientPromise,\n \"custom.hosted-fields.teardown-completed\"\n );\n\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n};\n\n/**\n * Tokenizes fields and returns a nonce payload.\n * @public\n * @param {object} [options] All tokenization options for the Hosted Fields component.\n * @param {boolean} [options.vault=false] When true, will vault the tokenized card. Cards will only be vaulted when using a client created with a client token that includes a customer ID. Note: merchants using Advanced Fraud Tools should not use this option, as device data will not be included.\n * @param {object} [options.authenticationInsight] Options for checking authentication insight - the [regulatory environment](https://developer.paypal.com/braintree/docs/guides/3d-secure/advanced-options/javascript/v3#authentication-insight) of the tokenized card.\n * @param {string} options.authenticationInsight.merchantAccountId The Braintree merchant account id to use to look up the authentication insight information.\n * @param {array} [options.fieldsToTokenize] By default, all fields will be tokenized. You may specify which fields specifically you wish to tokenize with this property. Valid options are `'number'`, `'cvv'`, `'expirationDate'`, `'expirationMonth'`, `'expirationYear'`, `'postalCode'`, `'cardholderName'`.\n * @param {string} [options.cardholderName] When supplied, the cardholder name to be tokenized with the contents of the fields.\n * @param {string} [options.billingAddress.postalCode] When supplied, this postal code will be tokenized along with the contents of the fields. If a postal code is provided as part of the Hosted Fields configuration, the value of the field will be tokenized and this value will be ignored.\n * @param {string} [options.billingAddress.firstName] When supplied, this customer first name will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.lastName] When supplied, this customer last name will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.company] When supplied, this company name will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.streetAddress] When supplied, this street address will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.extendedAddress] When supplied, this extended address will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.locality] When supplied, this locality (the city) will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.region] When supplied, this region (the state) will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryCodeNumeric] When supplied, this numeric country code will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryCodeAlpha2] When supplied, this alpha 2 representation of a country will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryCodeAlpha3] When supplied, this alpha 3 representation of a country will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryName] When supplied, this country name will be tokenized along with the contents of the fields.\n *\n * @param {callback} [callback] May be used as the only parameter of the function if no options are passed in. The second argument, <code>data</code>, is a {@link HostedFields~tokenizePayload|tokenizePayload}. If no callback is provided, `tokenize` returns a function that resolves with a {@link HostedFields~tokenizePayload|tokenizePayload}.\n * @example <caption>Tokenize a card</caption>\n * hostedFieldsInstance.tokenize(function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * switch (tokenizeErr.code) {\n * case 'HOSTED_FIELDS_FIELDS_EMPTY':\n * // occurs when none of the fields are filled in\n * console.error('All fields are empty! Please fill out the form.');\n * break;\n * case 'HOSTED_FIELDS_FIELDS_INVALID':\n * // occurs when certain fields do not pass client side validation\n * console.error('Some fields are invalid:', tokenizeErr.details.invalidFieldKeys);\n *\n * // you can also programmatically access the field containers for the invalid fields\n * tokenizeErr.details.invalidFields.forEach(function (fieldContainer) {\n * fieldContainer.className = 'invalid';\n * });\n * break;\n * case 'HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE':\n * // occurs when:\n * // * the client token used for client authorization was generated\n * // with a customer ID and the fail on duplicate payment method\n * // option is set to true\n * // * the card being tokenized has previously been vaulted (with any customer)\n * // See: https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#options.fail_on_duplicate_payment_method\n * console.error('This payment method already exists in your vault.');\n * break;\n * case 'HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED':\n * // occurs when:\n * // * the client token used for client authorization was generated\n * // with a customer ID and the verify card option is set to true\n * // and you have credit card verification turned on in the Braintree\n * // control panel\n * // * the cvv does not pass verification (https://developer.paypal.com/braintree/docs/reference/general/testing#avs-and-cvv/cid-responses)\n * // See: https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#options.verify_card\n * console.error('CVV did not pass verification');\n * break;\n * case 'HOSTED_FIELDS_FAILED_TOKENIZATION':\n * // occurs for any other tokenization error on the server\n * console.error('Tokenization failed server side. Is the card valid?');\n * break;\n * case 'HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR':\n * // occurs when the Braintree gateway cannot be contacted\n * console.error('Network error occurred when tokenizing.');\n * break;\n * default:\n * console.error('Something bad happened!', tokenizeErr);\n * }\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Tokenize and vault a card</caption>\n * hostedFieldsInstance.tokenize({\n * vault: true\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Tokenize a card with non-Hosted Fields cardholder name</caption>\n * hostedFieldsInstance.tokenize({\n * cardholderName: 'First Last'\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Tokenize a card with non-Hosted Fields postal code option</caption>\n * hostedFieldsInstance.tokenize({\n * billingAddress: {\n * postalCode: '11111'\n * }\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Tokenize a card with additional billing address options</caption>\n * hostedFieldsInstance.tokenize({\n * billingAddress: {\n * firstName: 'First',\n * lastName: 'Last',\n * company: 'Company',\n * streetAddress: '123 Street',\n * extendedAddress: 'Unit 1',\n * // passing just one of the country options is sufficient to\n * // associate the card details with a particular country\n * // valid country names and codes can be found here:\n * // https://developer.paypal.com/braintree/docs/reference/general/countries/ruby#list-of-countries\n * countryName: 'United States',\n * countryCodeAlpha2: 'US',\n * countryCodeAlpha3: 'USA',\n * countryCodeNumeric: '840'\n * }\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example <caption>Allow tokenization with empty cardholder name field</caption>\n * var state = hostedFieldsInstance.getState();\n * var fields = Object.keys(state.fields);\n *\n * // normally, if you tried to tokenize an empty cardholder name field\n * // you would get an error, to allow making this field optional,\n * // tokenize all the fields except for the cardholder name field\n * // when the cardholder name field is empty. Otherwise, tokenize\n * // all the fields\n * if (state.fields.cardholderName.isEmpty) {\n * fields = fields.filter(function (field) {\n * return field !== 'cardholderName';\n * });\n * }\n *\n * hostedFieldsInstance.tokenize({\n * fieldsToTokenize: fields\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.tokenize = function (options) {\n var self = this;\n\n if (!options) {\n options = {};\n }\n\n return new Promise(function (resolve, reject) {\n self._bus.emit(events.TOKENIZATION_REQUEST, options, function (response) {\n var err = response[0];\n var payload = response[1];\n\n if (err) {\n self._attachInvalidFieldContainersToError(err);\n reject(new BraintreeError(err));\n } else {\n resolve(payload);\n }\n });\n });\n};\n\n/**\n * Add a class to a {@link module:braintree-web/hosted-fields~field field}. Useful for updating field styles when events occur elsewhere in your checkout.\n * @public\n * @param {string} field The field you wish to add a class to. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} classname The class to be added.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the class is added successfully.\n *\n * @example\n * hostedFieldsInstance.addClass('number', 'custom-class', function (addClassErr) {\n * if (addClassErr) {\n * console.error(addClassErr);\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.addClass = function (field, classname) {\n var err;\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when adding a class.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot add class to \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n this._bus.emit(events.ADD_CLASS, {\n field: field,\n classname: classname,\n });\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Removes a class to a {@link module:braintree-web/hosted-fields~field field}. Useful for updating field styles when events occur elsewhere in your checkout.\n * @public\n * @param {string} field The field you wish to remove a class from. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} classname The class to be removed.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the class is removed successfully.\n *\n * @example\n * hostedFieldsInstance.addClass('number', 'custom-class', function (addClassErr) {\n * if (addClassErr) {\n * console.error(addClassErr);\n * return;\n * }\n *\n * // some time later...\n * hostedFieldsInstance.removeClass('number', 'custom-class');\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.removeClass = function (field, classname) {\n var err;\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when removing a class.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot remove class from \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n this._bus.emit(events.REMOVE_CLASS, {\n field: field,\n classname: classname,\n });\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Sets an attribute of a {@link module:braintree-web/hosted-fields~field field}.\n * Supported attributes are `aria-invalid`, `aria-required`, `disabled`, and `placeholder`.\n *\n * @public\n * @param {object} options The options for the attribute you wish to set.\n * @param {string} options.field The field to which you wish to add an attribute. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} options.attribute The name of the attribute you wish to add to the field.\n * @param {string} options.value The value for the attribute.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the attribute is set successfully.\n *\n * @example <caption>Set the placeholder attribute of a field</caption>\n * hostedFieldsInstance.setAttribute({\n * field: 'number',\n * attribute: 'placeholder',\n * value: '1111 1111 1111 1111'\n * }, function (attributeErr) {\n * if (attributeErr) {\n * console.error(attributeErr);\n * }\n * });\n *\n * @example <caption>Set the aria-required attribute of a field</caption>\n * hostedFieldsInstance.setAttribute({\n * field: 'number',\n * attribute: 'aria-required',\n * value: true\n * }, function (attributeErr) {\n * if (attributeErr) {\n * console.error(attributeErr);\n * }\n * });\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.setAttribute = function (options) {\n var attributeErr, err;\n\n if (!allowedFields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n options.field +\n '\" is not a valid field. You must use a valid field option when setting an attribute.',\n });\n } else if (!this._fields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot set attribute for \"' +\n options.field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n attributeErr = attributeValidationError(options.attribute, options.value);\n\n if (attributeErr) {\n err = attributeErr;\n } else {\n this._bus.emit(events.SET_ATTRIBUTE, {\n field: options.field,\n attribute: options.attribute,\n value: options.value,\n });\n }\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Sets the month options for the expiration month field when presented as a select element.\n *\n * @public\n * @param {array} options An array of 12 entries corresponding to the 12 months.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the options are updated successfully. Errors if expirationMonth is not configured on the Hosted Fields instance or if the expirationMonth field is not configured to be a select input.\n *\n * @example <caption>Update the month options to spanish</caption>\n * hostedFieldsInstance.setMonthOptions([\n * '01 - enero',\n * '02 - febrero',\n * '03 - marzo',\n * '04 - abril',\n * '05 - mayo',\n * '06 - junio',\n * '07 - julio',\n * '08 - agosto',\n * '09 - septiembre',\n * '10 - octubre',\n * '11 - noviembre',\n * '12 - diciembre'\n * ]);\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.setMonthOptions = function (options) {\n var self = this;\n var merchantOptions = this._merchantConfigurationOptions.fields;\n var errorMessage;\n\n if (!merchantOptions.expirationMonth) {\n errorMessage = \"Expiration month field must exist to use setMonthOptions.\";\n } else if (!merchantOptions.expirationMonth.select) {\n errorMessage = \"Expiration month field must be a select element.\";\n }\n\n if (errorMessage) {\n return Promise.reject(\n new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,\n message: errorMessage,\n })\n );\n }\n\n return new Promise(function (resolve) {\n self._bus.emit(events.SET_MONTH_OPTIONS, options, resolve);\n });\n};\n\n/**\n * Sets a visually hidden message (for screen readers) on a {@link module:braintree-web/hosted-fields~field field}.\n *\n * @public\n * @param {object} options The options for the attribute you wish to set.\n * @param {string} options.field The field to which you wish to add an attribute. Must be a valid {@link module:braintree-web/hosted-fields~field field}.\n * @param {string} options.message The message to set.\n *\n * @example <caption>Set an error message on a field</caption>\n * hostedFieldsInstance.setMessage({\n * field: 'number',\n * message: 'Invalid card number'\n * });\n *\n * @example <caption>Remove the message on a field</caption>\n * hostedFieldsInstance.setMessage({\n * field: 'number',\n * message: ''\n * });\n *\n * @returns {void}\n */\nHostedFields.prototype.setMessage = function (options) {\n this._bus.emit(events.SET_MESSAGE, {\n field: options.field,\n message: options.message,\n });\n};\n\n/**\n * Removes a supported attribute from a {@link module:braintree-web/hosted-fields~field field}.\n *\n * @public\n * @param {object} options The options for the attribute you wish to remove.\n * @param {string} options.field The field from which you wish to remove an attribute. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} options.attribute The name of the attribute you wish to remove from the field.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the attribute is removed successfully.\n *\n * @example <caption>Remove the placeholder attribute of a field</caption>\n * hostedFieldsInstance.removeAttribute({\n * field: 'number',\n * attribute: 'placeholder'\n * }, function (attributeErr) {\n * if (attributeErr) {\n * console.error(attributeErr);\n * }\n * });\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.removeAttribute = function (options) {\n var attributeErr, err;\n\n if (!allowedFields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n options.field +\n '\" is not a valid field. You must use a valid field option when removing an attribute.',\n });\n } else if (!this._fields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot remove attribute for \"' +\n options.field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n attributeErr = attributeValidationError(options.attribute);\n\n if (attributeErr) {\n err = attributeErr;\n } else {\n this._bus.emit(events.REMOVE_ATTRIBUTE, {\n field: options.field,\n attribute: options.attribute,\n });\n }\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * @deprecated since version 3.8.0. Use {@link HostedFields#setAttribute|setAttribute} instead.\n *\n * @public\n * @param {string} field The field whose placeholder you wish to change. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} placeholder Will be used as the `placeholder` attribute of the input.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the placeholder updated successfully.\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.setPlaceholder = function (field, placeholder) {\n return this.setAttribute({\n field: field,\n attribute: \"placeholder\",\n value: placeholder,\n });\n};\n\n/**\n * Clear the value of a {@link module:braintree-web/hosted-fields~field field}.\n * @public\n * @param {string} field The field you wish to clear. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the field cleared successfully.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * hostedFieldsInstance.clear('number', function (clearErr) {\n * if (clearErr) {\n * console.error(clearErr);\n * }\n * });\n *\n * @example <caption>Clear several fields</caption>\n * hostedFieldsInstance.clear('number');\n * hostedFieldsInstance.clear('cvv');\n * hostedFieldsInstance.clear('expirationDate');\n */\nHostedFields.prototype.clear = function (field) {\n var err;\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when clearing a field.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot clear \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n this._bus.emit(events.CLEAR_FIELD, {\n field: field,\n });\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Programmatically focus a {@link module:braintree-web/hosted-fields~field field}.\n * @public\n * @param {string} field The field you want to focus. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the field focused successfully.\n * @returns {void}\n * @example\n * hostedFieldsInstance.focus('number', function (focusErr) {\n * if (focusErr) {\n * console.error(focusErr);\n * }\n * });\n * @example <caption>Using an event listener</caption>\n * myElement.addEventListener('click', function (e) {\n * // In Firefox, the focus method can be suppressed\n * // if the element has a tabindex property or the element\n * // is an anchor link with an href property.\n * e.preventDefault();\n * hostedFieldsInstance.focus('number');\n * });\n */\nHostedFields.prototype.focus = function (field) {\n var err;\n var fieldConfig = this._fields[field];\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when focusing a field.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot focus \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n fieldConfig.frameElement.focus();\n\n this._bus.emit(events.TRIGGER_INPUT_FOCUS, {\n field: field,\n });\n\n if (browserDetection.isIos()) {\n // Inputs outside of the viewport don't always scroll into view on\n // focus in iOS Safari. 5ms timeout gives the browser a chance to\n // do the right thing and prevents stuttering.\n setTimeout(function () {\n if (!isVisibleEnough(fieldConfig.containerElement)) {\n fieldConfig.containerElement.scrollIntoView();\n }\n }, SAFARI_FOCUS_TIMEOUT);\n }\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Returns an {@link HostedFields~stateObject|object} that includes the state of all fields and possible card types.\n * @public\n * @returns {object} {@link HostedFields~stateObject|stateObject}\n * @example <caption>Check if all fields are valid</caption>\n * var state = hostedFieldsInstance.getState();\n *\n * var formValid = Object.keys(state.fields).every(function (key) {\n * return state.fields[key].isValid;\n * });\n */\nHostedFields.prototype.getState = function () {\n return this._state;\n};\n\n// React adds decorations to DOM nodes that cause\n// circular dependencies, so we remove them from the\n// config before sending it to the iframes. However,\n// we don't want to mutate the original object that\n// was passed in, so we create fresh objects via assign\nfunction formatMerchantConfigurationForIframes(config) {\n var formattedConfig = assign({}, config);\n\n formattedConfig.fields = assign({}, formattedConfig.fields);\n Object.keys(formattedConfig.fields).forEach(function (field) {\n formattedConfig.fields[field] = assign({}, formattedConfig.fields[field]);\n delete formattedConfig.fields[field].container;\n });\n\n return formattedConfig;\n}\n\nmodule.exports = wrapPromise.wrapPrototype(HostedFields);\n\n},{\"../../lib/analytics\":132,\"../../lib/assign\":134,\"../../lib/braintree-error\":137,\"../../lib/constants\":139,\"../../lib/convert-methods-to-error\":140,\"../../lib/create-assets-url\":142,\"../../lib/create-deferred-client\":144,\"../../lib/destructor\":146,\"../../lib/errors\":148,\"../../lib/find-root-node\":149,\"../../lib/is-verified-domain\":166,\"../../lib/methods\":168,\"../../lib/shadow\":171,\"../shared/browser-detection\":124,\"../shared/constants\":125,\"../shared/errors\":126,\"../shared/find-parent-tags\":127,\"../shared/focus-intercept\":128,\"../shared/get-card-types\":129,\"./attribute-validation-error\":117,\"./compose-url\":118,\"./focus-change\":119,\"./get-styles-from-class\":120,\"./inject-frame\":122,\"@braintree/event-emitter\":30,\"@braintree/iframer\":32,\"@braintree/uuid\":36,\"@braintree/wrap-promise\":40,\"framebus\":49}],122:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar focusIntercept = _dereq_(\"../shared/focus-intercept\");\nvar directions = _dereq_(\"../shared/constants\").navigationDirections;\n\nmodule.exports = function injectFrame(id, frame, container, focusHandler) {\n var frameType = frame.getAttribute(\"type\");\n var clearboth = document.createElement(\"div\");\n var fragment = document.createDocumentFragment();\n var focusInterceptBefore = focusIntercept.generate(\n id,\n frameType,\n directions.BACK,\n focusHandler\n );\n var focusInterceptAfter = focusIntercept.generate(\n id,\n frameType,\n directions.FORWARD,\n focusHandler\n );\n\n clearboth.style.clear = \"both\";\n\n fragment.appendChild(focusInterceptBefore);\n fragment.appendChild(frame);\n fragment.appendChild(focusInterceptAfter);\n fragment.appendChild(clearboth);\n\n container.appendChild(fragment);\n\n return [frame, clearboth];\n};\n\n},{\"../shared/constants\":125,\"../shared/focus-intercept\":128}],123:[function(_dereq_,module,exports){\n\"use strict\";\n/** @module braintree-web/hosted-fields */\n\nvar HostedFields = _dereq_(\"./external/hosted-fields\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar errors = _dereq_(\"./shared/errors\");\nvar supportsInputFormatting = _dereq_(\"restricted-input/supports-input-formatting\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar VERSION = \"3.103.0\";\n\n/**\n * Fields used in {@link module:braintree-web/hosted-fields~fieldOptions fields options}\n * @typedef {object} field\n * @property {string} selector Deprecated: Now an alias for `options.container`.\n * @property {(string|HTMLElement)} container A DOM node or CSS selector to find the container where the hosted field will be inserted.\n * @property {string} [placeholder] Will be used as the `placeholder` attribute of the input. If `placeholder` is not natively supported by the browser, it will be polyfilled.\n * @property {string} [type] Will be used as the `type` attribute of the input. To mask `cvv` input, for instance, `type: \"password\"` can be used.\n * @property {string} [iframeTitle] The title used for the iframe containing the credit card input. By default, this will be `Secure Credit Card Frame - <the name of the specific field>`.\n * @property {string} [internalLabel] Each Hosted Field iframe has a hidden label that is used by screen readers to identify the input. The `internalLabel` property can be used to customize the field for localization purposes. The default values are:\n * * number: Credit Card Number\n * * cvv: CVV\n * * expirationDate: Expiration Date\n * * expirationMonth: Expiration Month\n * * expirationYear: Expiration Year\n * * postalCode: Postal Code\n * * cardholderName: Cardholder Name\n * @property {boolean} [formatInput=true] Enable or disable automatic formatting on this field.\n * @property {(object|boolean)} [maskInput=false] Enable or disable input masking when input is not focused. If set to `true` instead of an object, the defaults for the `maskInput` parameters will be used.\n * @property {string} [maskInput.character=\u2022] The character to use when masking the input. The default character ('\u2022') uses a unicode symbol, so the webpage must support UTF-8 characters when using the default.\n * @property {Boolean} [maskInput.showLastFour=false] Only applicable for the credit card field. Whether or not to show the last 4 digits of the card when masking.\n * @property {(object|boolean)} [select] If truthy, this field becomes a `<select>` dropdown list. This can only be used for `expirationMonth` and `expirationYear` fields. If you do not use a `placeholder` property for the field, the current month/year will be the default selected value.\n * @property {string[]} [select.options] An array of 12 strings, one per month. This can only be used for the `expirationMonth` field. For example, the array can look like `['01 - January', '02 - February', ...]`.\n * @property {number} [maxCardLength] This option applies only to the number field. Allows a limit to the length of the card number, even if the card brand may support numbers of a greater length. If the value passed is greater than the max length for a card brand, the smaller number of the 2 values will be used. For example, is `maxCardLength` is set to 16, but an American Express card is entered (which has a max card length of 15), a max card length of 15 will be used.\n * @property {number} [maxlength] This option applies only to the CVV and postal code fields. Will be used as the `maxlength` attribute of the input. The primary use cases for the `maxlength` option are: limiting the length of the CVV input for CVV-only verifications when the card type is known and setting the length of the postal code input when cards are coming from a known region. The default `maxlength` for the postal code input is `10`.\n * @property {number} [minlength=3] This option applies only to the cvv and postal code fields. Will be used as the `minlength` attribute of the input.\n * For postal code fields, the default value is 3, representing the Icelandic postal code length. This option's primary use case is to increase the `minlength`, e.g. for US customers, the postal code `minlength` can be set to 5.\n * For cvv fields, the default value is 3. The `minlength` attribute only applies to integrations capturing a cvv without a number field.\n * @property {string} [prefill] A value to prefill the field with. For example, when creating an update card form, you can prefill the expiration date fields with the old expiration date data.\n * @property {boolean} [rejectUnsupportedCards=false] Deprecated since version 3.46.0, use `supportedCardBrands` instead. Only allow card types that your merchant account is able to process. Unsupported card types will invalidate the card form. e.g. if you only process Visa cards, a customer entering a American Express card would get an invalid card field. This can only be used for the `number` field.\n * @property {object} [supportedCardBrands] Override card brands that are supported by the card form. Pass `'card-brand-id': true` to override the default in the merchant configuration and enable a card brand. Pass `'card-brand-id': false` to disable a card brand. Unsupported card types will invalidate the card form. e.g. if you only process Visa cards, a customer entering an American Express card would get an invalid card field. This can only be used for the `number` field. (Note: only allow card types that your merchant account is actually able to process.)\n *\n * Valid card brand ids are:\n * * visa\n * * mastercard\n * * american-express\n * * diners-club\n * * discover\n * * jcb\n * * union-pay\n * * maestro\n * * elo\n * * mir\n * * hiper\n * * hipercard\n */\n\n/**\n * An object that has {@link module:braintree-web/hosted-fields~field field objects} for each field. Used in {@link module:braintree-web/hosted-fields~create create}.\n * @typedef {object} fieldOptions\n * @property {field} [number] A field for card number.\n * @property {field} [expirationDate] A field for expiration date in `MM/YYYY` or `MM/YY` format. This should not be used with the `expirationMonth` and `expirationYear` properties.\n * @property {field} [expirationMonth] A field for expiration month in `MM` format. This should be used with the `expirationYear` property.\n * @property {field} [expirationYear] A field for expiration year in `YYYY` or `YY` format. This should be used with the `expirationMonth` property.\n * @property {field} [cvv] A field for 3 or 4 digit card verification code (like CVV or CID). If you wish to create a CVV-only payment method nonce to verify a card already stored in your Vault, omit all other fields to only collect CVV.\n * @property {field} [postalCode] A field for postal or region code.\n * @property {field} [cardholderName] A field for the cardholder name on the customer's credit card.\n */\n\n/**\n * An object that represents CSS that will be applied in each hosted field. This object looks similar to CSS. Typically, these styles involve fonts (such as `font-family` or `color`).\n *\n * You may also pass the name of a class on your site that contains the styles you would like to apply. The style properties will be automatically pulled off the class and applied to the Hosted Fields inputs. Note: this is recommended for `input` elements only. If using a `select` for the expiration date, unexpected styling may occur.\n *\n * These are the CSS properties that Hosted Fields supports. Any other CSS should be specified on your page and outside of any Braintree configuration. Trying to set unsupported properties will fail and put a warning in the console.\n *\n * Supported CSS properties are:\n * `appearance`\n * `box-shadow`\n * `color`\n * `direction`\n * `font-family`\n * `font-size-adjust`\n * `font-size`\n * `font-stretch`\n * `font-style`\n * `font-variant-alternates`\n * `font-variant-caps`\n * `font-variant-east-asian`\n * `font-variant-ligatures`\n * `font-variant-numeric`\n * `font-variant`\n * `font-weight`\n * `font`\n * `letter-spacing`\n * `line-height`\n * `opacity`\n * `outline`\n * `margin`\n * `margin-top`\n * `margin-right`\n * `margin-bottom`\n * `margin-left`\n * `padding`\n * `padding-top`\n * `padding-right`\n * `padding-bottom`\n * `padding-left`\n * `text-align`\n * `text-shadow`\n * `transition`\n * `-moz-appearance`\n * `-moz-box-shadow`\n * `-moz-osx-font-smoothing`\n * `-moz-tap-highlight-color`\n * `-moz-transition`\n * `-webkit-appearance`\n * `-webkit-box-shadow`\n * `-webkit-font-smoothing`\n * `-webkit-tap-highlight-color`\n * `-webkit-transition`\n * @typedef {object} styleOptions\n */\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {fieldOptions} options.fields A {@link module:braintree-web/hosted-fields~fieldOptions set of options for each field}.\n * @param {styleOptions} [options.styles] {@link module:braintree-web/hosted-fields~styleOptions Styles} applied to each field.\n * @param {boolean} [options.preventAutofill=false] When true, browsers will not try to prompt the customer to autofill their credit card information.\n * @param {callback} [callback] The second argument, `data`, is the {@link HostedFields} instance. If no callback is provided, `create` returns a promise that resolves with the {@link HostedFields} instance.\n * @returns {void}\n * @example\n * braintree.hostedFields.create({\n * client: clientInstance,\n * styles: {\n * 'input': {\n * 'font-size': '16pt',\n * 'color': '#3A3A3A'\n * },\n * '.number': {\n * 'font-family': 'monospace'\n * },\n * '.valid': {\n * 'color': 'green'\n * }\n * },\n * fields: {\n * number: {\n * container: '#card-number'\n * },\n * cvv: {\n * container: '#cvv',\n * placeholder: '\u2022\u2022\u2022'\n * },\n * expirationDate: {\n * container: '#expiration-date'\n * }\n * }\n * }, callback);\n * @example <caption>With cardholder name</caption>\n * braintree.hostedFields.create({\n * client: clientInstance,\n * fields: {\n * number: {\n * container: '#card-number'\n * },\n * cardholderName: {\n * container: '#cardholder-name'\n * },\n * cvv: {\n * container: '#cvv',\n * },\n * expirationDate: {\n * container: '#expiration-date'\n * }\n * }\n * }, callback);\n * @example <caption>Applying styles with a class name</caption>\n * // in document head\n * <style>\n * .braintree-input-class {\n * color: black;\n * }\n * .braintree-valid-class {\n * color: green;\n * }\n * .braintree-invalid-class {\n * color: red;\n * }\n * </style>\n * // in a script tag\n * braintree.hostedFields.create({\n * client: clientInstance,\n * styles: {\n * 'input': 'braintree-input-class',\n * '.invalid': 'braintree-invalid-class',\n * '.valid': {\n * // you can also use the object syntax alongside\n * // the class name syntax\n * color: green;\n * }\n * },\n * fields: {\n * number: {\n * container: '#card-number'\n * },\n * // etc...\n * }\n * }, callback);\n * @example <caption>Right to Left Language Support</caption>\n * braintree.hostedFields.create({\n * client: clientInstance,\n * styles: {\n * 'input': {\n * // other styles\n * direction: 'rtl'\n * },\n * },\n * fields: {\n * number: {\n * container: '#card-number',\n * // Credit card formatting is not currently supported\n * // with RTL languages, so we need to turn it off for the number input\n * formatInput: false\n * },\n * cvv: {\n * container: '#cvv',\n * placeholder: '\u2022\u2022\u2022'\n * },\n * expirationDate: {\n * container: '#expiration-date',\n * type: 'month'\n * }\n * }\n * }, callback);\n * @example <caption>Setting up Hosted Fields to tokenize CVV only</caption>\n * braintree.hostedFields.create({\n * client: clientInstance,\n * fields: {\n * // Only add the `cvv` option.\n * cvv: {\n * container: '#cvv',\n * placeholder: '\u2022\u2022\u2022'\n * }\n * }\n * }, callback);\n * @example <caption>Creating an expiration date update form with prefilled data</caption>\n * var storedCreditCardInformation = {\n * // get this info from your server\n * // with a payment method lookup\n * month: '09',\n * year: '2017'\n * };\n *\n * braintree.hostedFields.create({\n * client: clientInstance,\n * fields: {\n * expirationMonth: {\n * container: '#expiration-month',\n * prefill: storedCreditCardInformation.month\n * },\n * expirationYear: {\n * container: '#expiration-year',\n * prefill: storedCreditCardInformation.year\n * }\n * }\n * }, callback);\n * @example <caption>Validate the card form for supported card types</caption>\n * braintree.hostedFields.create({\n * client: clientInstance,\n * fields: {\n * number: {\n * container: '#card-number',\n * supportedCardBrands: {\n * visa: false, // prevents Visas from showing up as valid even when the Braintree control panel is configured to allow them\n * 'diners-club': true // allow Diners Club cards to be valid (processed as Discover cards on the Braintree backend)\n * }\n * },\n * cvv: {\n * container: '#cvv',\n * placeholder: '\u2022\u2022\u2022'\n * },\n * expirationDate: {\n * container: '#expiration-date',\n * type: 'month'\n * }\n * },\n * }, callback);\n */\nfunction create(options) {\n return basicComponentVerification\n .verify({\n name: \"Hosted Fields\",\n authorization: options.authorization,\n client: options.client,\n })\n .then(function () {\n var integration = new HostedFields(options);\n\n return new Promise(function (resolve, reject) {\n integration.on(\"ready\", function () {\n resolve(integration);\n });\n integration.on(\"timeout\", function () {\n reject(new BraintreeError(errors.HOSTED_FIELDS_TIMEOUT));\n });\n });\n });\n}\n\nmodule.exports = {\n /**\n * @static\n * @function supportsInputFormatting\n * @description Returns false if input formatting will be automatically disabled due to browser incompatibility. Otherwise, returns true. For a list of unsupported browsers, [go here](https://github.com/braintree/restricted-input/blob/main/README.md#browsers-where-formatting-is-turned-off-automatically).\n * @returns {Boolean} Returns false if input formatting will be automatically disabled due to browser incompatibility. Otherwise, returns true.\n * @example\n * <caption>Conditionally choosing split expiration date inputs if formatting is unavailable</caption>\n * var canFormat = braintree.hostedFields.supportsInputFormatting();\n * var fields = {\n * number: {\n * container: '#card-number'\n * },\n * cvv: {\n * container: '#cvv'\n * }\n * };\n *\n * if (canFormat) {\n * fields.expirationDate = {\n * selection: '#expiration-date'\n * };\n * functionToCreateAndInsertExpirationDateDivToForm();\n * } else {\n * fields.expirationMonth = {\n * selection: '#expiration-month'\n * };\n * fields.expirationYear = {\n * selection: '#expiration-year'\n * };\n * functionToCreateAndInsertExpirationMonthAndYearDivsToForm();\n * }\n *\n * braintree.hostedFields.create({\n * client: clientInstance,\n * styles: {\n * // Styles\n * },\n * fields: fields\n * }, callback);\n */\n supportsInputFormatting: supportsInputFormatting,\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"./external/hosted-fields\":121,\"./shared/errors\":126,\"@braintree/wrap-promise\":40,\"restricted-input/supports-input-formatting\":84}],124:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar isAndroid = _dereq_(\"@braintree/browser-detection/is-android\");\nvar isChromeOS = _dereq_(\"@braintree/browser-detection/is-chrome-os\");\nvar isIos = _dereq_(\"@braintree/browser-detection/is-ios\");\nvar isChrome = _dereq_(\"@braintree/browser-detection/is-chrome\");\n\nfunction hasSoftwareKeyboard() {\n return isAndroid() || isChromeOS() || isIos();\n}\n\nfunction isChromeIos() {\n return isChrome() && isIos();\n}\n\nmodule.exports = {\n isAndroid: isAndroid,\n isChromeOS: isChromeOS,\n isChromeIos: isChromeIos,\n isFirefox: _dereq_(\"@braintree/browser-detection/is-firefox\"),\n isIos: isIos,\n isIosWebview: _dereq_(\"@braintree/browser-detection/is-ios-webview\"),\n hasSoftwareKeyboard: hasSoftwareKeyboard,\n};\n\n},{\"@braintree/browser-detection/is-android\":20,\"@braintree/browser-detection/is-chrome\":22,\"@braintree/browser-detection/is-chrome-os\":21,\"@braintree/browser-detection/is-firefox\":23,\"@braintree/browser-detection/is-ios\":27,\"@braintree/browser-detection/is-ios-webview\":25}],125:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"../../lib/enumerate\");\nvar errors = _dereq_(\"./errors\");\nvar VERSION = \"3.103.0\";\n\nvar constants = {\n VERSION: VERSION,\n maxExpirationYearAge: 19,\n externalEvents: {\n FOCUS: \"focus\",\n BLUR: \"blur\",\n EMPTY: \"empty\",\n NOT_EMPTY: \"notEmpty\",\n VALIDITY_CHANGE: \"validityChange\",\n CARD_TYPE_CHANGE: \"cardTypeChange\",\n },\n defaultMaxLengths: {\n number: 19,\n postalCode: 8,\n expirationDate: 7,\n expirationMonth: 2,\n expirationYear: 4,\n cvv: 3,\n },\n externalClasses: {\n FOCUSED: \"braintree-hosted-fields-focused\",\n INVALID: \"braintree-hosted-fields-invalid\",\n VALID: \"braintree-hosted-fields-valid\",\n },\n navigationDirections: {\n BACK: \"before\",\n FORWARD: \"after\",\n },\n defaultIFrameStyle: {\n border: \"none\",\n width: \"100%\",\n height: \"100%\",\n float: \"left\",\n },\n tokenizationErrorCodes: {\n 81724: errors.HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE,\n // NEXT_MAJOR_VERSION this error triggers for both AVS and CVV errors\n // but the code name implies that it would only trigger for CVV verification\n // failures\n 81736: errors.HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED,\n },\n allowedStyles: [\n \"-moz-appearance\",\n \"-moz-box-shadow\",\n \"-moz-osx-font-smoothing\",\n \"-moz-tap-highlight-color\",\n \"-moz-transition\",\n \"-webkit-appearance\",\n \"-webkit-box-shadow\",\n \"-webkit-font-smoothing\",\n \"-webkit-tap-highlight-color\",\n \"-webkit-transition\",\n \"appearance\",\n \"box-shadow\",\n \"color\",\n \"direction\",\n \"font\",\n \"font-family\",\n \"font-size\",\n \"font-size-adjust\",\n \"font-stretch\",\n \"font-style\",\n \"font-variant\",\n \"font-variant-alternates\",\n \"font-variant-caps\",\n \"font-variant-east-asian\",\n \"font-variant-ligatures\",\n \"font-variant-numeric\",\n \"font-weight\",\n \"letter-spacing\",\n \"line-height\",\n \"margin\",\n \"margin-top\",\n \"margin-right\",\n \"margin-bottom\",\n \"margin-left\",\n \"opacity\",\n \"outline\",\n \"padding\",\n \"padding-top\",\n \"padding-right\",\n \"padding-bottom\",\n \"padding-left\",\n \"text-align\",\n \"text-shadow\",\n \"transition\",\n ],\n allowedFields: {\n cardholderName: {\n name: \"cardholder-name\",\n label: \"Cardholder Name\",\n },\n number: {\n name: \"credit-card-number\",\n label: \"Credit Card Number\",\n },\n cvv: {\n name: \"cvv\",\n label: \"CVV\",\n },\n expirationDate: {\n name: \"expiration\",\n label: \"Expiration Date\",\n },\n expirationMonth: {\n name: \"expiration-month\",\n label: \"Expiration Month\",\n },\n expirationYear: {\n name: \"expiration-year\",\n label: \"Expiration Year\",\n },\n postalCode: {\n name: \"postal-code\",\n label: \"Postal Code\",\n },\n },\n allowedAttributes: {\n \"aria-invalid\": \"boolean\",\n \"aria-required\": \"boolean\",\n disabled: \"boolean\",\n placeholder: \"string\",\n },\n autocompleteMappings: {\n \"cardholder-name\": \"cc-name\",\n \"credit-card-number\": \"cc-number\",\n expiration: \"cc-exp\",\n \"expiration-month\": \"cc-exp-month\",\n \"expiration-year\": \"cc-exp-year\",\n cvv: \"cc-csc\",\n \"postal-code\": \"billing postal-code\",\n },\n};\n\nconstants.events = enumerate(\n [\n \"ADD_CLASS\",\n \"AUTOFILL_DATA_AVAILABLE\",\n \"BIN_AVAILABLE\",\n \"CARD_FORM_ENTRY_HAS_BEGUN\",\n \"CLEAR_FIELD\",\n \"CONFIGURATION\",\n \"FRAME_READY\",\n \"INPUT_EVENT\",\n \"READY_FOR_CLIENT\",\n \"REMOVE_ATTRIBUTE\",\n \"REMOVE_CLASS\",\n \"REMOVE_FOCUS_INTERCEPTS\",\n \"SET_ATTRIBUTE\",\n \"SET_MESSAGE\",\n \"SET_MONTH_OPTIONS\",\n \"TOKENIZATION_REQUEST\",\n \"TRIGGER_FOCUS_CHANGE\",\n \"TRIGGER_INPUT_FOCUS\",\n \"VALIDATE_STRICT\",\n ],\n \"hosted-fields:\"\n);\n\nmodule.exports = constants;\n\n},{\"../../lib/enumerate\":147,\"./errors\":126}],126:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Hosted Fields - Creation Error Codes\n * @description Errors that occur when [creating the Hosted Fields component](./module-braintree-web_hosted-fields.html#.create).\n * @property {UNKNOWN} HOSTED_FIELDS_TIMEOUT Occurs when Hosted Fields does not finish setting up within 60 seconds.\n * @property {MERCHANT} HOSTED_FIELDS_INVALID_FIELD_KEY Occurs when Hosted Fields is instantiated with an invalid Field option.\n * @property {MERCHANT} HOSTED_FIELDS_INVALID_FIELD_SELECTOR Occurs when Hosted Fields given a field selector that is not valid.\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME Occurs when Hosted Fields given a field selector that already contains an iframe.\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_PROPERTY_INVALID Occurs when a field configuration option is not valid.\n */\n\n/**\n * @name BraintreeError.Hosted Fields - Field Manipulation Error Codes\n * @description Errors that occur when modifying fields through [`addClass`](./HostedFields.html#addClass), [`removeClass`](./HostedFields.html#removeClass), [`setAttribute`](./HostedFields.html#setAttribute), [`removeAttribute`](./HostedFields.html#removeAttribute), [`clear`](./HostedFields.html#clear), [`focus`](./HostedFields.html#focus), and [`setMonthOptions`](./HostedFields.html#setMonthOptions).\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_INVALID Occurs when attempting to modify a field that is not a valid Hosted Fields option.\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_NOT_PRESENT Occurs when attempting to modify a field that is not configured with Hosted Fields.\n * @property {MERCHANT} HOSTED_FIELDS_FIELD_PROPERTY_INVALID Occurs when a field configuration option is not valid.\n */\n\n/**\n * @name BraintreeError.Hosted Fields - Set Attribute Error Codes\n * @description Errors that occur when using the [`setAttribute` method](./HostedFields.html#setAttribute)\n * @property {MERCHANT} HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED Occurs when trying to set an attribute that is not supported to be set.\n * @property {MERCHANT} HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED Occurs when the type of value for an attribute is not allowed to be set.\n */\n\n/**\n * @name BraintreeError.Hosted Fields - Tokenize Error Codes\n * @description Errors that occur when [tokenizing the card details with Hosted Fields](./HostedFields.html#tokenize).\n * @property {NETWORK} HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR Occurs when the Braintree gateway cannot be contacted.\n * @property {CUSTOMER} HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE Occurs when attempting to vault a card, but the client token being used is configured to fail if the card already exists in the vault.\n * @property {CUSTOMER} HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED Occurs when cvv verification is turned on in the Braintree control panel.\n * @property {CUSTOMER} HOSTED_FIELDS_FAILED_TOKENIZATION Occurs when the credit card details were sent to Braintree, but failed to tokenize.\n * @property {CUSTOMER} HOSTED_FIELDS_FIELDS_EMPTY Occurs when all the Hosted Fields inputs are empty.\n * @property {CUSTOMER} HOSTED_FIELDS_FIELDS_INVALID Occurs when one ore more fields are invalid.\n */\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nmodule.exports = {\n HOSTED_FIELDS_TIMEOUT: {\n type: BraintreeError.types.UNKNOWN,\n code: \"HOSTED_FIELDS_TIMEOUT\",\n message: \"Hosted Fields timed out when attempting to set up.\",\n },\n HOSTED_FIELDS_INVALID_FIELD_KEY: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_INVALID_FIELD_KEY\",\n },\n HOSTED_FIELDS_INVALID_FIELD_SELECTOR: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_INVALID_FIELD_SELECTOR\",\n message: \"Selector does not reference a valid DOM node.\",\n },\n HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME\",\n message: \"Element already contains a Braintree iframe.\",\n },\n HOSTED_FIELDS_FIELD_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_FIELD_INVALID\",\n },\n HOSTED_FIELDS_FIELD_NOT_PRESENT: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_FIELD_NOT_PRESENT\",\n },\n HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR\",\n message: \"A tokenization network error occurred.\",\n },\n HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE\",\n message: \"This credit card already exists in the merchant's vault.\",\n },\n HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED\",\n message: \"CVV verification failed during tokenization.\",\n },\n HOSTED_FIELDS_FAILED_TOKENIZATION: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_FAILED_TOKENIZATION\",\n message: \"The supplied card data failed tokenization.\",\n },\n HOSTED_FIELDS_FIELDS_EMPTY: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_FIELDS_EMPTY\",\n message: \"All fields are empty. Cannot tokenize empty card fields.\",\n },\n HOSTED_FIELDS_FIELDS_INVALID: {\n type: BraintreeError.types.CUSTOMER,\n code: \"HOSTED_FIELDS_FIELDS_INVALID\",\n message:\n \"Some payment input fields are invalid. Cannot tokenize invalid card fields.\",\n },\n HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED\",\n },\n HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED\",\n },\n HOSTED_FIELDS_FIELD_PROPERTY_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"HOSTED_FIELDS_FIELD_PROPERTY_INVALID\",\n },\n};\n\n},{\"../../lib/braintree-error\":137}],127:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction findParentTags(element, tag) {\n var parent = element.parentNode;\n var parents = [];\n\n while (parent != null) {\n if (parent.tagName != null && parent.tagName.toLowerCase() === tag) {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n\n return parents;\n}\n\nmodule.exports = findParentTags;\n\n},{}],128:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar browserDetection = _dereq_(\"./browser-detection\");\nvar constants = _dereq_(\"./constants\");\nvar allowedFields = Object.keys(constants.allowedFields);\nvar directions = constants.navigationDirections;\n\nvar focusIntercept = {\n generate: function (hostedFieldsId, type, direction, handler) {\n var input = document.createElement(\"input\");\n var focusInterceptStyles = {\n border: \"none !important\",\n display: \"block !important\",\n height: \"1px !important\",\n left: \"-1px !important\",\n opacity: \"0 !important\",\n position: \"absolute !important\",\n top: \"-1px !important\",\n width: \"1px !important\",\n };\n var shouldCreateFocusIntercept =\n browserDetection.hasSoftwareKeyboard() || browserDetection.isFirefox();\n\n if (!shouldCreateFocusIntercept) {\n return document.createDocumentFragment();\n }\n\n input.setAttribute(\"aria-hidden\", \"true\");\n input.setAttribute(\"autocomplete\", \"off\");\n input.setAttribute(\"data-braintree-direction\", direction);\n input.setAttribute(\"data-braintree-type\", type);\n input.setAttribute(\n \"id\",\n \"bt-\" + type + \"-\" + direction + \"-\" + hostedFieldsId\n );\n input.setAttribute(\n \"style\",\n JSON.stringify(focusInterceptStyles)\n .replace(/[{}\"]/g, \"\")\n .replace(/,/g, \";\")\n );\n\n input.classList.add(\"focus-intercept\");\n\n input.addEventListener(\"focus\", function (event) {\n handler(event);\n\n /*\n Certain browsers without software keyboards (Firefox, Internet\n Explorer) need the focus intercept inputs that get inserted\n around the actual input to blur themselves, otherwise the\n browser gets confused about what should have focus. Can't\n apply this to browsers with software keyboards however,\n because it blurs everything, and focus on the actual input is\n also lost.\n */\n if (!browserDetection.hasSoftwareKeyboard()) {\n input.blur();\n }\n });\n\n return input;\n },\n destroy: function (idString) {\n var focusInputs;\n\n if (!idString) {\n focusInputs = document.querySelectorAll(\"[data-braintree-direction]\");\n focusInputs = [].slice.call(focusInputs);\n } else {\n focusInputs = [document.getElementById(idString)];\n }\n\n focusInputs.forEach(function (node) {\n if (\n node &&\n node.nodeType === 1 &&\n focusIntercept.matchFocusElement(node.getAttribute(\"id\"))\n ) {\n node.parentNode.removeChild(node);\n }\n });\n },\n matchFocusElement: function (idString) {\n var idComponents, hasBTPrefix, isAllowedType, isValidDirection;\n\n if (!idString) {\n return false;\n }\n\n idComponents = idString.split(\"-\");\n\n if (idComponents.length < 4) {\n return false;\n }\n\n hasBTPrefix = idComponents[0] === \"bt\";\n isAllowedType = allowedFields.indexOf(idComponents[1]) > -1;\n isValidDirection =\n idComponents[2] === directions.BACK ||\n idComponents[2] === directions.FORWARD;\n\n return Boolean(hasBTPrefix && isAllowedType && isValidDirection);\n },\n};\n\nmodule.exports = focusIntercept;\n\n},{\"./browser-detection\":124,\"./constants\":125}],129:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar creditCardType = _dereq_(\"credit-card-type\");\n\nmodule.exports = function (number) {\n var results = creditCardType(number);\n\n results.forEach(function (card) {\n // NEXT_MAJOR_VERSION credit-card-type fixed the mastercard enum\n // but we still pass master-card in the braintree API\n // in a major version bump, we can remove this and\n // this will be mastercard instead of master-card\n if (card.type === \"mastercard\") {\n card.type = \"master-card\";\n }\n });\n\n return results;\n};\n\n},{\"credit-card-type\":41}],130:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web\n * @description This is the top-level module exported by the Braintree JavaScript SDK. In a browser environment, this will be the global <code>braintree</code> object. In a CommonJS environment (like Browserify or Webpack), it will be the default export of the <code>braintree-web</code> package. In AMD environments (like RequireJS), it can be `require`d like other modules.\n * @example\n * <caption>CommonJS</caption>\n * var braintree = require('braintree-web');\n *\n * braintree.client.create(...);\n * @example\n * <caption>In the browser</caption>\n * <script src=\"https://js.braintreegateway.com/web/{@pkg version}/js/client.min.js\"></script>\n * <script>\n * window.braintree.client.create(...);\n * </script>\n * @example\n * <caption>AMD</caption>\n * // main.js\n * require.config({\n * paths: {\n * braintreeClient: 'https://js.braintreegateway.com/web/{@pkg version}/js/client.min'\n * }\n * });\n *\n * require(['braintreeClient'], function (braintreeClient) {\n * braintreeClient.create(...);\n * });\n */\n\n/**\n * @global\n * @callback callback\n * @param {?BraintreeError} [err] `null` or `undefined` if there was no error.\n * @param {?any} [data] The successful result of the asynchronous function call (if data exists).\n * @description The Node.js-style callback pattern used throughout the SDK.\n * @returns {void}\n */\n\nvar americanExpress = _dereq_(\"./american-express\");\nvar applePay = _dereq_(\"./apple-pay\");\nvar client = _dereq_(\"./client\");\nvar dataCollector = _dereq_(\"./data-collector\");\nvar hostedFields = _dereq_(\"./hosted-fields\");\nvar localPayment = _dereq_(\"./local-payment\");\nvar masterpass = _dereq_(\"./masterpass\");\nvar paymentRequest = _dereq_(\"./payment-request\");\nvar paypal = _dereq_(\"./paypal\");\nvar paypalCheckout = _dereq_(\"./paypal-checkout\");\nvar googlePayment = _dereq_(\"./google-payment\");\nvar sepa = _dereq_(\"./sepa\");\nvar threeDSecure = _dereq_(\"./three-d-secure\");\nvar unionpay = _dereq_(\"./unionpay\");\nvar usBankAccount = _dereq_(\"./us-bank-account\");\nvar vaultManager = _dereq_(\"./vault-manager\");\nvar venmo = _dereq_(\"./venmo\");\nvar visaCheckout = _dereq_(\"./visa-checkout\");\nvar preferredPaymentMethods = _dereq_(\"./preferred-payment-methods\");\nvar VERSION = \"3.103.0\";\n\nmodule.exports = {\n /** @type {module:braintree-web/american-express} */\n americanExpress: americanExpress,\n /** @type {module:braintree-web/apple-pay} */\n applePay: applePay,\n /** @type {module:braintree-web/client} */\n client: client,\n /** @type {module:braintree-web/data-collector} */\n dataCollector: dataCollector,\n /** @type {module:braintree-web/hosted-fields} */\n hostedFields: hostedFields,\n /** @type {module:braintree-web/local-payment} */\n localPayment: localPayment,\n /** @type {module:braintree-web/masterpass} */\n masterpass: masterpass,\n /** @type {module:braintree-web/google-payment} */\n googlePayment: googlePayment,\n /** @type {module:braintree-web/payment-request} */\n paymentRequest: paymentRequest,\n /** @type {module:braintree-web/paypal} */\n paypal: paypal,\n /** @type {module:braintree-web/paypal-checkout} */\n paypalCheckout: paypalCheckout,\n /** @type {module:braintree-web/three-d-secure} */\n threeDSecure: threeDSecure,\n /** @type {module:braintree-web/unionpay} */\n unionpay: unionpay,\n /** @type {module:braintree-web/us-bank-account} */\n usBankAccount: usBankAccount,\n /** @type {module:braintree-web/vault-manager} */\n vaultManager: vaultManager,\n /** @type {module:braintree-web/venmo} */\n venmo: venmo,\n /** @type {module:braintree-web/visa-checkout} */\n visaCheckout: visaCheckout,\n /** @type {module:braintree-web/sepa} */\n sepa: sepa,\n /** @type {module:braintree-web/preferred-payment-methods} */\n preferredPaymentMethods: preferredPaymentMethods,\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"./american-express\":87,\"./apple-pay\":90,\"./client\":95,\"./data-collector\":111,\"./google-payment\":116,\"./hosted-fields\":123,\"./local-payment\":177,\"./masterpass\":180,\"./payment-request\":185,\"./paypal\":192,\"./paypal-checkout\":189,\"./preferred-payment-methods\":195,\"./sepa\":199,\"./three-d-secure\":211,\"./unionpay\":215,\"./us-bank-account\":221,\"./vault-manager\":224,\"./venmo\":229,\"./visa-checkout\":239}],131:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar createAuthorizationData = _dereq_(\"./create-authorization-data\");\nvar jsonClone = _dereq_(\"./json-clone\");\nvar constants = _dereq_(\"./constants\");\n\nfunction addMetadata(configuration, data) {\n var key;\n var attrs = data ? jsonClone(data) : {};\n var authAttrs = createAuthorizationData(configuration.authorization).attrs;\n var _meta = jsonClone(configuration.analyticsMetadata);\n\n attrs.braintreeLibraryVersion = constants.BRAINTREE_LIBRARY_VERSION;\n\n for (key in attrs._meta) {\n if (attrs._meta.hasOwnProperty(key)) {\n _meta[key] = attrs._meta[key];\n }\n }\n\n attrs._meta = _meta;\n\n if (authAttrs.tokenizationKey) {\n attrs.tokenizationKey = authAttrs.tokenizationKey;\n } else {\n attrs.authorizationFingerprint = authAttrs.authorizationFingerprint;\n }\n\n return attrs;\n}\n\nmodule.exports = addMetadata;\n\n},{\"./constants\":139,\"./create-authorization-data\":143,\"./json-clone\":167}],132:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar constants = _dereq_(\"./constants\");\nvar addMetadata = _dereq_(\"./add-metadata\");\n\nfunction sendAnalyticsEvent(clientInstanceOrPromise, kind, callback) {\n var timestamp = Date.now(); // milliseconds\n\n return Promise.resolve(clientInstanceOrPromise)\n .then(function (client) {\n var timestampInPromise = Date.now();\n var configuration = client.getConfiguration();\n var request = client._request;\n var url = configuration.gatewayConfiguration.analytics.url;\n var data = {\n analytics: [\n {\n kind: constants.ANALYTICS_PREFIX + kind,\n isAsync:\n Math.floor(timestampInPromise / 1000) !==\n Math.floor(timestamp / 1000),\n timestamp: timestamp,\n },\n ],\n };\n\n request(\n {\n url: url,\n method: \"post\",\n data: addMetadata(configuration, data),\n timeout: constants.ANALYTICS_REQUEST_TIMEOUT_MS,\n },\n callback\n );\n })\n .catch(function (err) {\n // for all non-test cases, we don't provide a callback,\n // so this error will always be swallowed. In this case,\n // that's fine, it should only error when the deferred\n // client fails to set up, in which case we don't want\n // that error to report over and over again via these\n // deferred analytics events\n if (callback) {\n callback(err);\n }\n });\n}\n\nmodule.exports = {\n sendEvent: sendAnalyticsEvent,\n};\n\n},{\"./add-metadata\":131,\"./constants\":139}],133:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar loadScript = _dereq_(\"@braintree/asset-loader/load-script\");\n\nmodule.exports = {\n loadScript: loadScript,\n};\n\n},{\"@braintree/asset-loader/load-script\":2}],134:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar assignNormalized =\n typeof Object.assign === \"function\" ? Object.assign : assignPolyfill;\n\nfunction assignPolyfill(destination) {\n var i, source, key;\n\n for (i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n }\n\n return destination;\n}\n\nmodule.exports = {\n assign: assignNormalized,\n _assign: assignPolyfill,\n};\n\n},{}],135:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar sharedErrors = _dereq_(\"./errors\");\nvar VERSION = \"3.103.0\";\n\nfunction basicComponentVerification(options) {\n var client, authorization, name;\n\n if (!options) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INVALID_USE_OF_INTERNAL_FUNCTION.type,\n code: sharedErrors.INVALID_USE_OF_INTERNAL_FUNCTION.code,\n message:\n \"Options must be passed to basicComponentVerification function.\",\n })\n );\n }\n\n name = options.name;\n client = options.client;\n authorization = options.authorization;\n\n if (!client && !authorization) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INSTANTIATION_OPTION_REQUIRED.type,\n code: sharedErrors.INSTANTIATION_OPTION_REQUIRED.code,\n // NEXT_MAJOR_VERSION in major version, we expose passing in authorization for all components\n // instead of passing in a client instance. Leave this a silent feature for now.\n message: \"options.client is required when instantiating \" + name + \".\",\n })\n );\n }\n\n if (!authorization && client.getVersion() !== VERSION) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INCOMPATIBLE_VERSIONS.type,\n code: sharedErrors.INCOMPATIBLE_VERSIONS.code,\n message:\n \"Client (version \" +\n client.getVersion() +\n \") and \" +\n name +\n \" (version \" +\n VERSION +\n \") components must be from the same SDK version.\",\n })\n );\n }\n\n return Promise.resolve();\n}\n\nmodule.exports = {\n verify: basicComponentVerification,\n};\n\n},{\"./braintree-error\":137,\"./errors\":148}],136:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar once = _dereq_(\"./once\");\n\nfunction call(fn, callback) {\n var isSync = fn.length === 0;\n\n if (isSync) {\n fn();\n callback(null);\n } else {\n fn(callback);\n }\n}\n\nmodule.exports = function (functions, cb) {\n var i;\n var length = functions.length;\n var remaining = length;\n var callback = once(cb);\n\n if (length === 0) {\n callback(null);\n\n return;\n }\n\n function finish(err) {\n if (err) {\n callback(err);\n\n return;\n }\n\n remaining -= 1;\n if (remaining === 0) {\n callback(null);\n }\n }\n\n for (i = 0; i < length; i++) {\n call(functions[i], finish);\n }\n};\n\n},{\"./once\":169}],137:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"./enumerate\");\n\n/**\n * @class\n * @global\n * @param {object} options Construction options\n * @classdesc This class is used to report error conditions, frequently as the first parameter to callbacks throughout the Braintree SDK.\n * @description <strong>You cannot use this constructor directly. Interact with instances of this class through {@link callback callbacks}.</strong>\n */\nfunction BraintreeError(options) {\n if (!BraintreeError.types.hasOwnProperty(options.type)) {\n throw new Error(options.type + \" is not a valid type.\");\n }\n\n if (!options.code) {\n throw new Error(\"Error code required.\");\n }\n\n if (!options.message) {\n throw new Error(\"Error message required.\");\n }\n\n this.name = \"BraintreeError\";\n\n /**\n * @type {string}\n * @description A code that corresponds to specific errors.\n */\n this.code = options.code;\n\n /**\n * @type {string}\n * @description A short description of the error.\n */\n this.message = options.message;\n\n /**\n * @type {BraintreeError.types}\n * @description The type of error.\n */\n this.type = options.type;\n\n /**\n * @type {object=}\n * @description Additional information about the error, such as an underlying network error response.\n */\n this.details = options.details;\n}\n\nBraintreeError.prototype = Object.create(Error.prototype);\nBraintreeError.prototype.constructor = BraintreeError;\n\n/**\n * Enum for {@link BraintreeError} types.\n * @name BraintreeError.types\n * @enum\n * @readonly\n * @memberof BraintreeError\n * @property {string} CUSTOMER An error caused by the customer.\n * @property {string} MERCHANT An error that is actionable by the merchant.\n * @property {string} NETWORK An error due to a network problem.\n * @property {string} INTERNAL An error caused by Braintree code.\n * @property {string} UNKNOWN An error where the origin is unknown.\n */\nBraintreeError.types = enumerate([\n \"CUSTOMER\",\n \"MERCHANT\",\n \"NETWORK\",\n \"INTERNAL\",\n \"UNKNOWN\",\n]);\n\nBraintreeError.findRootError = function (err) {\n if (\n err instanceof BraintreeError &&\n err.details &&\n err.details.originalError\n ) {\n return BraintreeError.findRootError(err.details.originalError);\n }\n\n return err;\n};\n\nmodule.exports = BraintreeError;\n\n},{\"./enumerate\":147}],138:[function(_dereq_,module,exports){\n\"use strict\";\n\n// Taken from https://github.com/sindresorhus/decamelize/blob/95980ab6fb44c40eaca7792bdf93aff7c210c805/index.js\nfunction transformKey(key) {\n return key\n .replace(/([a-z\\d])([A-Z])/g, \"$1_$2\")\n .replace(/([A-Z]+)([A-Z][a-z\\d]+)/g, \"$1_$2\")\n .toLowerCase();\n}\n\nmodule.exports = function (obj) {\n return Object.keys(obj).reduce(function (newObj, key) {\n var transformedKey = transformKey(key);\n\n newObj[transformedKey] = obj[key];\n\n return newObj;\n }, {});\n};\n\n},{}],139:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar VERSION = \"3.103.0\";\nvar PLATFORM = \"web\";\n\nvar CLIENT_API_URLS = {\n production: \"https://api.braintreegateway.com:443\",\n sandbox: \"https://api.sandbox.braintreegateway.com:443\",\n};\n\nvar ASSETS_URLS = {\n production: \"https://assets.braintreegateway.com\",\n sandbox: \"https://assets.braintreegateway.com\",\n};\n\nvar GRAPHQL_URLS = {\n production: \"https://payments.braintree-api.com/graphql\",\n sandbox: \"https://payments.sandbox.braintree-api.com/graphql\",\n};\n\n// endRemoveIf(production)\n\nmodule.exports = {\n ANALYTICS_PREFIX: PLATFORM + \".\",\n ANALYTICS_REQUEST_TIMEOUT_MS: 2000,\n ASSETS_URLS: ASSETS_URLS,\n CLIENT_API_URLS: CLIENT_API_URLS,\n FRAUDNET_SOURCE: \"BRAINTREE_SIGNIN\",\n FRAUDNET_FNCLS: \"fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99\",\n FRAUDNET_URL: \"https://c.paypal.com/da/r/fb.js\",\n BUS_CONFIGURATION_REQUEST_EVENT: \"BUS_CONFIGURATION_REQUEST\",\n GRAPHQL_URLS: GRAPHQL_URLS,\n INTEGRATION_TIMEOUT_MS: 60000,\n VERSION: VERSION,\n INTEGRATION: \"custom\",\n SOURCE: \"client\",\n PLATFORM: PLATFORM,\n BRAINTREE_LIBRARY_VERSION: \"braintree/\" + PLATFORM + \"/\" + VERSION,\n};\n\n},{}],140:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar sharedErrors = _dereq_(\"./errors\");\n\nmodule.exports = function (instance, methodNames) {\n methodNames.forEach(function (methodName) {\n instance[methodName] = function () {\n throw new BraintreeError({\n type: sharedErrors.METHOD_CALLED_AFTER_TEARDOWN.type,\n code: sharedErrors.METHOD_CALLED_AFTER_TEARDOWN.code,\n message: methodName + \" cannot be called after teardown.\",\n });\n };\n });\n};\n\n},{\"./braintree-error\":137,\"./errors\":148}],141:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\n\nfunction convertToBraintreeError(originalErr, btErrorObject) {\n if (originalErr instanceof BraintreeError) {\n return originalErr;\n }\n\n return new BraintreeError({\n type: btErrorObject.type,\n code: btErrorObject.code,\n message: btErrorObject.message,\n details: {\n originalError: originalErr,\n },\n });\n}\n\nmodule.exports = convertToBraintreeError;\n\n},{\"./braintree-error\":137}],142:[function(_dereq_,module,exports){\n\"use strict\";\n\n// endRemoveIf(production)\nvar ASSETS_URLS = _dereq_(\"./constants\").ASSETS_URLS;\n\nfunction createAssetsUrl(authorization) {\n // endRemoveIf(production)\n\n return ASSETS_URLS.production;\n}\n/* eslint-enable */\n\nmodule.exports = {\n create: createAssetsUrl,\n};\n\n},{\"./constants\":139}],143:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar atob = _dereq_(\"../lib/vendor/polyfill\").atob;\nvar CLIENT_API_URLS = _dereq_(\"../lib/constants\").CLIENT_API_URLS;\n\nfunction _isTokenizationKey(str) {\n return /^[a-zA-Z0-9]+_[a-zA-Z0-9]+_[a-zA-Z0-9_]+$/.test(str);\n}\n\nfunction _parseTokenizationKey(tokenizationKey) {\n var tokens = tokenizationKey.split(\"_\");\n var environment = tokens[0];\n var merchantId = tokens.slice(2).join(\"_\");\n\n return {\n merchantId: merchantId,\n environment: environment,\n };\n}\n\nfunction createAuthorizationData(authorization) {\n var parsedClientToken, parsedTokenizationKey;\n var data = {\n attrs: {},\n configUrl: \"\",\n };\n\n if (_isTokenizationKey(authorization)) {\n parsedTokenizationKey = _parseTokenizationKey(authorization);\n data.environment = parsedTokenizationKey.environment;\n data.attrs.tokenizationKey = authorization;\n data.configUrl =\n CLIENT_API_URLS[parsedTokenizationKey.environment] +\n \"/merchants/\" +\n parsedTokenizationKey.merchantId +\n \"/client_api/v1/configuration\";\n } else {\n parsedClientToken = JSON.parse(atob(authorization));\n data.environment = parsedClientToken.environment;\n data.attrs.authorizationFingerprint =\n parsedClientToken.authorizationFingerprint;\n data.configUrl = parsedClientToken.configUrl;\n data.graphQL = parsedClientToken.graphQL;\n }\n\n return data;\n}\n\nmodule.exports = createAuthorizationData;\n\n},{\"../lib/constants\":139,\"../lib/vendor/polyfill\":174}],144:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\nvar assets = _dereq_(\"./assets\");\nvar sharedErrors = _dereq_(\"./errors\");\n\nvar VERSION = \"3.103.0\";\n\nfunction createDeferredClient(options) {\n var promise = Promise.resolve();\n\n if (options.client) {\n return Promise.resolve(options.client);\n }\n\n if (!(window.braintree && window.braintree.client)) {\n promise = assets\n .loadScript({\n src: options.assetsUrl + \"/web/\" + VERSION + \"/js/client.min.js\",\n })\n .catch(function (err) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.type,\n code: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.code,\n message: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n }\n\n return promise.then(function () {\n if (window.braintree.client.VERSION !== VERSION) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INCOMPATIBLE_VERSIONS.type,\n code: sharedErrors.INCOMPATIBLE_VERSIONS.code,\n message:\n \"Client (version \" +\n window.braintree.client.VERSION +\n \") and \" +\n options.name +\n \" (version \" +\n VERSION +\n \") components must be from the same SDK version.\",\n })\n );\n }\n\n return window.braintree.client.create({\n authorization: options.authorization,\n debug: options.debug,\n });\n });\n}\n\nmodule.exports = {\n create: createDeferredClient,\n};\n\n},{\"./assets\":133,\"./braintree-error\":137,\"./errors\":148}],145:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (fn) {\n return function () {\n // IE9 doesn't support passing arguments to setTimeout so we have to emulate it.\n var args = arguments;\n\n setTimeout(function () {\n fn.apply(null, args);\n }, 1);\n };\n};\n\n},{}],146:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar batchExecuteFunctions = _dereq_(\"./batch-execute-functions\");\n\nfunction Destructor() {\n this._teardownRegistry = [];\n\n this._isTearingDown = false;\n}\n\nDestructor.prototype.registerFunctionForTeardown = function (fn) {\n if (typeof fn === \"function\") {\n this._teardownRegistry.push(fn);\n }\n};\n\nDestructor.prototype.teardown = function (callback) {\n if (this._isTearingDown) {\n callback(new Error(\"Destructor is already tearing down\"));\n\n return;\n }\n\n this._isTearingDown = true;\n\n batchExecuteFunctions(\n this._teardownRegistry,\n function (err) {\n this._teardownRegistry = [];\n this._isTearingDown = false;\n\n if (typeof callback === \"function\") {\n callback(err);\n }\n }.bind(this)\n );\n};\n\nmodule.exports = Destructor;\n\n},{\"./batch-execute-functions\":136}],147:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction enumerate(values, prefix) {\n prefix = prefix == null ? \"\" : prefix;\n\n return values.reduce(function (enumeration, value) {\n enumeration[value] = prefix + value;\n\n return enumeration;\n }, {});\n}\n\nmodule.exports = enumerate;\n\n},{}],148:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Shared Internal Error Codes\n * @ignore\n * @description These codes should never be experienced by the merchant directly.\n * @property {INTERNAL} INVALID_USE_OF_INTERNAL_FUNCTION Occurs when the client is created without a gateway configuration. Should never happen.\n */\n\n/**\n * @name BraintreeError.Shared Errors - Component Creation Error Codes\n * @description Errors that occur when creating components.\n * @property {MERCHANT} INSTANTIATION_OPTION_REQUIRED Occurs when a component is created that is missing a required option.\n * @property {MERCHANT} INCOMPATIBLE_VERSIONS Occurs when a component is created with a client with a different version than the component.\n * @property {NETWORK} CLIENT_SCRIPT_FAILED_TO_LOAD Occurs when a component attempts to load the Braintree client script, but the request fails.\n */\n\n/**\n * @name BraintreeError.Shared Errors - Component Instance Error Codes\n * @description Errors that occur when using instances of components.\n * @property {MERCHANT} METHOD_CALLED_AFTER_TEARDOWN Occurs when a method is called on a component instance after it has been torn down.\n */\n\nvar BraintreeError = _dereq_(\"./braintree-error\");\n\nmodule.exports = {\n INVALID_USE_OF_INTERNAL_FUNCTION: {\n type: BraintreeError.types.INTERNAL,\n code: \"INVALID_USE_OF_INTERNAL_FUNCTION\",\n },\n INSTANTIATION_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"INSTANTIATION_OPTION_REQUIRED\",\n },\n INCOMPATIBLE_VERSIONS: {\n type: BraintreeError.types.MERCHANT,\n code: \"INCOMPATIBLE_VERSIONS\",\n },\n CLIENT_SCRIPT_FAILED_TO_LOAD: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_SCRIPT_FAILED_TO_LOAD\",\n message: \"Braintree client script could not be loaded.\",\n },\n METHOD_CALLED_AFTER_TEARDOWN: {\n type: BraintreeError.types.MERCHANT,\n code: \"METHOD_CALLED_AFTER_TEARDOWN\",\n },\n};\n\n},{\"./braintree-error\":137}],149:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function findRootNode(element) {\n while (element.parentNode) {\n element = element.parentNode;\n }\n\n return element;\n};\n\n},{}],150:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (array, key, value) {\n var i;\n\n for (i = 0; i < array.length; i++) {\n if (array[i].hasOwnProperty(key) && array[i][key] === value) {\n return array[i];\n }\n }\n\n return null;\n};\n\n},{}],151:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar Popup = _dereq_(\"./strategies/popup\");\nvar PopupBridge = _dereq_(\"./strategies/popup-bridge\");\nvar Modal = _dereq_(\"./strategies/modal\");\nvar Bus = _dereq_(\"framebus\");\nvar events = _dereq_(\"../shared/events\");\nvar errors = _dereq_(\"../shared/errors\");\nvar constants = _dereq_(\"../shared/constants\");\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar iFramer = _dereq_(\"@braintree/iframer\");\nvar BraintreeError = _dereq_(\"../../braintree-error\");\nvar browserDetection = _dereq_(\"../shared/browser-detection\");\nvar assign = _dereq_(\"./../../assign\").assign;\nvar BUS_CONFIGURATION_REQUEST_EVENT =\n _dereq_(\"../../constants\").BUS_CONFIGURATION_REQUEST_EVENT;\n\nvar REQUIRED_CONFIG_KEYS = [\"name\", \"dispatchFrameUrl\", \"openFrameUrl\"];\n\nfunction noop() {}\n\nfunction _validateFrameConfiguration(options) {\n if (!options) {\n throw new Error(\"Valid configuration is required\");\n }\n\n REQUIRED_CONFIG_KEYS.forEach(function (key) {\n if (!options.hasOwnProperty(key)) {\n throw new Error(\"A valid frame \" + key + \" must be provided\");\n }\n });\n\n if (!/^[\\w_]+$/.test(options.name)) {\n throw new Error(\"A valid frame name must be provided\");\n }\n}\n\nfunction FrameService(options) {\n _validateFrameConfiguration(options);\n\n this._serviceId = uuid().replace(/-/g, \"\");\n\n this._options = {\n name: options.name + \"_\" + this._serviceId,\n dispatchFrameUrl: options.dispatchFrameUrl,\n openFrameUrl: options.openFrameUrl,\n height: options.height,\n width: options.width,\n top: options.top,\n left: options.left,\n };\n this.state = options.state || {};\n\n this._bus = new Bus({ channel: this._serviceId });\n this._setBusEvents();\n}\n\nFrameService.prototype.initialize = function (callback) {\n var dispatchFrameReadyHandler = function () {\n callback();\n this._bus.off(events.DISPATCH_FRAME_READY, dispatchFrameReadyHandler);\n }.bind(this);\n\n this._bus.on(events.DISPATCH_FRAME_READY, dispatchFrameReadyHandler);\n this._writeDispatchFrame();\n};\n\nFrameService.prototype._writeDispatchFrame = function () {\n var frameName = constants.DISPATCH_FRAME_NAME + \"_\" + this._serviceId;\n var frameSrc = this._options.dispatchFrameUrl;\n\n this._dispatchFrame = iFramer({\n \"aria-hidden\": true,\n name: frameName,\n title: frameName,\n src: frameSrc,\n class: constants.DISPATCH_FRAME_CLASS,\n height: 0,\n width: 0,\n style: {\n position: \"absolute\",\n left: \"-9999px\",\n },\n });\n\n document.body.appendChild(this._dispatchFrame);\n};\n\nFrameService.prototype._setBusEvents = function () {\n this._bus.on(\n events.DISPATCH_FRAME_REPORT,\n function (res, reply) {\n if (this._onCompleteCallback) {\n this._onCompleteCallback.call(null, res.err, res.payload);\n }\n this._frame.close();\n\n this._onCompleteCallback = null;\n\n if (reply) {\n reply();\n }\n }.bind(this)\n );\n\n this._bus.on(\n BUS_CONFIGURATION_REQUEST_EVENT,\n function (reply) {\n reply(this.state);\n }.bind(this)\n );\n};\n\nFrameService.prototype.open = function (options, callback) {\n options = options || {};\n this._frame = this._getFrameForEnvironment(options);\n\n this._frame.initialize(callback);\n\n if (this._frame instanceof PopupBridge) {\n // Frameservice loads a spinner then redirects to the final destination url.\n // For Popupbridge it doesn't have the same rules around popups since it's deferred to the mobile side\n // therefore, skips the regular open path and instead uses `#redirect` to handle things\n return;\n }\n\n assign(this.state, options.state);\n\n this._onCompleteCallback = callback;\n this._frame.open();\n\n if (this.isFrameClosed()) {\n this._cleanupFrame();\n\n if (callback) {\n callback(new BraintreeError(errors.FRAME_SERVICE_FRAME_OPEN_FAILED));\n }\n\n return;\n }\n this._pollForPopupClose();\n};\n\nFrameService.prototype.redirect = function (url) {\n if (this._frame && !this.isFrameClosed()) {\n this._frame.redirect(url);\n }\n};\n\nFrameService.prototype.close = function () {\n if (!this.isFrameClosed()) {\n this._frame.close();\n }\n};\n\nFrameService.prototype.focus = function () {\n if (!this.isFrameClosed()) {\n this._frame.focus();\n }\n};\n\nFrameService.prototype.createHandler = function (options) {\n options = options || {};\n\n return {\n close: function () {\n if (options.beforeClose) {\n options.beforeClose();\n }\n\n this.close();\n }.bind(this),\n focus: function () {\n if (options.beforeFocus) {\n options.beforeFocus();\n }\n\n this.focus();\n }.bind(this),\n };\n};\n\nFrameService.prototype.createNoopHandler = function () {\n return {\n close: noop,\n focus: noop,\n };\n};\n\nFrameService.prototype.teardown = function () {\n this.close();\n this._dispatchFrame.parentNode.removeChild(this._dispatchFrame);\n this._dispatchFrame = null;\n this._cleanupFrame();\n};\n\nFrameService.prototype.isFrameClosed = function () {\n return this._frame == null || this._frame.isClosed();\n};\n\nFrameService.prototype._cleanupFrame = function () {\n this._frame = null;\n clearInterval(this._popupInterval);\n this._popupInterval = null;\n};\n\nFrameService.prototype._pollForPopupClose = function () {\n this._popupInterval = setInterval(\n function () {\n if (this.isFrameClosed()) {\n this._cleanupFrame();\n if (this._onCompleteCallback) {\n this._onCompleteCallback(\n new BraintreeError(errors.FRAME_SERVICE_FRAME_CLOSED)\n );\n }\n }\n }.bind(this),\n constants.POPUP_POLL_INTERVAL\n );\n\n return this._popupInterval;\n};\n\nFrameService.prototype._getFrameForEnvironment = function (options) {\n var usePopup = browserDetection.supportsPopups();\n var popupBridgeExists = Boolean(window.popupBridge);\n\n var initOptions = assign({}, this._options, options);\n\n if (popupBridgeExists) {\n return new PopupBridge(initOptions);\n } else if (usePopup) {\n return new Popup(initOptions);\n }\n\n return new Modal(initOptions);\n};\n\nmodule.exports = FrameService;\n\n},{\"../../braintree-error\":137,\"../../constants\":139,\"../shared/browser-detection\":158,\"../shared/constants\":159,\"../shared/errors\":160,\"../shared/events\":161,\"./../../assign\":134,\"./strategies/modal\":153,\"./strategies/popup\":156,\"./strategies/popup-bridge\":154,\"@braintree/iframer\":32,\"@braintree/uuid\":36,\"framebus\":49}],152:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar FrameService = _dereq_(\"./frame-service\");\n\n/**\n * @ignore\n * @function create\n * Initializing FrameService should be done at the point when the component is created, so it is ready whenever a component needs to open a popup window.\n * Browsers have varying rules around what constitutes and async action worth blocking a popup for, but the likes of Safari\n * will block the popup if `frameService#create` is invoked during any asynchronous process (such as an API request to tokenize payment details).\n *\n * The process of setting up the dispatch frame and subsequent framebus communications via event listeners are considered async by Safari's standards.\n *\n * @param {object} options The options provided to frameservice\n * @param {string} options.name The name to use for identifying the various pieces associated with frameservice.\n * @param {string} options.dispatchFrameUrl The static asset to load for use as the dispatch frame. This allows for secure communication between the iframe and the popup, since they are on the same asset domain (usually checkout.paypal.com or assets.braintreegateway.com)\n * @param {string} options.openFrameUrl The url to load in the popup. Sometimes it is the case that you'll need info that comes _after_ the popup loads in which case we load the `landing-frame` that's a loading spinner then redirect to the proper/final destination. See the PayPal component for an example.\n * Otherwise if all the info needed is ready up-front, then you can forego a landing frame and go straight to the final destination.\n * @param {string} [options.height] The desired popup height.\n * @param {string} [options.width] The desired popup width.\n * @param {string} [options.top] The desired top value of the popup for positioning.\n * @param {string} [options.left] The desired left value of the popup for positioning.\n * @param {object} [options.state] Seems to be dead code, but allows for injecting data in to popup. NEXT_MAJOR_VERSION remove this param if no usage exists.\n * @param {function} callback The function to invoke once the frameservice is created and ready to use. FrameService instance is returned.\n */\nmodule.exports = {\n create: function createFrameService(options, callback) {\n var frameService = new FrameService(options);\n\n frameService.initialize(function () {\n callback(frameService);\n });\n },\n};\n\n},{\"./frame-service\":151}],153:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar iFramer = _dereq_(\"@braintree/iframer\");\nvar assign = _dereq_(\"../../../assign\").assign;\nvar browserDetection = _dereq_(\"../../shared/browser-detection\");\n\nvar ELEMENT_STYLES = {\n position: \"fixed\",\n top: 0,\n left: 0,\n bottom: 0,\n padding: 0,\n margin: 0,\n border: 0,\n outline: \"none\",\n zIndex: 20001,\n background: \"#FFFFFF\",\n};\n\nfunction noop() {}\n\n/**\n *\n * We should not ever really use the Modal. Modals are _like_ popups, but the key difference is that the customer can't actually verify it's app domain and thus secure/valid. Old PP sdk (./src/paypal) uses this\n * to get info from webviews (e.g. facebook).\n */\n\nfunction Modal(options) {\n this._closed = null;\n this._frame = null;\n this._options = options || {};\n this._container = this._options.container || document.body;\n}\n\nModal.prototype.initialize = noop;\n\nModal.prototype.open = function () {\n var iframerConfig = {\n src: this._options.openFrameUrl,\n name: this._options.name,\n scrolling: \"yes\",\n height: \"100%\",\n width: \"100%\",\n style: assign({}, ELEMENT_STYLES),\n title: \"Lightbox Frame\",\n };\n\n if (browserDetection.isIos()) {\n // WKWebView has buggy behavior when scrolling a fixed position modal. The workaround is to lock scrolling in\n // the background. When modal is closed, we restore scrolling and return to the previous scroll position.\n if (browserDetection.isIosWKWebview()) {\n this._lockScrolling();\n // Allows WKWebView to scroll all the way down to bottom\n iframerConfig.style = {};\n }\n\n this._el = document.createElement(\"div\");\n\n assign(this._el.style, ELEMENT_STYLES, {\n height: \"100%\",\n width: \"100%\",\n overflow: \"auto\",\n \"-webkit-overflow-scrolling\": \"touch\",\n });\n\n this._frame = iFramer(iframerConfig);\n this._el.appendChild(this._frame);\n } else {\n this._el = this._frame = iFramer(iframerConfig);\n }\n this._closed = false;\n\n this._container.appendChild(this._el);\n};\n\nModal.prototype.focus = noop;\n\nModal.prototype.close = function () {\n this._container.removeChild(this._el);\n this._frame = null;\n this._closed = true;\n if (browserDetection.isIosWKWebview()) {\n this._unlockScrolling();\n }\n};\n\nModal.prototype.isClosed = function () {\n return Boolean(this._closed);\n};\n\nModal.prototype.redirect = function (redirectUrl) {\n this._frame.src = redirectUrl;\n};\n\nModal.prototype._unlockScrolling = function () {\n document.body.style.overflow = this._savedBodyProperties.overflowStyle;\n document.body.style.position = this._savedBodyProperties.positionStyle;\n window.scrollTo(\n this._savedBodyProperties.left,\n this._savedBodyProperties.top\n );\n delete this._savedBodyProperties;\n};\n\nModal.prototype._lockScrolling = function () {\n var doc = document.documentElement;\n\n // From https://stackoverflow.com/questions/9538868/prevent-body-from-scrolling-when-a-modal-is-opened#comment65626743_24727206\n this._savedBodyProperties = {\n left: (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0),\n top: (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0),\n overflowStyle: document.body.style.overflow,\n positionStyle: document.body.style.position,\n };\n document.body.style.overflow = \"hidden\";\n document.body.style.position = \"fixed\";\n window.scrollTo(0, 0);\n};\n\nmodule.exports = Modal;\n\n},{\"../../../assign\":134,\"../../shared/browser-detection\":158,\"@braintree/iframer\":32}],154:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../../../braintree-error\");\nvar errors = _dereq_(\"../../shared/errors\");\n\nfunction noop() {}\n\nfunction PopupBridge(options) {\n this._closed = null;\n this._options = options;\n}\n\nPopupBridge.prototype.initialize = function (callback) {\n var self = this;\n\n window.popupBridge.onComplete = function (err, payload) {\n var popupDismissed = !payload && !err;\n\n self._closed = true;\n\n if (err || popupDismissed) {\n // User clicked \"Done\" button of browser view\n callback(new BraintreeError(errors.FRAME_SERVICE_FRAME_CLOSED));\n\n return;\n }\n // User completed popup flow (includes success and cancel cases)\n callback(null, payload);\n };\n};\n\nPopupBridge.prototype.open = function (options) {\n var url;\n\n options = options || {};\n url = options.openFrameUrl || this._options.openFrameUrl;\n\n this._closed = false;\n window.popupBridge.open(url);\n};\n\nPopupBridge.prototype.focus = noop;\n\nPopupBridge.prototype.close = noop;\n\nPopupBridge.prototype.isClosed = function () {\n return Boolean(this._closed);\n};\n\nPopupBridge.prototype.redirect = function (redirectUrl) {\n this.open({ openFrameUrl: redirectUrl });\n};\n\nmodule.exports = PopupBridge;\n\n},{\"../../../braintree-error\":137,\"../../shared/errors\":160}],155:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar constants = _dereq_(\"../../../shared/constants\");\nvar position = _dereq_(\"./position\");\n\nfunction calculatePosition(type, userDefinedPosition, size) {\n if (typeof userDefinedPosition !== \"undefined\") {\n return userDefinedPosition;\n }\n\n return position[type](size);\n}\n\nmodule.exports = function composePopupOptions(options) {\n var height = options.height || constants.DEFAULT_POPUP_HEIGHT;\n var width = options.width || constants.DEFAULT_POPUP_WIDTH;\n var top = calculatePosition(\"top\", options.top, height);\n var left = calculatePosition(\"left\", options.left, width);\n\n return [\n constants.POPUP_BASE_OPTIONS,\n \"height=\" + height,\n \"width=\" + width,\n \"top=\" + top,\n \"left=\" + left,\n ].join(\",\");\n};\n\n},{\"../../../shared/constants\":159,\"./position\":157}],156:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar composeOptions = _dereq_(\"./compose-options\");\n\nfunction noop() {}\n\nfunction Popup(options) {\n this._frame = null;\n this._options = options || {};\n}\n\nPopup.prototype.initialize = noop;\n\nPopup.prototype.open = function () {\n this._frame = window.open(\n this._options.openFrameUrl,\n this._options.name,\n composeOptions(this._options)\n );\n};\n\nPopup.prototype.focus = function () {\n this._frame.focus();\n};\n\nPopup.prototype.close = function () {\n if (this._frame.closed) {\n return;\n }\n this._frame.close();\n};\n\nPopup.prototype.isClosed = function () {\n return !this._frame || Boolean(this._frame.closed);\n};\n\nPopup.prototype.redirect = function (redirectUrl) {\n this._frame.location.href = redirectUrl;\n};\n\nmodule.exports = Popup;\n\n},{\"./compose-options\":155}],157:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction top(height) {\n var windowHeight =\n window.outerHeight || document.documentElement.clientHeight;\n var windowTop = window.screenY == null ? window.screenTop : window.screenY;\n\n return center(windowHeight, height, windowTop);\n}\n\nfunction left(width) {\n var windowWidth = window.outerWidth || document.documentElement.clientWidth;\n var windowLeft = window.screenX == null ? window.screenLeft : window.screenX;\n\n return center(windowWidth, width, windowLeft);\n}\n\nfunction center(windowMetric, popupMetric, offset) {\n return (windowMetric - popupMetric) / 2 + offset;\n}\n\nmodule.exports = {\n top: top,\n left: left,\n center: center,\n};\n\n},{}],158:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n isIos: _dereq_(\"@braintree/browser-detection/is-ios\"),\n isIosWKWebview: _dereq_(\"@braintree/browser-detection/is-ios-wkwebview\"),\n supportsPopups: _dereq_(\"@braintree/browser-detection/supports-popups\"),\n};\n\n},{\"@braintree/browser-detection/is-ios\":27,\"@braintree/browser-detection/is-ios-wkwebview\":26,\"@braintree/browser-detection/supports-popups\":29}],159:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n DISPATCH_FRAME_NAME: \"dispatch\",\n DISPATCH_FRAME_CLASS: \"braintree-dispatch-frame\",\n POPUP_BASE_OPTIONS: \"resizable,scrollbars\",\n DEFAULT_POPUP_WIDTH: 450,\n DEFAULT_POPUP_HEIGHT: 535,\n POPUP_POLL_INTERVAL: 100,\n POPUP_CLOSE_TIMEOUT: 100,\n};\n\n},{}],160:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Popup Related Error Codes\n * @ignore\n * @description Errors that occur when using a component that opens a popup window.\n * @property {INTERNAL} FRAME_SERVICE_FRAME_CLOSED - Occurs when the frame is closed before tokenization can occur.\n * @property {INTERNAL} FRAME_SERVICE_FRAME_OPEN_FAILED - Occurs when the popup could not be opened.\n */\n\nvar BraintreeError = _dereq_(\"../../braintree-error\");\n\nmodule.exports = {\n FRAME_SERVICE_FRAME_CLOSED: {\n type: BraintreeError.types.INTERNAL,\n code: \"FRAME_SERVICE_FRAME_CLOSED\",\n message: \"Frame closed before tokenization could occur.\",\n },\n FRAME_SERVICE_FRAME_OPEN_FAILED: {\n type: BraintreeError.types.INTERNAL,\n code: \"FRAME_SERVICE_FRAME_OPEN_FAILED\",\n message: \"Frame failed to open.\",\n },\n};\n\n},{\"../../braintree-error\":137}],161:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"../../enumerate\");\n\nmodule.exports = enumerate(\n [\"DISPATCH_FRAME_READY\", \"DISPATCH_FRAME_REPORT\"],\n \"frameService:\"\n);\n\n},{\"../../enumerate\":147}],162:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar VERSION = \"3.103.0\";\nvar assign = _dereq_(\"./assign\").assign;\n\nfunction generateTokenizationParameters(configuration, overrides) {\n var metadata = configuration.analyticsMetadata;\n var basicTokenizationParameters = {\n gateway: \"braintree\",\n \"braintree:merchantId\": configuration.gatewayConfiguration.merchantId,\n \"braintree:apiVersion\": \"v1\",\n \"braintree:sdkVersion\": VERSION,\n \"braintree:metadata\": JSON.stringify({\n source: metadata.source,\n integration: metadata.integration,\n sessionId: metadata.sessionId,\n version: VERSION,\n platform: metadata.platform,\n }),\n };\n\n return assign({}, basicTokenizationParameters, overrides);\n}\n\nmodule.exports = function (configuration, googlePayVersion, googleMerchantId) {\n var data, paypalPaymentMethod;\n var androidPayConfiguration = configuration.gatewayConfiguration.androidPay;\n var environment =\n configuration.gatewayConfiguration.environment === \"production\"\n ? \"PRODUCTION\"\n : \"TEST\";\n\n if (googlePayVersion === 2) {\n data = {\n apiVersion: 2,\n apiVersionMinor: 0,\n environment: environment,\n allowedPaymentMethods: [\n {\n type: \"CARD\",\n parameters: {\n allowedAuthMethods: [\"PAN_ONLY\", \"CRYPTOGRAM_3DS\"],\n allowedCardNetworks: androidPayConfiguration.supportedNetworks.map(\n function (card) {\n return card.toUpperCase();\n }\n ),\n },\n tokenizationSpecification: {\n type: \"PAYMENT_GATEWAY\",\n parameters: generateTokenizationParameters(configuration, {\n \"braintree:authorizationFingerprint\":\n androidPayConfiguration.googleAuthorizationFingerprint,\n }),\n },\n },\n ],\n };\n\n if (googleMerchantId) {\n data.merchantInfo = {\n merchantId: googleMerchantId,\n };\n }\n\n if (androidPayConfiguration.paypalClientId) {\n paypalPaymentMethod = {\n type: \"PAYPAL\",\n parameters: {\n /* eslint-disable camelcase */\n purchase_context: {\n purchase_units: [\n {\n payee: {\n client_id: androidPayConfiguration.paypalClientId,\n },\n recurring_payment: true,\n },\n ],\n },\n /* eslint-enable camelcase */\n },\n tokenizationSpecification: {\n type: \"PAYMENT_GATEWAY\",\n parameters: generateTokenizationParameters(configuration, {\n \"braintree:paypalClientId\": androidPayConfiguration.paypalClientId,\n }),\n },\n };\n\n data.allowedPaymentMethods.push(paypalPaymentMethod);\n }\n } else {\n data = {\n environment: environment,\n allowedPaymentMethods: [\"CARD\", \"TOKENIZED_CARD\"],\n paymentMethodTokenizationParameters: {\n tokenizationType: \"PAYMENT_GATEWAY\",\n parameters: generateTokenizationParameters(configuration, {\n \"braintree:authorizationFingerprint\":\n androidPayConfiguration.googleAuthorizationFingerprint,\n }),\n },\n cardRequirements: {\n allowedCardNetworks: androidPayConfiguration.supportedNetworks.map(\n function (card) {\n return card.toUpperCase();\n }\n ),\n },\n };\n\n if (configuration.authorizationType === \"TOKENIZATION_KEY\") {\n data.paymentMethodTokenizationParameters.parameters[\n \"braintree:clientKey\"\n ] = configuration.authorization;\n }\n\n if (googleMerchantId) {\n data.merchantId = googleMerchantId;\n }\n\n if (googlePayVersion) {\n data.apiVersion = googlePayVersion;\n }\n }\n\n return data;\n};\n\n},{\"./assign\":134}],163:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function inIframe(win) {\n win = win || window;\n\n try {\n return win.self !== win.top;\n } catch (e) {\n return true;\n }\n};\n\n},{}],164:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction convertDateStringToDate(dateString) {\n var splitDate = dateString.split(\"-\");\n\n return new Date(splitDate[0], splitDate[1], splitDate[2]);\n}\n\nfunction isDateStringBeforeOrOn(firstDate, secondDate) {\n return (\n convertDateStringToDate(firstDate) <= convertDateStringToDate(secondDate)\n );\n}\n\nmodule.exports = isDateStringBeforeOrOn;\n\n},{}],165:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction isHTTPS(protocol) {\n protocol = protocol || window.location.protocol;\n\n return protocol === \"https:\";\n}\n\nmodule.exports = {\n isHTTPS: isHTTPS,\n};\n\n},{}],166:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar parser;\nvar legalHosts = {\n \"paypal.com\": 1,\n \"braintreepayments.com\": 1,\n \"braintreegateway.com\": 1,\n \"braintree-api.com\": 1,\n};\n\n// endRemoveIf(production)\n\nfunction stripSubdomains(domain) {\n return domain.split(\".\").slice(-2).join(\".\");\n}\n\nfunction isVerifiedDomain(url) {\n var mainDomain;\n\n url = url.toLowerCase();\n\n if (!/^https:/.test(url)) {\n return false;\n }\n\n parser = parser || document.createElement(\"a\");\n parser.href = url;\n mainDomain = stripSubdomains(parser.hostname);\n\n return legalHosts.hasOwnProperty(mainDomain);\n}\n\nmodule.exports = isVerifiedDomain;\n\n},{}],167:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (value) {\n return JSON.parse(JSON.stringify(value));\n};\n\n},{}],168:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (obj) {\n return Object.keys(obj).filter(function (key) {\n return typeof obj[key] === \"function\";\n });\n};\n\n},{}],169:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction once(fn) {\n var called = false;\n\n return function () {\n if (!called) {\n called = true;\n fn.apply(null, arguments);\n }\n };\n}\n\nmodule.exports = once;\n\n},{}],170:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction _notEmpty(obj) {\n var key;\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n return true;\n }\n }\n\n return false;\n}\n\n/* eslint-disable no-mixed-operators */\nfunction _isArray(value) {\n return (\n (value &&\n typeof value === \"object\" &&\n typeof value.length === \"number\" &&\n Object.prototype.toString.call(value) === \"[object Array]\") ||\n false\n );\n}\n/* eslint-enable no-mixed-operators */\n\nfunction hasQueryParams(url) {\n url = url || window.location.href;\n\n return /\\?/.test(url);\n}\n\nfunction parse(url) {\n var query, params;\n\n url = url || window.location.href;\n\n if (!hasQueryParams(url)) {\n return {};\n }\n\n query = url.split(\"?\")[1] || \"\";\n query = query.replace(/#.*$/, \"\").split(\"&\");\n\n params = query.reduce(function (toReturn, keyValue) {\n var parts = keyValue.split(\"=\");\n var key = decodeURIComponent(parts[0]);\n var value = decodeURIComponent(parts[1]);\n\n toReturn[key] = value;\n\n return toReturn;\n }, {});\n\n return params;\n}\n\nfunction stringify(params, namespace) {\n var k, v, p;\n var query = [];\n\n for (p in params) {\n if (!params.hasOwnProperty(p)) {\n continue;\n }\n\n v = params[p];\n\n if (namespace) {\n if (_isArray(params)) {\n k = namespace + \"[]\";\n } else {\n k = namespace + \"[\" + p + \"]\";\n }\n } else {\n k = p;\n }\n if (typeof v === \"object\") {\n query.push(stringify(v, k));\n } else {\n query.push(encodeURIComponent(k) + \"=\" + encodeURIComponent(v));\n }\n }\n\n return query.join(\"&\");\n}\n\nfunction queryify(url, params) {\n url = url || \"\";\n\n if (params != null && typeof params === \"object\" && _notEmpty(params)) {\n url += url.indexOf(\"?\") === -1 ? \"?\" : \"\";\n url += url.indexOf(\"=\") !== -1 ? \"&\" : \"\";\n url += stringify(params);\n }\n\n return url;\n}\n\nmodule.exports = {\n parse: parse,\n stringify: stringify,\n queryify: queryify,\n hasQueryParams: hasQueryParams,\n};\n\n},{}],171:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar findRootNode = _dereq_(\"./find-root-node\");\n\n// based on https://github.com/krakenjs/belter/blob/cdddc4f8ddb172d29db9e7e1ad1eeeacfb93e215/src/dom.js#L981-L1031\n// thanks @bluepnume\n\nfunction isShadowElement(element) {\n element = findRootNode(element);\n\n return element.toString() === \"[object ShadowRoot]\";\n}\n\nfunction getShadowHost(element) {\n element = findRootNode(element);\n\n if (!isShadowElement(element)) {\n return null;\n }\n\n return element.host;\n}\n\nfunction transformToSlot(element, styles) {\n var styleNode = findRootNode(element).querySelector(\"style\");\n var shadowHost = getShadowHost(element);\n var slotName = \"shadow-slot-\" + uuid();\n var slot = document.createElement(\"slot\");\n var slotProvider = document.createElement(\"div\");\n\n slot.setAttribute(\"name\", slotName);\n element.appendChild(slot);\n\n slotProvider.setAttribute(\"slot\", slotName);\n shadowHost.appendChild(slotProvider);\n\n if (styles) {\n if (!styleNode) {\n styleNode = document.createElement(\"style\");\n element.appendChild(styleNode);\n }\n\n styleNode.sheet.insertRule(\n '::slotted([slot=\"' + slotName + '\"]) { ' + styles + \" }\"\n );\n }\n\n if (isShadowElement(shadowHost)) {\n return transformToSlot(slotProvider, styles);\n }\n\n return slotProvider;\n}\n\nmodule.exports = {\n isShadowElement: isShadowElement,\n getShadowHost: getShadowHost,\n transformToSlot: transformToSlot,\n};\n\n},{\"./find-root-node\":149,\"@braintree/uuid\":36}],172:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = function (snakeString) {\n if (snakeString.indexOf(\"_\") === -1) {\n return snakeString;\n }\n\n return snakeString.toLowerCase().replace(/(\\_\\w)/g, function (match) {\n return match[1].toUpperCase();\n });\n};\n\n},{}],173:[function(_dereq_,module,exports){\n\"use strict\";\n\nfunction useMin(isDebug) {\n return isDebug ? \"\" : \".min\";\n}\n\nmodule.exports = useMin;\n\n},{}],174:[function(_dereq_,module,exports){\n\"use strict\";\n\n// NEXT_MAJOR_VERSION old versions of IE don't have atob, in the\n// next major version, we're dropping support for those versions\n// so we can eliminate the need to have this atob polyfill\nvar atobNormalized = typeof atob === \"function\" ? atob : atobPolyfill;\n\nfunction atobPolyfill(base64String) {\n var a, b, c, b1, b2, b3, b4, i;\n var base64Matcher = new RegExp(\n \"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})([=]{1,2})?$\"\n );\n var characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var result = \"\";\n\n if (!base64Matcher.test(base64String)) {\n throw new Error(\"Non base64 encoded input passed to window.atob polyfill\");\n }\n\n i = 0;\n do {\n b1 = characters.indexOf(base64String.charAt(i++));\n b2 = characters.indexOf(base64String.charAt(i++));\n b3 = characters.indexOf(base64String.charAt(i++));\n b4 = characters.indexOf(base64String.charAt(i++));\n\n a = ((b1 & 0x3f) << 2) | ((b2 >> 4) & 0x3);\n b = ((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf);\n c = ((b3 & 0x3) << 6) | (b4 & 0x3f);\n\n result +=\n String.fromCharCode(a) +\n (b ? String.fromCharCode(b) : \"\") +\n (c ? String.fromCharCode(c) : \"\");\n } while (i < base64String.length);\n\n return result;\n}\n\nmodule.exports = {\n atob: function (base64String) {\n return atobNormalized.call(window, base64String);\n },\n _atob: atobPolyfill,\n};\n\n},{}],175:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n REQUIRED_OPTIONS_FOR_START_PAYMENT: [\n \"givenName\",\n \"surname\",\n \"currencyCode\",\n \"onPaymentStart\",\n \"paymentType\",\n \"amount\",\n \"fallback\",\n ],\n REQUIRED_OPTIONS_FOR_PAY_UPON_INVOICE_PAYMENT_TYPE: [\n \"givenName\",\n \"surname\",\n \"currencyCode\",\n \"onPaymentStart\",\n \"paymentType\",\n \"amount\",\n \"address\",\n \"billingAddress\",\n \"birthDate\",\n \"email\",\n \"locale\",\n \"customerServiceInstructions\",\n \"correlationId\",\n \"phone\",\n \"phoneCountryCode\",\n \"lineItems\",\n ],\n REQUIRED_OPTIONS_FOR_ADDRESS: [\n \"streetAddress\",\n \"locality\",\n \"postalCode\",\n \"countryCode\",\n ],\n REQUIRED_OPTIONS_FOR_LINE_ITEMS: [\n \"category\",\n \"name\",\n \"quantity\",\n \"unitAmount\",\n \"unitTaxAmount\",\n ],\n REQUIRED_OPTIONS_FOR_BLIK_SEAMLESS_PAYMENT_TYPE: [\n \"givenName\",\n \"surname\",\n \"currencyCode\",\n \"onPaymentStart\",\n \"paymentType\",\n \"amount\",\n ],\n REQUIRED_OPTIONS_FOR_BLIK_OPTIONS_LEVEL_0: [\"authCode\"],\n REQUIRED_OPTIONS_FOR_BLIK_OPTIONS_ONE_CLICK_FIRST: [\n \"authCode\",\n \"consumerReference\",\n \"aliasLabel\",\n ],\n REQUIRED_OPTIONS_FOR_BLIK_OPTIONS_ONE_CLICK_SUBSEQUENT: [\n \"consumerReference\",\n \"aliasKey\",\n ],\n};\n\n},{}],176:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar frameService = _dereq_(\"../../lib/frame-service/external\");\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar useMin = _dereq_(\"../../lib/use-min\");\nvar VERSION = \"3.103.0\";\nvar INTEGRATION_TIMEOUT_MS =\n _dereq_(\"../../lib/constants\").INTEGRATION_TIMEOUT_MS;\nvar analytics = _dereq_(\"../../lib/analytics\");\nvar methods = _dereq_(\"../../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../../lib/convert-methods-to-error\");\nvar convertToBraintreeError = _dereq_(\"../../lib/convert-to-braintree-error\");\nvar ExtendedPromise = _dereq_(\"@braintree/extended-promise\");\nvar querystring = _dereq_(\"../../lib/querystring\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar constants = _dereq_(\"./constants\");\nvar errors = _dereq_(\"../shared/errors\");\n\nvar DEFAULT_WINDOW_WIDTH = 1282;\nvar DEFAULT_WINDOW_HEIGHT = 720;\n\nExtendedPromise.suppressUnhandledPromiseMessage = true;\n\n/**\n * @class\n * @param {object} options see {@link module:braintree-web/local-payment.create|local-payment.create}\n * @classdesc This class represents a LocalPayment component. Instances of this class can open a LocalPayment window for paying with alternate payments local to a specific country. Any additional UI, such as disabling the page while authentication is taking place, is up to the developer.\n *\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/local-payment.create|braintree-web.local-payment.create} instead.</strong>\n */\nfunction LocalPayment(options) {\n this._client = options.client;\n this._assetsUrl =\n options.client.getConfiguration().gatewayConfiguration.assetsUrl +\n \"/web/\" +\n VERSION;\n this._isDebug = options.client.getConfiguration().isDebug;\n this._loadingFrameUrl =\n this._assetsUrl +\n \"/html/local-payment-landing-frame\" +\n useMin(this._isDebug) +\n \".html\";\n this._authorizationInProgress = false;\n this._paymentType = \"unknown\";\n this._merchantAccountId = options.merchantAccountId;\n}\n\nLocalPayment.prototype._initialize = function () {\n var self = this;\n var client = this._client;\n var failureTimeout = setTimeout(function () {\n analytics.sendEvent(client, \"local-payment.load.timed-out\");\n }, INTEGRATION_TIMEOUT_MS);\n\n return new Promise(function (resolve) {\n frameService.create(\n {\n name: \"localpaymentlandingpage\",\n dispatchFrameUrl:\n self._assetsUrl +\n \"/html/dispatch-frame\" +\n useMin(self._isDebug) +\n \".html\",\n openFrameUrl: self._loadingFrameUrl,\n },\n function (service) {\n self._frameService = service;\n clearTimeout(failureTimeout);\n analytics.sendEvent(client, \"local-payment.load.succeeded\");\n resolve(self);\n }\n );\n });\n};\n\n/**\n * Options used for most local payment types.\n * @typedef {object} LocalPayment~StartPaymentOptions\n * @property {object} fallback Configuration for what to do when app switching back from a Bank app on a mobile device.\n * @property {string} fallback.buttonText The text to display in a button to redirect back to the merchant page.\n * @property {string} fallback.url The url to redirect to when the redirect button is pressed. Query params will be added to the url to process the data returned from the bank.\n * @property {string} fallback.cancelButtonText The text to display in a button to redirect back to the merchant page when the customer cancels. If no `cancelButtonText` is provided, `buttonText` will be used.\n * @property {string} fallback.cancelUrl The url to redirect to when the redirect button is pressed when the customer cancels. Query params will be added to the url to check the state of the payment. If no `cancelUrl` is provided, `url` will be used.\n * @property {object} [windowOptions] The options for configuring the window that is opened when starting the payment.\n * @property {number} [windowOptions.width=1282] The width in pixels of the window opened when starting the payment. The default width size is this large to allow various banking partner landing pages to display the QR Code to be scanned by the bank's mobile app. Many will not display the QR code when the window size is smaller than a standard desktop screen.\n * @property {number} [windowOptions.height=720] The height in pixels of the window opened when starting the payment.\n * @property {string} amount The amount to authorize for the transaction.\n * @property {string} currencyCode The currency to process the payment (three-character ISO-4217).\n * @property {string} [displayName] The merchant name displayed inside of the window that is opened when starting the payment.\n * @property {string} paymentType The type of local payment. See https://developer.paypal.com/braintree/docs/guides/local-payment-methods/client-side-custom\n * @property {string} paymentTypeCountryCode The country code of the local payment. This value must be one of the supported country codes for a given local payment type listed {@link https://developer.paypal.com/braintree/docs/guides/local-payment-methods/client-side-custom/javascript/v3#render-local-payment-method-buttons|here}. For local payments supported in multiple countries, this value may determine which banks are presented to the customer.\n * @property {string} email Payer email of the customer.\n * @property {string} givenName First name of the customer.\n * @property {string} surname Last name of the customer.\n * @property {string} phone Phone number of the customer.\n * @property {string} bic Bank Identification Code of the customer (specific to iDEAL transactions).\n * @property {boolean} recurrent Enable recurrent payment.\n * @property {string} customerId The customer's id in merchant's system (required for recurrent payments).\n * @property {boolean} shippingAddressRequired Indicates whether or not the payment needs to be shipped. For digital goods, this should be false. Defaults to false.\n * @property {object} address The shipping address.\n * @property {string} address.streetAddress Line 1 of the Address (eg. number, street, etc). An error will occur if this address is not valid.\n * @property {string} address.extendedAddress Line 2 of the Address (eg. suite, apt #, etc.). An error will occur if this address is not valid.\n * @property {string} address.locality Customer's city.\n * @property {string} address.region Customer's region or state.\n * @property {string} address.postalCode Customer's postal code.\n * @property {string} address.countryCode Customer's country code (two-character ISO 3166-1 code).\n * @property {function} onPaymentStart A function that will be called with two parameters: an object containing the `paymentId` and a `continueCallback` that must be called to launch the flow. You can use method to do any preprocessing on your server before the flow begins..\n */\n\n/**\n * Options used for the Pay Upon Invoice local payment type.\n * @typedef {object} LocalPayment~StartPaymentPayUponInvoiceOptions\n * @property {string} amount The amount to authorize for the transaction.\n * @property {string} currencyCode The currency to process the payment (three-character ISO-4217).\n * @property {string} [displayName] The merchant name displayed inside of the window that is opened when starting the payment.\n * @property {string} paymentType The type of local payment. Must be `pay_upon_invoice`.\n * @property {string} [paymentTypeCountryCode] The country code of the local payment. This value must be one of the supported country codes for a given local payment type listed {@link https://developer.paypal.com/braintree/docs/guides/local-payment-methods/client-side-custom/javascript/v3#render-local-payment-method-buttons|here}. For local payments supported in multiple countries, this value may determine which banks are presented to the customer.\n * @property {string} email Payer email of the customer.\n * @property {string} givenName First name of the customer.\n * @property {string} surname Last name of the customer.\n * @property {string} phone Phone number of the customer.\n * @property {string} phoneCountryCode The country calling code.\n * @property {string} birthDate The birth date of the customer in `YYYY-MM-DD` format.\n * @property {object} address The shipping address.\n * @property {string} address.streetAddress Line 1 of the Address (eg. number, street, etc). An error will occur if this address is not valid.\n * @property {string} [address.extendedAddress] Line 2 of the Address (eg. suite, apt #, etc.). An error will occur if this address is not valid.\n * @property {string} address.locality Customer's city.\n * @property {string} [address.region] Customer's region or state.\n * @property {string} address.postalCode Customer's postal code.\n * @property {string} address.countryCode Customer's country code (two-character ISO 3166-1 code).\n * @property {string} [shippingAmount] The shipping fee for all items. This value can not be a negative number.\n * @property {string} [discountAmount] The discount for all items. This value can not be a negative number.\n * @property {object} billingAddress The billing address.\n * @property {string} billingAddress.streetAddress Line 1 of the Address (eg. number, street, etc). An error will occur if this address is not valid.\n * @property {string} [billingAddress.extendedAddress] Line 2 of the Address (eg. suite, apt #, etc.). An error will occur if this address is not valid.\n * @property {string} billingAddress.locality Customer's city.\n * @property {string} [billingAddress.region] Customer's region or state.\n * @property {string} billingAddress.postalCode Customer's postal code.\n * @property {string} billingAddress.countryCode Customer's country code (two-character ISO 3166-1 code).\n * @property {object[]} lineItems List of line items.\n * @property {string} lineItems.category The item category type: `'DIGITAL_GOODS'`, `'PHYSICAL_GOODS'`, or `'DONATION'`.\n * @property {string} lineItems.name Item name. Maximum 127 characters.\n * @property {string} lineItems.quantity Number of units of the item purchased. This value must be a whole number and can't be negative or zero.\n * @property {string} lineItems.unitAmount Per-unit price of the item. Can include up to 2 decimal places. This value can't be negative or zero.\n * @property {string} lineItems.unitTaxAmount Per-unit tax price of the item. Can include up to 2 decimal places. This value can't be negative.\n * @property {string} locale The BCP 47-formatted locale. PayPal supports a five-character code. For example, `en-DE`, `da-DK`, `he-IL`, `id-ID`, `ja-JP`, `no-NO`, `pt-BR`, `ru-RU`, `sv-SE`, `th-TH`, `zh-CN`, `zh-HK`, or `zh-TW`.\n * @property {string} customerServiceInstructions Instructions for how to contact the merchant's customer service. Maximum 4,000 characters.\n * @property {string} correlationId Used to correlate user sessions with server transactions.\n * @property {function} onPaymentStart A function that will be called with an object containing the `paymentId`. The `continueCallback` is not provided as it is not needed for this use case.\n */\n\n/**\n * Options used for the seamless/oneclick BLIK local payment type.\n * @typedef {object} LocalPayment~StartPaymentOptions\n * @property {string} amount The amount to authorize for the transaction.\n * @property {string} currencyCode The currency to process the payment (three-character ISO-4217).\n * @property {string} [displayName] The merchant name displayed inside of the window that is opened when starting the payment.\n * @property {string} paymentType The type of local payment. Must be `blik`.\n * @property {string} paymentTypeCountryCode The country code of the local payment. This value must be one of the supported country codes for a given local payment type listed {@link https://developer.paypal.com/braintree/docs/guides/local-payment-methods/client-side-custom/javascript/v3#render-local-payment-method-buttons|here}. For local payments supported in multiple countries, this value may determine which banks are presented to the customer.\n * @property {string} email Payer email of the customer.\n * @property {string} givenName First name of the customer.\n * @property {string} surname Last name of the customer.\n * @property {string} phone Phone number of the customer.\n * @property {boolean} shippingAddressRequired Indicates whether or not the payment needs to be shipped. For digital goods, this should be false. Defaults to false.\n * @property {object} address The shipping address.\n * @property {string} address.streetAddress Line 1 of the Address (eg. number, street, etc). An error will occur if this address is not valid.\n * @property {string} address.extendedAddress Line 2 of the Address (eg. suite, apt #, etc.). An error will occur if this address is not valid.\n * @property {string} address.locality Customer's city.\n * @property {string} address.region Customer's region or state.\n * @property {string} address.postalCode Customer's postal code.\n * @property {string} address.countryCode Customer's country code (two-character ISO 3166-1 code).\n * @property {object} blikOptions Blik seamless/oneclick specific options. Should contain only one object: `level_0` or `oneClick`.\n * @property {object} blikOptions.level_0 Blik seamless specific options.\n * @property {string} blikOptions.level_0.authCode 6-digit code used to authenticate a consumer within BLIK.\n * @property {object} blikOptions.oneClick Blik oneclick specific options.\n * @property {string} blikOptions.oneClick.authCode 6-digit code used to authenticate a consumer within BLIK.\n * @property {string} blikOptions.oneClick.consumerReference The merchant generated, unique reference serving as a primary identifier for accounts connected between Blik and a merchant.\n * @property {string} blikOptions.oneClick.aliasLabel A bank defined identifier used as a display name to allow the payer to differentiate between multiple registered bank accounts.\n * @property {string} blikOptions.oneClick.aliasKey A Blik-defined identifier for a specific Blik-enabled bank account that is associated with a given merchant. Used only in conjunction with a Consumer Reference.\n * @property {function} onPaymentStart A function that will be called with an object containing the `paymentId`. The `continueCallback` is not provided as it is not needed for this use case.\n */\n\n/**\n * Launches the local payment flow and returns a nonce payload. Only one local payment flow should be active at a time. One way to achieve this is to disable your local payment button while the flow is open.\n * @public\n * @function\n * @param {LocalPayment~StartPaymentOptions|LocalPayment~StartPaymentPayUponInvoiceOptions} options Options for initiating the local payment payment flow.\n * @param {callback} callback The second argument, <code>data</code>, is a {@link LocalPayment~startPaymentPayload|startPaymentPayload}. If no callback is provided, the method will return a Promise that resolves with a {@link LocalPayment~startPaymentPayload|startPaymentPayload}.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * localPaymentInstance.startPayment({\n * paymentType: 'ideal',\n * paymentTypeCountryCode: 'NL',\n * fallback: {\n * buttonText: 'Return to Merchant',\n * url: 'https://example.com/my-checkout-page'\n * },\n * amount: '10.00',\n * currencyCode: 'EUR',\n * givenName: 'Joe',\n * surname: 'Doe',\n * address: {\n * countryCode: 'NL'\n * },\n * onPaymentStart: function (data, continueCallback) {\n * // Do any preprocessing before starting the flow\n * // data.paymentId is the ID of the localPayment\n * continueCallback();\n * }\n * }).then(function (payload) {\n * // Submit payload.nonce to your server\n * }).catch(function (startPaymentError) {\n * // Handle flow errors or premature flow closure\n * console.error('Error!', startPaymentError);\n * });\n * @example <caption>Pay Upon Invoice</caption>\n * localPaymentInstance.startPayment({\n * paymentType: 'pay_upon_invoice',\n * amount: '100.00',\n * currencyCode: 'EUR',\n * givenName: 'Max',\n * surname: 'Mustermann',\n * address: { // This is used as the shipping address.\n * streetAddress: 'Taunusanlage 12',\n * locality: 'Frankfurt',\n * postalCode: '60325',\n * countryCode: 'DE',\n * },\n * billingAddress: {\n * streetAddress: 'Sch\u00F6nhauser Allee 84',\n * locality: 'Berlin',\n * postalCode: '10439',\n * countryCode: 'DE'\n * },\n * birthDate: '1990-01-01',\n * email: 'buyer@example.com',\n * locale: 'en-DE',\n * customerServiceInstructions: 'Customer service phone is +49 6912345678.',\n * lineItems: [{\n * category: 'PHYSICAL_GOODS',\n * name: 'Basketball Shoes',\n * quantity: '1',\n * unitAmount: '81.00',\n * unitTaxAmount: '19.00',\n * }],\n * phone: '6912345678',\n * phoneCountryCode: '49',\n * correlationId: correlationId,\n * onPaymentStart: function (data) {\n * // NOTE: It is critical here to store data.paymentId on your server\n * // so it can be mapped to a webhook sent by Braintree once the\n * // buyer completes their payment.\n * console.log('Payment ID:', data.paymentId);\n * },\n * }).catch(function (err) {\n * // Handle any error calling startPayment.\n * console.error(err);\n * });\n * @example <caption>BLIK seamless</caption>\n * localPaymentInstance.startPayment({\n * paymentType: 'blik',\n * paymentTypeCountryCode: 'PL',\n * amount: '10.00',\n * currencyCode: 'PLN',\n * givenName: 'Joe',\n * surname: 'Doe',\n * phone: '1234566789',\n * address: {\n * streetAddress: 'Mokotowska 1234',\n * locality: 'Warsaw',\n * postalCode: '02-697',\n * countryCode: 'PL',\n * },\n * blikOptions: {\n * level_0: {\n * authCode: \"123456\",\n * },\n * },\n * onPaymentStart: function (data) {\n * // NOTE: It is critical here to store data.paymentId on your server\n * // so it can be mapped to a webhook sent by Braintree once the\n * // buyer completes their payment.\n * console.log('Payment ID:', data.paymentId);\n * },\n * }).catch(function (err) {\n * // Handle any error calling startPayment.\n * console.error(err);\n * });\n * @example <caption>BLIK oneclick first payment</caption>\n * localPaymentInstance.startPayment({\n * paymentType: 'blik',\n * paymentTypeCountryCode: 'PL',\n * amount: '10.00',\n * currencyCode: 'PLN',\n * givenName: 'Joe',\n * surname: 'Doe',\n * phone: '1234566789',\n * address: {\n * streetAddress: 'Mokotowska 1234',\n * locality: 'Warsaw',\n * postalCode: '02-697',\n * countryCode: 'PL',\n * },\n * blikOptions: {\n * oneClick: {\n * authCode: \"123456\",\n * consumerReference: \"ABCde123\",\n * aliasLabel: \"my uniq alias\",\n * },\n * },\n * onPaymentStart: function (data) {\n * // NOTE: It is critical here to store data.paymentId on your server\n * // so it can be mapped to a webhook sent by Braintree once the\n * // buyer completes their payment.\n * console.log('Payment ID:', data.paymentId);\n * },\n * }).catch(function (err) {\n * // Handle any error calling startPayment.\n * console.error(err);\n * });\n * @example <caption>BLIK oneclick subsequent payment</caption>\n * localPaymentInstance.startPayment({\n * paymentType: 'blik',\n * paymentTypeCountryCode: 'PL',\n * amount: '10.00',\n * currencyCode: 'PLN',\n * givenName: 'Joe',\n * surname: 'Doe',\n * phone: '1234566789',\n * address: {\n * streetAddress: 'Mokotowska 1234',\n * locality: 'Warsaw',\n * postalCode: '02-697',\n * countryCode: 'PL',\n * },\n * blikOptions: {\n * oneClick: {\n * consumerReference: \"ABCde123\",\n * aliasKey: \"123456789\",\n * },\n * },\n * onPaymentStart: function (data) {\n * // NOTE: It is critical here to store data.paymentId on your server\n * // so it can be mapped to a webhook sent by Braintree once the\n * // buyer completes their payment.\n * console.log('Payment ID:', data.paymentId);\n * },\n * }).catch(function (err) {\n * // Handle any error calling startPayment.\n * console.error(err);\n * });\n */\nLocalPayment.prototype.startPayment = function (options) {\n var missingOption,\n missingError,\n address,\n fallback,\n params,\n promise,\n billingAddress,\n windowOptions,\n onPaymentStartPromise;\n var self = this; // eslint-disable-line no-invalid-this\n var serviceId = this._frameService._serviceId; // eslint-disable-line no-invalid-this\n\n // In order to provide the merchant with appropriate error messaging,\n // more robust validation is being done on the client-side, since some\n // option names are mapped to legacy names for the sake of the API.\n // For example, if `billingAddress.streetAddress` was missing, then\n // the API error response would say that `billing_address.line1` was\n // missing. This client-side validation will correctly tell the\n // merchant that `billingAddress.streetAddress` was missing.\n missingOption = hasMissingOption(options);\n if (missingOption) {\n missingError = new BraintreeError(\n errors.LOCAL_PAYMENT_START_PAYMENT_MISSING_REQUIRED_OPTION\n );\n if (typeof missingOption === \"string\") {\n missingError.details = \"Missing required '\" + missingOption + \"' option.\";\n }\n\n return Promise.reject(missingError);\n }\n windowOptions = options.windowOptions || {};\n address = options.address || {};\n fallback = options.fallback || {};\n billingAddress = options.billingAddress || {};\n params = {\n amount: options.amount,\n bic: options.bic,\n billingAddress: {\n line1: billingAddress.streetAddress,\n line2: billingAddress.extendedAddress,\n city: billingAddress.locality,\n state: billingAddress.region,\n postalCode: billingAddress.postalCode,\n countryCode: billingAddress.countryCode,\n },\n birthDate: options.birthDate,\n blikOptions: options.blikOptions,\n cancelUrl: querystring.queryify(\n self._assetsUrl +\n \"/html/local-payment-redirect-frame\" +\n useMin(self._isDebug) +\n \".html\",\n {\n channel: serviceId,\n r: fallback.cancelUrl || fallback.url,\n t: fallback.cancelButtonText || fallback.buttonText,\n c: 1, // indicating we went through the cancel flow\n }\n ),\n city: address.locality,\n correlationId: options.correlationId,\n countryCode: address.countryCode,\n currencyIsoCode: options.currencyCode,\n discountAmount: options.discountAmount,\n experienceProfile: {\n brandName: options.displayName,\n customerServiceInstructions: options.customerServiceInstructions,\n locale: options.locale,\n noShipping: !options.shippingAddressRequired,\n },\n firstName: options.givenName,\n fundingSource: options.paymentType,\n intent: \"sale\",\n lastName: options.surname,\n line1: address.streetAddress,\n line2: address.extendedAddress,\n lineItems: options.lineItems,\n merchantAccountId: self._merchantAccountId,\n merchantOrPartnerCustomerId: options.customerId,\n payerEmail: options.email,\n paymentTypeCountryCode: options.paymentTypeCountryCode,\n phone: options.phone,\n phoneCountryCode: options.phoneCountryCode,\n postalCode: address.postalCode,\n recurrent: options.recurrent,\n returnUrl: querystring.queryify(\n self._assetsUrl +\n \"/html/local-payment-redirect-frame\" +\n useMin(self._isDebug) +\n \".html\",\n {\n channel: serviceId,\n r: fallback.url,\n t: fallback.buttonText,\n }\n ),\n shippingAmount: options.shippingAmount,\n state: address.region,\n };\n\n self._paymentType = options.paymentType.toLowerCase();\n if (self._authorizationInProgress) {\n analytics.sendEvent(\n self._client,\n self._paymentType + \".local-payment.start-payment.error.already-opened\"\n );\n\n return Promise.reject(\n new BraintreeError(errors.LOCAL_PAYMENT_ALREADY_IN_PROGRESS)\n );\n }\n\n self._authorizationInProgress = true;\n\n promise = new ExtendedPromise();\n\n // For deferred payment types, the popup window should not be opened,\n // since the actual payment will be done outside of this session.\n if (!isDeferredPaymentTypeOptions(options)) {\n self._startPaymentCallback = self._createStartPaymentCallback(\n function (val) {\n promise.resolve(val);\n },\n function (err) {\n promise.reject(err);\n }\n );\n\n self._frameService.open(\n {\n width: windowOptions.width || DEFAULT_WINDOW_WIDTH,\n height: windowOptions.height || DEFAULT_WINDOW_HEIGHT,\n },\n self._startPaymentCallback\n );\n }\n\n self._client\n .request({\n method: \"post\",\n endpoint: \"local_payments/create\",\n data: params,\n })\n .then(function (response) {\n var redirectUrl = response.paymentResource.redirectUrl;\n\n analytics.sendEvent(\n self._client,\n self._paymentType + \".local-payment.start-payment.opened\"\n );\n self._startPaymentOptions = options;\n\n if (isDeferredPaymentTypeOptions(options)) {\n self._authorizationInProgress = false;\n\n if (typeof redirectUrl === \"string\" && redirectUrl.length) {\n promise.reject(\n new BraintreeError(\n errors.LOCAL_PAYMENT_START_PAYMENT_DEFERRED_PAYMENT_FAILED\n )\n );\n } else {\n onPaymentStartPromise = options.onPaymentStart({\n paymentId: response.paymentResource.paymentToken,\n });\n\n if (onPaymentStartPromise instanceof Promise) {\n onPaymentStartPromise.then(function () {\n promise.resolve();\n });\n } else {\n promise.resolve();\n }\n }\n } else {\n options.onPaymentStart(\n { paymentId: response.paymentResource.paymentToken },\n function () {\n self._frameService.redirect(response.paymentResource.redirectUrl);\n }\n );\n }\n })\n .catch(function (err) {\n var status = err.details && err.details.httpStatus;\n\n self._frameService.close();\n self._authorizationInProgress = false;\n\n if (status === 422) {\n promise.reject(\n new BraintreeError({\n type: errors.LOCAL_PAYMENT_INVALID_PAYMENT_OPTION.type,\n code: errors.LOCAL_PAYMENT_INVALID_PAYMENT_OPTION.code,\n message: errors.LOCAL_PAYMENT_INVALID_PAYMENT_OPTION.message,\n details: {\n originalError: err,\n },\n })\n );\n\n return;\n }\n\n promise.reject(\n convertToBraintreeError(err, {\n type: errors.LOCAL_PAYMENT_START_PAYMENT_FAILED.type,\n code: errors.LOCAL_PAYMENT_START_PAYMENT_FAILED.code,\n message: errors.LOCAL_PAYMENT_START_PAYMENT_FAILED.message,\n })\n );\n });\n\n return promise;\n};\n\n/**\n * Manually tokenizes params for a local payment received from PayPal.When app switching back from a mobile application (such as a bank application for an iDEAL payment), the window may lose context with the parent page. In that case, a fallback url is used, and this method can be used to finish the flow.\n * @public\n * @function\n * @param {object} [params] All options for tokenizing local payment parameters. If no params are passed in, the params will be pulled off of the query string of the page.\n * @param {string} params.btLpToken The token representing the local payment. Aliased to `token` if `btLpToken` is not present.\n * @param {string} params.btLpPaymentId The payment id for the local payment. Aliased to `paymentId` if `btLpPaymentId` is not present.\n * @param {string} params.btLpPayerId The payer id for the local payment. Aliased to `PayerID` if `btLpPayerId` is not present.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link LocalPayment~startPaymentPayload|startPaymentPayload}. If no callback is provided, the method will return a Promise that resolves with a {@link LocalPayment~startPaymentPayload|startPaymentPayload}.\n * @example\n * localPaymentInstance.tokenize().then(function (payload) {\n * // send payload.nonce to your server\n * }).catch(function (err) {\n * // handle tokenization error\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nLocalPayment.prototype.tokenize = function (params) {\n var self = this;\n var client = this._client;\n\n params = params || querystring.parse();\n\n // iOS Safari parses query params by adding the params inside an object called: queryItems\n if (params.queryItems) {\n params = params.queryItems;\n }\n\n if (params.c || params.wasCanceled) {\n return Promise.reject(\n new BraintreeError({\n type: errors.LOCAL_PAYMENT_CANCELED.type,\n code: errors.LOCAL_PAYMENT_CANCELED.code,\n message: errors.LOCAL_PAYMENT_CANCELED.message,\n details: {\n originalError: {\n errorcode: params.errorcode,\n token: params.btLpToken,\n },\n },\n })\n );\n } else if (params.errorcode) {\n return Promise.reject(\n new BraintreeError({\n type: errors.LOCAL_PAYMENT_START_PAYMENT_FAILED.type,\n code: errors.LOCAL_PAYMENT_START_PAYMENT_FAILED.code,\n message: errors.LOCAL_PAYMENT_START_PAYMENT_FAILED.message,\n details: {\n originalError: {\n errorcode: params.errorcode,\n token: params.btLpToken,\n },\n },\n })\n );\n }\n\n return client\n .request({\n endpoint: \"payment_methods/paypal_accounts\",\n method: \"post\",\n data: this._formatTokenizeData(params),\n })\n .then(function (response) {\n var payload = self._formatTokenizePayload(response);\n\n if (window.popupBridge) {\n analytics.sendEvent(\n client,\n self._paymentType + \".local-payment.tokenization.success-popupbridge\"\n );\n } else {\n analytics.sendEvent(\n client,\n self._paymentType + \".local-payment.tokenization.success\"\n );\n }\n\n return payload;\n })\n .catch(function (err) {\n analytics.sendEvent(\n client,\n self._paymentType + \".local-payment.tokenization.failed\"\n );\n\n return Promise.reject(\n convertToBraintreeError(err, {\n type: errors.LOCAL_PAYMENT_TOKENIZATION_FAILED.type,\n code: errors.LOCAL_PAYMENT_TOKENIZATION_FAILED.code,\n message: errors.LOCAL_PAYMENT_TOKENIZATION_FAILED.message,\n })\n );\n });\n};\n\n/**\n * Closes the LocalPayment window if it is open.\n * @public\n * @example\n * localPaymentInstance.closeWindow();\n * @returns {void}\n */\nLocalPayment.prototype.closeWindow = function () {\n if (this._authoriztionInProgress) {\n analytics.sendEvent(\n this._client,\n this._paymentType + \".local-payment.start-payment.closed.by-merchant\"\n );\n }\n this._frameService.close();\n};\n\n/**\n * Focuses the LocalPayment window if it is open.\n * @public\n * @example\n * localPaymentInstance.focusWindow();\n * @returns {void}\n */\nLocalPayment.prototype.focusWindow = function () {\n this._frameService.focus();\n};\n\nLocalPayment.prototype._createStartPaymentCallback = function (\n resolve,\n reject\n) {\n var self = this;\n var client = this._client;\n\n return function (err, params) {\n self._authorizationInProgress = false;\n if (err) {\n if (err.code === \"FRAME_SERVICE_FRAME_CLOSED\") {\n if (params && params.errorcode === \"processing_error\") {\n // something failed within the payment window (rather than when\n // tokenizing with Braintree)\n analytics.sendEvent(\n client,\n self._paymentType + \".local-payment.failed-in-window\"\n );\n reject(new BraintreeError(errors.LOCAL_PAYMENT_START_PAYMENT_FAILED));\n\n return;\n }\n\n // its possible to have a query param with errorcode=payment_error, which\n // indicates that the customer cancelled the flow from within the UI,\n // but as there's no meaningful difference to the merchant whether the\n // customer closes via the UI or by manually closing the window, we\n // don't differentiate these\n analytics.sendEvent(\n client,\n self._paymentType + \".local-payment.tokenization.closed.by-user\"\n );\n reject(new BraintreeError(errors.LOCAL_PAYMENT_WINDOW_CLOSED));\n } else if (\n err.code &&\n err.code.indexOf(\"FRAME_SERVICE_FRAME_OPEN_FAILED\") > -1\n ) {\n reject(\n new BraintreeError({\n code: errors.LOCAL_PAYMENT_WINDOW_OPEN_FAILED.code,\n type: errors.LOCAL_PAYMENT_WINDOW_OPEN_FAILED.type,\n message: errors.LOCAL_PAYMENT_WINDOW_OPEN_FAILED.message,\n details: {\n originalError: err,\n },\n })\n );\n }\n } else if (params) {\n if (!window.popupBridge) {\n self._frameService.redirect(self._loadingFrameUrl);\n }\n\n self\n .tokenize(params)\n .then(resolve)\n .catch(reject)\n .then(function () {\n self._frameService.close();\n });\n }\n };\n};\n\nLocalPayment.prototype._formatTokenizePayload = function (response) {\n var payload;\n var account = {};\n\n if (response.paypalAccounts) {\n account = response.paypalAccounts[0];\n }\n\n payload = {\n nonce: account.nonce,\n details: {},\n type: account.type,\n };\n\n if (account.details) {\n if (account.details.payerInfo) {\n payload.details = account.details.payerInfo;\n }\n if (account.details.correlationId) {\n payload.correlationId = account.details.correlationId;\n }\n }\n\n return payload;\n};\n\n/**\n * Checks if required tokenization parameters are available in querystring for manual tokenization requests.\n * @public\n * @function\n * @example\n * // if query string contains\n * // ?btLpToken=token&btLpPaymentId=payment-id&btLpPayerId=payer-id\n * localPaymentInstance.hasTokenizationParams(); // true\n *\n * // if query string is missing required params\n * localPaymentInstance.hasTokenizationParams(); // false\n *\n * if (localPaymentInstance.hasTokenizationParams()) {\n * localPaymentInstance.tokenize();\n * }\n * @returns {Boolean} Returns a Boolean value for the state of the query string.\n */\nLocalPayment.prototype.hasTokenizationParams = function () {\n var params = querystring.parse();\n\n if (params.errorcode) {\n return true;\n }\n\n return Boolean(\n params.btLpToken && params.btLpPaymentId && params.btLpPayerId\n );\n};\n\nLocalPayment.prototype._formatTokenizeData = function (params) {\n var clientConfiguration = this._client.getConfiguration();\n var gatewayConfiguration = clientConfiguration.gatewayConfiguration;\n var data = {\n merchantAccountId: this._merchantAccountId,\n paypalAccount: {\n correlationId: params.btLpToken || params.token,\n paymentToken: params.btLpPaymentId || params.paymentId,\n payerId: params.btLpPayerId || params.PayerID,\n unilateral: gatewayConfiguration.paypal.unvettedMerchant,\n intent: \"sale\",\n },\n };\n\n return data;\n};\n\n// Some payment types are deferred. Meaning, the actual payment will\n// occur at a later time outside of this session. For example, with\n// Pay Upon Invoice, the customer will later receive an email that will\n// be used to make the actual payment through RatePay. This function\n// will return `true` if the given options contain `paymentType` of\n// a deferred payment type; and/or some payments, like blik, may have\n// specific extra options to be treated as deferred. Otherwise, it\n// will return `false`.\nfunction isDeferredPaymentTypeOptions(options) {\n var blikOptions = options.blikOptions || {};\n var paymentType =\n typeof options.paymentType === \"string\"\n ? options.paymentType.toLowerCase()\n : options.paymentType;\n\n if (paymentType === \"pay_upon_invoice\") {\n return true;\n } else if (paymentType === \"blik\") {\n return (\n blikOptions.hasOwnProperty(\"level_0\") ||\n blikOptions.hasOwnProperty(\"oneClick\")\n );\n }\n\n return false;\n}\n\nfunction hasMissingAddressOption(options) {\n var i, option;\n\n for (i = 0; i < constants.REQUIRED_OPTIONS_FOR_ADDRESS.length; i++) {\n option = constants.REQUIRED_OPTIONS_FOR_ADDRESS[i];\n if (!options.hasOwnProperty(option)) {\n return option;\n }\n }\n\n return false;\n}\n\nfunction hasMissingLineItemsOption(items) {\n var i, j, item, option;\n\n for (j = 0; j < items.length; j++) {\n item = items[j];\n for (i = 0; i < constants.REQUIRED_OPTIONS_FOR_LINE_ITEMS.length; i++) {\n option = constants.REQUIRED_OPTIONS_FOR_LINE_ITEMS[i];\n if (!item.hasOwnProperty(option)) {\n return option;\n }\n }\n }\n\n return false;\n}\n\nfunction hasMissingBlikOptions(options) {\n var i, option, oneClick;\n var blikOptions = options.blikOptions || {};\n\n for (\n i = 0;\n i < constants.REQUIRED_OPTIONS_FOR_BLIK_SEAMLESS_PAYMENT_TYPE.length;\n i++\n ) {\n option = constants.REQUIRED_OPTIONS_FOR_BLIK_SEAMLESS_PAYMENT_TYPE[i];\n if (!options.hasOwnProperty(option)) {\n return option;\n }\n }\n\n if (blikOptions.hasOwnProperty(\"level_0\")) {\n for (\n i = 0;\n i < constants.REQUIRED_OPTIONS_FOR_BLIK_OPTIONS_LEVEL_0.length;\n i++\n ) {\n option = constants.REQUIRED_OPTIONS_FOR_BLIK_OPTIONS_LEVEL_0[i];\n\n // eslint-disable-next-line camelcase\n if (!blikOptions.level_0.hasOwnProperty(option)) {\n return \"blikOptions.level_0.\" + option;\n }\n }\n } else if (blikOptions.hasOwnProperty(\"oneClick\")) {\n oneClick = blikOptions.oneClick || {};\n\n if (oneClick.hasOwnProperty(\"aliasKey\")) {\n for (\n i = 0;\n i <\n constants.REQUIRED_OPTIONS_FOR_BLIK_OPTIONS_ONE_CLICK_SUBSEQUENT.length;\n i++\n ) {\n option =\n constants.REQUIRED_OPTIONS_FOR_BLIK_OPTIONS_ONE_CLICK_SUBSEQUENT[i];\n\n if (!oneClick.hasOwnProperty(option)) {\n return \"blikOptions.oneClick.\" + option;\n }\n }\n } else {\n for (\n i = 0;\n i < constants.REQUIRED_OPTIONS_FOR_BLIK_OPTIONS_ONE_CLICK_FIRST.length;\n i++\n ) {\n option = constants.REQUIRED_OPTIONS_FOR_BLIK_OPTIONS_ONE_CLICK_FIRST[i];\n\n if (!oneClick.hasOwnProperty(option)) {\n return \"blikOptions.oneClick.\" + option;\n }\n }\n }\n }\n\n return false;\n}\n\n// This will return the name of the first missing required option that\n// is found or `true` if `options` itself is not defined. Otherwise, it\n// will return `false`.\nfunction hasMissingOption(options) {\n var i, option, missingAddressOption, missingLineItemOption, paymentType;\n\n if (!options) {\n return true;\n }\n\n if (isDeferredPaymentTypeOptions(options)) {\n paymentType = options.paymentType || \"\";\n\n if (paymentType.toLowerCase() === \"pay_upon_invoice\") {\n for (\n i = 0;\n i < constants.REQUIRED_OPTIONS_FOR_PAY_UPON_INVOICE_PAYMENT_TYPE.length;\n i++\n ) {\n option =\n constants.REQUIRED_OPTIONS_FOR_PAY_UPON_INVOICE_PAYMENT_TYPE[i];\n if (!options.hasOwnProperty(option)) {\n return option;\n }\n if (option === \"address\" || option === \"billingAddress\") {\n missingAddressOption = hasMissingAddressOption(options[option]);\n if (missingAddressOption) {\n return option + \".\" + missingAddressOption;\n }\n } else if (option === \"lineItems\") {\n missingLineItemOption = hasMissingLineItemsOption(options[option]);\n if (missingLineItemOption) {\n return option + \".\" + missingLineItemOption;\n }\n }\n }\n } else if (paymentType.toLowerCase() === \"blik\") {\n return hasMissingBlikOptions(options);\n }\n } else {\n for (i = 0; i < constants.REQUIRED_OPTIONS_FOR_START_PAYMENT.length; i++) {\n option = constants.REQUIRED_OPTIONS_FOR_START_PAYMENT[i];\n\n if (!options.hasOwnProperty(option)) {\n return option;\n }\n }\n\n if (!options.fallback.url) {\n return \"fallback.url\";\n }\n if (!options.fallback.buttonText) {\n return \"fallback.buttonText\";\n }\n if (options.recurrent === true && !options.customerId) {\n return \"customerId\";\n }\n }\n\n return false;\n}\n\n/**\n * Cleanly remove anything set up by {@link module:braintree-web/local-payment.create|create}.\n * @public\n * @param {callback} [callback] Called on completion.\n * @example\n * localPaymentInstance.teardown();\n * @example <caption>With callback</caption>\n * localPaymentInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nLocalPayment.prototype.teardown = function () {\n var self = this; // eslint-disable-line no-invalid-this\n\n self._frameService.teardown();\n\n convertMethodsToError(self, methods(LocalPayment.prototype));\n\n analytics.sendEvent(self._client, \"local-payment.teardown-completed\");\n\n return Promise.resolve();\n};\n\nmodule.exports = wrapPromise.wrapPrototype(LocalPayment);\n\n},{\"../../lib/analytics\":132,\"../../lib/braintree-error\":137,\"../../lib/constants\":139,\"../../lib/convert-methods-to-error\":140,\"../../lib/convert-to-braintree-error\":141,\"../../lib/frame-service/external\":152,\"../../lib/methods\":168,\"../../lib/querystring\":170,\"../../lib/use-min\":173,\"../shared/errors\":178,\"./constants\":175,\"@braintree/extended-promise\":31,\"@braintree/wrap-promise\":40}],177:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/local-payment\n * @description A component to integrate with local payment methods. *This component is currently in beta and is subject to change.*\n */\n\nvar analytics = _dereq_(\"../lib/analytics\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar LocalPayment = _dereq_(\"./external/local-payment\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar errors = _dereq_(\"./shared/errors\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {string} [options.merchantAccountId] A non-default merchant account ID to use for tokenization and creation of the authorizing transaction. Braintree strongly recommends specifying this parameter.\n * @param {callback} callback The second argument, `data`, is the {@link LocalPayment} instance.\n * @example <caption>Using the local payment component to set up an iDEAL button</caption>\n * var idealButton = document.querySelector('.ideal-button');\n *\n * braintree.client.create({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (clientErr, clientInstance) {\n * if (clientErr) {\n * console.error('Error creating client:', clientErr);\n * return;\n * }\n *\n * braintree.localPayment.create({\n * client: clientInstance,\n * merchantAccountId: 'merchantAccountEUR',\n * }, function (localPaymentErr, localPaymentInstance) {\n * if (localPaymentErr) {\n * console.error('Error creating local payment component:', localPaymentErr);\n * return;\n * }\n *\n * idealButton.removeAttribute('disabled');\n *\n * // When the button is clicked, attempt to start the payment flow.\n * idealButton.addEventListener('click', function (event) {\n * // Because this opens a popup, this has to be called as a result of\n * // customer action, like clicking a button. You cannot call this at any time.\n * localPaymentInstance.startPayment({\n * paymentType: 'ideal',\n * amount: '10.67',\n * city: 'Den Haag',\n * countryCode: 'NL',\n * firstName: 'Test',\n * lastName: 'McTester',\n * line1: '123 of 456 Fake Lane',\n * line2: 'Apartment 789',\n * payerEmail: 'payer@example.com',\n * phone: '123456789',\n * postalCode: '1234 AA',\n * currencyCode: 'EUR',\n * onPaymentStart: function (data, continueCallback) {\n * // Do any preprocessing to store the ID and setup webhook\n * // Call start to initiate the popup\n * continueCallback();\n * }\n ** }, function (startPaymentErr, payload) {\n * if (startPaymentErr) {\n * if (startPaymentErr.type !== 'CUSTOMER') {\n * console.error('Error starting payment:', startPaymentErr);\n * }\n * return;\n * }\n *\n * idealButton.setAttribute('disabled', true);\n *\n * console.log(payload.paymentId);\n * });\n * }, false);\n * });\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"Local Payment\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n return createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n });\n })\n .then(function (client) {\n var localPaymentInstance;\n var config = client.getConfiguration();\n\n options.client = client;\n\n if (config.gatewayConfiguration.paypalEnabled !== true) {\n return Promise.reject(\n new BraintreeError(errors.LOCAL_PAYMENT_NOT_ENABLED)\n );\n }\n\n analytics.sendEvent(client, \"local-payment.initialized\");\n\n localPaymentInstance = new LocalPayment(options);\n\n return localPaymentInstance._initialize();\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/analytics\":132,\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./external/local-payment\":176,\"./shared/errors\":178,\"@braintree/wrap-promise\":40}],178:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.LocalPayment - Creation Error Codes\n * @description Errors that occur when [creating the Local Payment component](./module-braintree-web_local-payment.html#.create).\n * @property {MERCHANT} LOCAL_PAYMENT_NOT_ENABLED Occurs when Local Payment is not enabled on the Braintree control panel.\n */\n\n/**\n * @name BraintreeError.LocalPayment - startPayment Error Codes\n * @description Errors that occur when using the [`startPayment` method](./LocalPayment.html#startPayment).\n * @property {MERCHANT} LOCAL_PAYMENT_START_PAYMENT_MISSING_REQUIRED_OPTION Occurs when a startPayment is missing a required option.\n * @property {MERCHANT} LOCAL_PAYMENT_ALREADY_IN_PROGRESS Occurs when a startPayment call is already in progress.\n * @property {MERCHANT} LOCAL_PAYMENT_INVALID_PAYMENT_OPTION Occurs when a startPayment call has an invalid option.\n * @property {NETWORK} LOCAL_PAYMENT_START_PAYMENT_FAILED Occurs when a startPayment call fails.\n * @property {NETWORK} LOCAL_PAYMENT_TOKENIZATION_FAILED Occurs when a startPayment call fails to tokenize the result from authorization.\n * @property {CUSTOMER} LOCAL_PAYMENT_CANCELED Occurs when the customer cancels the Local Payment.\n * @property {CUSTOMER} LOCAL_PAYMENT_WINDOW_CLOSED Occurs when the customer closes the Local Payment window.\n * @property {MERCHANT} LOCAL_PAYMENT_WINDOW_OPEN_FAILED Occurs when the Local Payment window fails to open. Usually because `startPayment` was not called as a direct result of a user action.\n */\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nmodule.exports = {\n LOCAL_PAYMENT_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"LOCAL_PAYMENT_NOT_ENABLED\",\n message: \"LocalPayment is not enabled for this merchant.\",\n },\n LOCAL_PAYMENT_ALREADY_IN_PROGRESS: {\n type: BraintreeError.types.MERCHANT,\n code: \"LOCAL_PAYMENT_ALREADY_IN_PROGRESS\",\n message: \"LocalPayment payment is already in progress.\",\n },\n LOCAL_PAYMENT_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"LOCAL_PAYMENT_CANCELED\",\n message: \"Customer canceled the LocalPayment before authorizing.\",\n },\n LOCAL_PAYMENT_WINDOW_CLOSED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"LOCAL_PAYMENT_WINDOW_CLOSED\",\n message: \"Customer closed LocalPayment window before authorizing.\",\n },\n LOCAL_PAYMENT_WINDOW_OPEN_FAILED: {\n type: BraintreeError.types.MERCHANT,\n code: \"LOCAL_PAYMENT_WINDOW_OPEN_FAILED\",\n message:\n \"LocalPayment window failed to open; make sure startPayment was called in response to a user action.\",\n },\n LOCAL_PAYMENT_START_PAYMENT_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"LOCAL_PAYMENT_START_PAYMENT_FAILED\",\n message: \"LocalPayment startPayment failed.\",\n },\n LOCAL_PAYMENT_START_PAYMENT_MISSING_REQUIRED_OPTION: {\n type: BraintreeError.types.MERCHANT,\n code: \"LOCAL_PAYMENT_START_PAYMENT_MISSING_REQUIRED_OPTION\",\n message: \"Missing required option for startPayment.\",\n },\n LOCAL_PAYMENT_START_PAYMENT_DEFERRED_PAYMENT_FAILED: {\n type: BraintreeError.types.UNKNOWN,\n code: \"LOCAL_PAYMENT_START_PAYMENT_DEFERRED_PAYMENT_FAILED\",\n message: \"LocalPayment startPayment deferred payment failed.\",\n },\n LOCAL_PAYMENT_TOKENIZATION_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"LOCAL_PAYMENT_TOKENIZATION_FAILED\",\n message: \"Could not tokenize user's local payment method.\",\n },\n LOCAL_PAYMENT_INVALID_PAYMENT_OPTION: {\n type: BraintreeError.types.MERCHANT,\n code: \"LOCAL_PAYMENT_INVALID_PAYMENT_OPTION\",\n message: \"Local payment options are invalid.\",\n },\n};\n\n},{\"../../lib/braintree-error\":137}],179:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar frameService = _dereq_(\"../../lib/frame-service/external\");\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar errors = _dereq_(\"../shared/errors\");\nvar VERSION = \"3.103.0\";\nvar methods = _dereq_(\"../../lib/methods\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar analytics = _dereq_(\"../../lib/analytics\");\nvar convertMethodsToError = _dereq_(\"../../lib/convert-methods-to-error\");\nvar convertToBraintreeError = _dereq_(\"../../lib/convert-to-braintree-error\");\nvar constants = _dereq_(\"../shared/constants\");\n\nvar INTEGRATION_TIMEOUT_MS =\n _dereq_(\"../../lib/constants\").INTEGRATION_TIMEOUT_MS;\n\n/**\n * Masterpass Address object.\n * @typedef {object} Masterpass~Address\n * @property {string} countryCodeAlpha2 The customer's country code.\n * @property {string} extendedAddress The customer's extended address.\n * @property {string} locality The customer's locality.\n * @property {string} postalCode The customer's postal code.\n * @property {string} region The customer's region.\n * @property {string} streetAddress The customer's street address.\n */\n\n/**\n * @typedef {object} Masterpass~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {string} description The human readable description.\n * @property {string} type The payment method type, always `MasterpassCard`.\n * @property {object} details Additional account details.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {object} contact The customer's contact information.\n * @property {string} contact.firstName The customer's first name.\n * @property {string} contact.lastName The customer's last name.\n * @property {string} contact.phoneNumber The customer's phone number.\n * @property {string} contact.emailAddress The customer's email address.\n * @property {Masterpass~Address} billingAddress The customer's billing address.\n * @property {Masterpass~Address} shippingAddress The customer's shipping address.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * @class\n * @param {object} options see {@link module:braintree-web/masterpass.create|masterpass.create}\n * @description <strong>You cannot use this constructor directly. Use {@link module:braintree-web/masterpass.create|braintree.masterpass.create} instead.</strong>\n * @classdesc This class represents an Masterpass component. Instances of this class have methods for launching a new window to process a transaction with Masterpass.\n */\nfunction Masterpass(options) {\n var configuration = options.client.getConfiguration();\n\n this._client = options.client;\n this._assetsUrl =\n configuration.gatewayConfiguration.assetsUrl + \"/web/\" + VERSION;\n this._isDebug = configuration.isDebug;\n this._authInProgress = false;\n if (\n window.popupBridge &&\n typeof window.popupBridge.getReturnUrlPrefix === \"function\"\n ) {\n this._callbackUrl = window.popupBridge.getReturnUrlPrefix() + \"return\";\n } else {\n this._callbackUrl =\n this._assetsUrl +\n \"/html/redirect-frame\" +\n (this._isDebug ? \"\" : \".min\") +\n \".html\";\n }\n}\n\nMasterpass.prototype._initialize = function () {\n var self = this;\n\n return new Promise(function (resolve) {\n var failureTimeout = setTimeout(function () {\n analytics.sendEvent(self._client, \"masterpass.load.timed-out\");\n }, INTEGRATION_TIMEOUT_MS);\n\n frameService.create(\n {\n name: constants.LANDING_FRAME_NAME,\n height: constants.POPUP_HEIGHT,\n width: constants.POPUP_WIDTH,\n dispatchFrameUrl:\n self._assetsUrl +\n \"/html/dispatch-frame\" +\n (self._isDebug ? \"\" : \".min\") +\n \".html\",\n openFrameUrl:\n self._assetsUrl +\n \"/html/masterpass-landing-frame\" +\n (self._isDebug ? \"\" : \".min\") +\n \".html\",\n },\n function (service) {\n self._frameService = service;\n clearTimeout(failureTimeout);\n analytics.sendEvent(self._client, \"masterpass.load.succeeded\");\n resolve(self);\n }\n );\n });\n};\n\n/**\n * Launches the Masterpass flow and returns a nonce payload. Only one Masterpass flow should be active at a time. One way to achieve this is to disable your Masterpass button while the flow is open.\n *\n * Braintree will apply these properties in `options.config`. Merchants should not override these values, except for advanced usage.\n * - `environment`\n * - `requestToken`\n * - `callbackUrl`\n * - `merchantCheckoutId`\n * - `allowedCardTypes`\n * - `version`\n *\n * @public\n * @param {object} options All options for initiating the Masterpass payment flow.\n * @param {string} options.currencyCode The currency code to process the payment.\n * @param {string} options.subtotal The amount to authorize for the transaction.\n * @param {object} [options.config] All configuration parameters accepted by Masterpass lightbox, except `function` data type. These options will override the values set by Braintree server. Please see {@link Masterpass Lightbox Parameters|https://developer.mastercard.com/page/masterpass-lightbox-parameters} for more information.\n * @param {object} [options.frameOptions] Used to configure the window that contains the Masterpass login.\n * @param {number} [options.frameOptions.width] Popup width to be used instead of default value (450px).\n * @param {number} [options.frameOptions.height] Popup height to be used instead of default value (660px).\n * @param {number} [options.frameOptions.top] The top position of the popup window to be used instead of default value, that is calculated based on provided height, and parent window size.\n * @param {number} [options.frameOptions.left] The left position to the popup window to be used instead of default value, that is calculated based on provided width, and parent window size.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link Masterpass~tokenizePayload|tokenizePayload}. If no callback is provided, the method will return a Promise that resolves with a {@link Masterpass~tokenizePayload|tokenizePayload}.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * button.addEventListener('click', function () {\n * // Disable the button so that we don't attempt to open multiple popups.\n * button.setAttribute('disabled', 'disabled');\n *\n * // Because tokenize opens a new window, this must be called\n * // as a result of a user action, such as a button click.\n * masterpassInstance.tokenize({\n * currencyCode: 'USD',\n * subtotal: '10.00'\n * }).then(function (payload) {\n * button.removeAttribute('disabled');\n * // Submit payload.nonce to your server\n * }).catch(function (tokenizeError) {\n * button.removeAttribute('disabled');\n * // Handle flow errors or premature flow closure\n *\n * switch (tokenizeErr.code) {\n * case 'MASTERPASS_POPUP_CLOSED':\n * console.error('Customer closed Masterpass popup.');\n * break;\n * case 'MASTERPASS_ACCOUNT_TOKENIZATION_FAILED':\n * console.error('Masterpass tokenization failed. See details:', tokenizeErr.details);\n * break;\n * case 'MASTERPASS_FLOW_FAILED':\n * console.error('Unable to initialize Masterpass flow. Are your options correct?', tokenizeErr.details);\n * break;\n * default:\n * console.error('Error!', tokenizeErr);\n * }\n * });\n * });\n */\nMasterpass.prototype.tokenize = function (options) {\n var self = this;\n\n if (!options || hasMissingOption(options)) {\n return Promise.reject(\n new BraintreeError(errors.MASTERPASS_TOKENIZE_MISSING_REQUIRED_OPTION)\n );\n }\n\n if (self._authInProgress) {\n return Promise.reject(\n new BraintreeError(errors.MASTERPASS_TOKENIZATION_ALREADY_IN_PROGRESS)\n );\n }\n\n return new Promise(function (resolve, reject) {\n self._navigateFrameToLoadingPage(options).catch(reject);\n // This MUST happen after _navigateFrameToLoadingPage for Metro browsers to work.\n self._frameService.open(\n options.frameOptions,\n self._createFrameOpenHandler(resolve, reject)\n );\n });\n};\n\nMasterpass.prototype._navigateFrameToLoadingPage = function (options) {\n var self = this;\n\n this._authInProgress = true;\n\n return this._client\n .request({\n method: \"post\",\n endpoint: \"masterpass/request_token\",\n data: {\n requestToken: {\n originUrl: window.location.protocol + \"//\" + window.location.hostname,\n subtotal: options.subtotal,\n currencyCode: options.currencyCode,\n callbackUrl: this._callbackUrl,\n },\n },\n })\n .then(function (response) {\n var redirectUrl =\n self._assetsUrl +\n \"/html/masterpass-loading-frame\" +\n (self._isDebug ? \"\" : \".min\") +\n \".html?\";\n var gatewayConfiguration =\n self._client.getConfiguration().gatewayConfiguration;\n var config = options.config || {};\n var queryParams;\n\n queryParams = {\n environment: gatewayConfiguration.environment,\n requestToken: response.requestToken,\n callbackUrl: self._callbackUrl,\n merchantCheckoutId: gatewayConfiguration.masterpass.merchantCheckoutId,\n allowedCardTypes: gatewayConfiguration.masterpass.supportedNetworks,\n version: constants.MASTERPASS_VERSION,\n };\n\n Object.keys(config).forEach(function (key) {\n if (typeof config[key] !== \"function\") {\n queryParams[key] = config[key];\n }\n });\n\n redirectUrl += Object.keys(queryParams)\n .map(function (key) {\n return key + \"=\" + queryParams[key];\n })\n .join(\"&\");\n\n self._frameService.redirect(redirectUrl);\n })\n .catch(function (err) {\n var status = err.details && err.details.httpStatus;\n\n self._closeWindow();\n\n if (status === 422) {\n return Promise.reject(\n convertToBraintreeError(err, errors.MASTERPASS_INVALID_PAYMENT_OPTION)\n );\n }\n\n return Promise.reject(\n convertToBraintreeError(err, errors.MASTERPASS_FLOW_FAILED)\n );\n });\n};\n\nMasterpass.prototype._createFrameOpenHandler = function (resolve, reject) {\n var self = this;\n\n if (window.popupBridge) {\n return function (popupBridgeErr, payload) {\n self._authInProgress = false;\n\n if (popupBridgeErr) {\n analytics.sendEvent(\n self._client,\n \"masterpass.tokenization.closed-popupbridge.by-user\"\n );\n reject(\n convertToBraintreeError(\n popupBridgeErr,\n errors.MASTERPASS_POPUP_CLOSED\n )\n );\n\n return;\n } else if (!payload.queryItems) {\n analytics.sendEvent(\n self._client,\n \"masterpass.tokenization.failed-popupbridge\"\n );\n reject(new BraintreeError(errors.MASTERPASS_FLOW_FAILED));\n\n return;\n }\n\n self._tokenizeMasterpass(payload.queryItems).then(resolve).catch(reject);\n };\n }\n\n return function (frameServiceErr, payload) {\n if (frameServiceErr) {\n self._authInProgress = false;\n\n if (frameServiceErr.code === \"FRAME_SERVICE_FRAME_CLOSED\") {\n analytics.sendEvent(\n self._client,\n \"masterpass.tokenization.closed.by-user\"\n );\n reject(new BraintreeError(errors.MASTERPASS_POPUP_CLOSED));\n\n return;\n }\n\n if (\n frameServiceErr.code &&\n frameServiceErr.code.indexOf(\"FRAME_SERVICE_FRAME_OPEN_FAILED\") > -1\n ) {\n analytics.sendEvent(\n self._client,\n \"masterpass.tokenization.failed.to-open\"\n );\n reject(\n new BraintreeError({\n code: errors.MASTERPASS_POPUP_OPEN_FAILED.code,\n type: errors.MASTERPASS_POPUP_OPEN_FAILED.type,\n message: errors.MASTERPASS_POPUP_OPEN_FAILED.message,\n details: {\n originalError: frameServiceErr,\n },\n })\n );\n\n return;\n }\n\n analytics.sendEvent(self._client, \"masterpass.tokenization.failed\");\n self._closeWindow();\n reject(\n convertToBraintreeError(frameServiceErr, errors.MASTERPASS_FLOW_FAILED)\n );\n\n return;\n }\n\n self._tokenizeMasterpass(payload).then(resolve).catch(reject);\n };\n};\n\nMasterpass.prototype._tokenizeMasterpass = function (payload) {\n var self = this;\n\n if (payload.mpstatus !== \"success\") {\n analytics.sendEvent(self._client, \"masterpass.tokenization.closed.by-user\");\n self._closeWindow();\n\n return Promise.reject(new BraintreeError(errors.MASTERPASS_POPUP_CLOSED));\n }\n\n if (isMissingRequiredPayload(payload)) {\n analytics.sendEvent(\n self._client,\n \"masterpass.tokenization.closed.missing-payload\"\n );\n self._closeWindow();\n\n return Promise.reject(\n new BraintreeError(errors.MASTERPASS_POPUP_MISSING_REQUIRED_PARAMETERS)\n );\n }\n\n return self._client\n .request({\n endpoint: \"payment_methods/masterpass_cards\",\n method: \"post\",\n data: {\n masterpassCard: {\n checkoutResourceUrl: payload.checkout_resource_url,\n requestToken: payload.oauth_token,\n verifierToken: payload.oauth_verifier,\n },\n },\n })\n .then(function (response) {\n self._closeWindow();\n if (window.popupBridge) {\n analytics.sendEvent(\n self._client,\n \"masterpass.tokenization.success-popupbridge\"\n );\n } else {\n analytics.sendEvent(self._client, \"masterpass.tokenization.success\");\n }\n\n return response.masterpassCards[0];\n })\n .catch(function (tokenizeErr) {\n self._closeWindow();\n if (window.popupBridge) {\n analytics.sendEvent(\n self._client,\n \"masterpass.tokenization.failed-popupbridge\"\n );\n } else {\n analytics.sendEvent(self._client, \"masterpass.tokenization.failed\");\n }\n\n return Promise.reject(\n convertToBraintreeError(\n tokenizeErr,\n errors.MASTERPASS_ACCOUNT_TOKENIZATION_FAILED\n )\n );\n });\n};\n\nfunction isMissingRequiredPayload(payload) {\n return [\n payload.oauth_verifier,\n payload.oauth_token,\n payload.checkout_resource_url,\n ].some(function (element) {\n return element == null || element === \"null\";\n });\n}\n\nMasterpass.prototype._closeWindow = function () {\n this._authInProgress = false;\n this._frameService.close();\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/masterpass.create|create}.\n * @public\n * @param {callback} [callback] Called on completion. If no callback is provided, `teardown` returns a promise.\n * @example\n * masterpassInstance.teardown();\n * @example <caption>With callback</caption>\n * masterpassInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nMasterpass.prototype.teardown = function () {\n var self = this;\n\n return new Promise(function (resolve) {\n self._frameService.teardown();\n\n convertMethodsToError(self, methods(Masterpass.prototype));\n\n analytics.sendEvent(self._client, \"masterpass.teardown-completed\");\n\n resolve();\n });\n};\n\nfunction hasMissingOption(options) {\n var i, option;\n\n for (i = 0; i < constants.REQUIRED_OPTIONS_FOR_TOKENIZE.length; i++) {\n option = constants.REQUIRED_OPTIONS_FOR_TOKENIZE[i];\n\n if (!options.hasOwnProperty(option)) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = wrapPromise.wrapPrototype(Masterpass);\n\n},{\"../../lib/analytics\":132,\"../../lib/braintree-error\":137,\"../../lib/constants\":139,\"../../lib/convert-methods-to-error\":140,\"../../lib/convert-to-braintree-error\":141,\"../../lib/frame-service/external\":152,\"../../lib/methods\":168,\"../shared/constants\":182,\"../shared/errors\":183,\"@braintree/wrap-promise\":40}],180:[function(_dereq_,module,exports){\n\"use strict\";\n/** @module braintree-web/masterpass\n * @description Processes Masterpass. *This component is currently in beta and is subject to change.*\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar browserDetection = _dereq_(\"./shared/browser-detection\");\nvar Masterpass = _dereq_(\"./external/masterpass\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar VERSION = \"3.103.0\";\nvar errors = _dereq_(\"./shared/errors\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {callback} [callback] The second argument, `data`, is the {@link Masterpass} instance. If no callback is passed in, the create function returns a promise that resolves the {@link Masterpass} instance.\n * @example\n * braintree.masterpass.create({\n * client: clientInstance\n * }, function (createErr, masterpassInstance) {\n * if (createErr) {\n * if (createErr.code === 'MASTERPASS_BROWSER_NOT_SUPPORTED') {\n * console.error('This browser is not supported.');\n * } else {\n * console.error('Error!', createErr);\n * }\n * return;\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"Masterpass\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n if (!isSupported()) {\n return Promise.reject(\n new BraintreeError(errors.MASTERPASS_BROWSER_NOT_SUPPORTED)\n );\n }\n\n return Promise.resolve();\n })\n .then(function () {\n return createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n });\n })\n .then(function (client) {\n var masterpassInstance, configuration;\n\n options.client = client;\n configuration = options.client.getConfiguration().gatewayConfiguration;\n\n if (!configuration.masterpass) {\n return Promise.reject(\n new BraintreeError(errors.MASTERPASS_NOT_ENABLED)\n );\n }\n\n masterpassInstance = new Masterpass(options);\n\n return masterpassInstance._initialize();\n });\n}\n\n/**\n * @static\n * @function isSupported\n * @description Returns true if Masterpass supports this browser.\n * @example\n * if (braintree.masterpass.isSupported()) {\n * // Add Masterpass button to the page\n * } else {\n * // Hide Masterpass payment option\n * }\n * @returns {Boolean} Returns true if Masterpass supports this browser.\n */\nfunction isSupported() {\n return Boolean(window.popupBridge || browserDetection.supportsPopups());\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n isSupported: isSupported,\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./external/masterpass\":179,\"./shared/browser-detection\":181,\"./shared/errors\":183,\"@braintree/wrap-promise\":40}],181:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n supportsPopups: _dereq_(\"@braintree/browser-detection/supports-popups\"),\n};\n\n},{\"@braintree/browser-detection/supports-popups\":29}],182:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n LANDING_FRAME_NAME: \"braintreemasterpasslanding\",\n POPUP_WIDTH: 450,\n POPUP_HEIGHT: 660,\n MASTERPASS_VERSION: \"v6\",\n REQUIRED_OPTIONS_FOR_TOKENIZE: [\"subtotal\", \"currencyCode\"],\n};\n\n},{}],183:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Masterpass - Creation Error Codes\n * @description Errors that occur when [creating the Masterpass component](./module-braintree-web_masterpass#.create).\n * @property {CUSTOMER} MASTERPASS_BROWSER_NOT_SUPPORTED Occurs when browser is not a supported browser for Masterpass.\n * @property {MERCHANT} MASTERPASS_NOT_ENABLED Occurs when Masterpass is not enabled in the Braintree control panel.\n */\n\n/**\n * @name BraintreeError.Masterpass - Tokenize Error Codes\n * @description Errors that occur when [tokenizing](./Masterpass.html#tokenize).\n * @property {MERCHANT} MASTERPASS_TOKENIZE_MISSING_REQUIRED_OPTION Occurs when tokenize is called without a required option.\n * @property {MERCHANT} MASTERPASS_TOKENIZATION_ALREADY_IN_PROGRESS Occurs if tokenization flow is initialized while another flow is already in progress.\n * @property {NETWORK} MASTERPASS_ACCOUNT_TOKENIZATION_FAILED Occurs when tokenization of Masterpass details fails.\n * @property {MERCHANT} MASTERPASS_POPUP_OPEN_FAILED Occurs when the popup fails to open.\n * @property {MERCHANT} MASTERPASS_POPUP_MISSING_REQUIRED_PARAMETERS Occurs when Masterpass is missing required parameters for tokenization.\n * @property {CUSTOMER} MASTERPASS_POPUP_CLOSED Occurs when the popup is closed by the customer.\n * @property {MERCHANT} MASTERPASS_INVALID_PAYMENT_OPTION Occurs when an invalid payment option is used to tokenize Masterpass.\n * @property {NETWORK} MASTERPASS_FLOW_FAILED Occurs when an error is returned from request to tokenize.\n */\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nmodule.exports = {\n MASTERPASS_BROWSER_NOT_SUPPORTED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"MASTERPASS_BROWSER_NOT_SUPPORTED\",\n message: \"Browser is not supported.\",\n },\n MASTERPASS_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"MASTERPASS_NOT_ENABLED\",\n message: \"Masterpass is not enabled for this merchant.\",\n },\n MASTERPASS_TOKENIZE_MISSING_REQUIRED_OPTION: {\n type: BraintreeError.types.MERCHANT,\n code: \"MASTERPASS_TOKENIZE_MISSING_REQUIRED_OPTION\",\n message: \"Missing required option for tokenize.\",\n },\n MASTERPASS_TOKENIZATION_ALREADY_IN_PROGRESS: {\n type: BraintreeError.types.MERCHANT,\n code: \"MASTERPASS_TOKENIZATION_ALREADY_IN_PROGRESS\",\n message: \"Masterpass tokenization is already in progress.\",\n },\n MASTERPASS_ACCOUNT_TOKENIZATION_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"MASTERPASS_ACCOUNT_TOKENIZATION_FAILED\",\n message: \"Could not tokenize user's Masterpass account.\",\n },\n MASTERPASS_POPUP_OPEN_FAILED: {\n type: BraintreeError.types.MERCHANT,\n code: \"MASTERPASS_POPUP_OPEN_FAILED\",\n message:\n \"Masterpass popup failed to open. Make sure to tokenize in response to a user action, such as a click.\",\n },\n MASTERPASS_POPUP_MISSING_REQUIRED_PARAMETERS: {\n type: BraintreeError.types.MERCHANT,\n code: \"MASTERPASS_POPUP_MISSING_REQUIRED_PARAMETERS\",\n message:\n \"Masterpass popup failed to return all required parameters needed to continue tokenization.\",\n },\n MASTERPASS_POPUP_CLOSED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"MASTERPASS_POPUP_CLOSED\",\n message: \"Customer closed Masterpass popup before authorizing.\",\n },\n MASTERPASS_INVALID_PAYMENT_OPTION: {\n type: BraintreeError.types.MERCHANT,\n code: \"MASTERPASS_INVALID_PAYMENT_OPTION\",\n message: \"Masterpass payment options are invalid.\",\n },\n MASTERPASS_FLOW_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"MASTERPASS_FLOW_FAILED\",\n message: \"Could not initialize Masterpass flow.\",\n },\n};\n\n},{\"../../lib/braintree-error\":137}],184:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar analytics = _dereq_(\"../../lib/analytics\");\nvar assign = _dereq_(\"../../lib/assign\").assign;\nvar Bus = _dereq_(\"framebus\");\nvar convertMethodsToError = _dereq_(\"../../lib/convert-methods-to-error\");\nvar generateGooglePayConfiguration = _dereq_(\"../../lib/generate-google-pay-configuration\");\nvar iFramer = _dereq_(\"@braintree/iframer\");\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar useMin = _dereq_(\"../../lib/use-min\");\nvar methods = _dereq_(\"../../lib/methods\");\nvar EventEmitter = _dereq_(\"@braintree/event-emitter\");\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar VERSION = \"3.103.0\";\nvar constants = _dereq_(\"../shared/constants\");\nvar events = constants.events;\nvar errors = constants.errors;\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @typedef {object} PaymentRequestComponent~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {object} details Additional account details.\n * @property {string} details.bin The BIN number of the card..\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {object} details.rawPaymentResponse The raw payment response from the payment request, with sensitive card details removed.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, `CreditCard` or `AndroidPayCard`.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * @typedef {object} PaymentRequestComponent~paymentRequestConfiguration\n * @property {object} configuration.details The payment details. For details on this object, see [Google's PaymentRequest API documentation](https://developers.google.com/web/fundamentals/discovery-and-monetization/payment-request/deep-dive-into-payment-request#defining_payment_details).\n * @property {array} [configuration.supportedPaymentMethods] The supported payment methods. If not passed in, the supported payment methods from the merchant account that generated the authorization for the client will be used. For details on this array, see [Google's PaymentRequest API documentation](https://developers.google.com/web/fundamentals/discovery-and-monetization/payment-request/deep-dive-into-payment-request#defining_supported_payment_methods).\n * @property {object} [configuration.options] Additional payment request options. For details on this object, see [Google's PaymentRequest API documentation](https://developers.google.com/web/fundamentals/discovery-and-monetization/payment-request/deep-dive-into-payment-request#defining_options_optional).\n */\n\n/**\n * @typedef {object} PaymentRequestComponent~shippingEventObject\n * @description The event payload sent from {@link PaymentRequestComponent#on|on}.\n * @property {object} target An object which contains data about the event.\n * @property {function} updateWith A method to call with the updated Payment Request details.\n */\n\n/**\n * @name PaymentRequestComponent#on\n * @function\n * @param {string} event The name of the event to which you are subscribing.\n * @param {function} handler A callback to handle the event.\n * @description Subscribes a handler function to a named event. `event` should be {@link PaymentRequestComponent#event:shippingAddressChange|shippingAddressChange} or {@link PaymentRequestComponent#event:shippingOptionChange|shippingOptionChange}. For convenience, you can also listen on `shippingaddresschange` or `shippingoptionchange` to match the event listeners in the [Payment Request API documentation](https://developers.google.com/web/fundamentals/payments/deep-dive-into-payment-request#shipping_in_payment_request_api). Events will emit a {@link PaymentRequestComponent~shippingEventObject|shippingEventObject}.\n * @example\n * <caption>Listening to a Payment Request event, in this case 'shippingAddressChange'</caption>\n * braintree.paymentRequest.create({ ... }, function (createErr, paymentRequestInstance) {\n * paymentRequestInstance.on('shippingAddressChange', function (event) {\n * console.log(event.target.shippingAddress);\n * });\n * });\n * @returns {void}\n */\n\n/**\n * @name PaymentRequestComponent#off\n * @function\n * @param {string} event The name of the event to which you are unsubscribing.\n * @param {function} handler The callback for the event you are unsubscribing from.\n * @description Unsubscribes the handler function to a named event.\n * @example\n * <caption>Subscribing and then unsubscribing from a Payment Request event, in this case 'shippingAddressChange'</caption>\n * braintree.paymentRequest.create({ ... }, function (createErr, paymentRequestInstance) {\n * var callback = function (event) {\n * console.log(event.target.shippingAddress);\n * };\n * paymentRequestInstance.on('shippingAddressChange', callback);\n *\n * // later on\n * paymentRequestInstance.off('shippingAddressChange', callback);\n * });\n * @returns {void}\n */\n\n/**\n * This event is emitted when the customer selects a shipping address.\n * @event PaymentRequestComponent#shippingAddressChange\n * @type {PaymentRequestComponent~shippingEventObject}\n * @example\n * <caption>Listening to a shipping address change event</caption>\n * braintree.paymentRequest.create({ ... }, function (createErr, paymentRequestInstance) {\n * paymentRequestInstance.on('shippingAddressChange', function (event) {\n * // validate event.target.shippingAddress if needed\n *\n * event.updateWith(paymentRequestDetails);\n * });\n * });\n */\n\n/**\n * This event is emitted when the customer selects a shipping option.\n * @event PaymentRequestComponent#shippingOptionChange\n * @type {PaymentRequestComponent~shippingEventObject}\n * @example\n * <caption>Listening to a shipping option change event</caption>\n * braintree.paymentRequest.create({ ... }, function (createErr, paymentRequestInstance) {\n * paymentRequestInstance.on('shippingOptionChange', function (event) {\n * // validate event.target.shippingOption if needed\n *\n * paymentRequestDetails.shippingOptions.forEach(function (option) {\n * option.selected = option.id === event.target.shippingOption;\n * });\n *\n * event.updateWith(paymentRequestDetails);\n * });\n * });\n */\n\nvar CARD_TYPE_MAPPINGS = {\n Visa: \"visa\",\n MasterCard: \"mastercard\",\n \"American Express\": \"amex\",\n \"Diners Club\": \"diners\",\n Discover: \"discover\",\n JCB: \"jcb\",\n UnionPay: \"unionpay\",\n Maestro: \"maestro\",\n};\n\nvar BRAINTREE_GOOGLE_PAY_MERCHANT_ID = \"18278000977346790994\";\n\nfunction composeUrl(assetsUrl, componentId, isDebug) {\n var baseUrl = assetsUrl;\n\n // endRemoveIf(production)\n\n return (\n baseUrl +\n \"/web/\" +\n VERSION +\n \"/html/payment-request-frame\" +\n useMin(isDebug) +\n \".html#\" +\n componentId\n );\n}\n\n/**\n * @class PaymentRequestComponent\n * @param {object} options The Payment Request Component {@link module:braintree-web/payment-request.create create} options.\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/payment-request.create|braintree-web.payment-request.create} instead.</strong>\n *\n * @classdesc This class represents a Payment Request component produced by {@link module:braintree-web/payment-request.create|braintree-web/payment-request.create}. Instances of this class have methods for initializing a Payment Request.\n *\n * **Note:** This component is currently in beta and the API may include breaking changes when upgrading. Please review the [Changelog](https://github.com/braintree/braintree-web/blob/main/CHANGELOG.md) for upgrade steps whenever you upgrade the version of braintree-web.\n */\nfunction PaymentRequestComponent(options) {\n var enabledPaymentMethods = options.enabledPaymentMethods || {};\n\n EventEmitter.call(this);\n\n this._componentId = uuid();\n this._client = options.client;\n this._enabledPaymentMethods = {\n basicCard: enabledPaymentMethods.basicCard !== false,\n googlePay: enabledPaymentMethods.googlePay !== false,\n };\n this._googlePayVersion = options.googlePayVersion === 2 ? 2 : 1;\n this._googleMerchantId = BRAINTREE_GOOGLE_PAY_MERCHANT_ID;\n this._supportedPaymentMethods =\n this._constructDefaultSupportedPaymentMethods();\n this._defaultSupportedPaymentMethods = Object.keys(\n this._supportedPaymentMethods\n ).map(\n function (key) {\n return this._supportedPaymentMethods[key];\n }.bind(this)\n );\n this._bus = new Bus({ channel: this._componentId });\n}\n\nEventEmitter.createChild(PaymentRequestComponent);\n\nPaymentRequestComponent.prototype._constructDefaultSupportedPaymentMethods =\n function () {\n var configuration = this._client.getConfiguration();\n var androidPayConfiguration = configuration.gatewayConfiguration.androidPay;\n var cardConfiguration = configuration.gatewayConfiguration.creditCards;\n var supportedPaymentMethods = {};\n\n if (\n this._enabledPaymentMethods.basicCard &&\n cardConfiguration &&\n cardConfiguration.supportedCardTypes.length > 0\n ) {\n supportedPaymentMethods.basicCard = {\n supportedMethods: \"basic-card\",\n data: {\n supportedNetworks: cardConfiguration.supportedCardTypes.reduce(\n function (types, cardType) {\n if (cardType in CARD_TYPE_MAPPINGS) {\n types.push(CARD_TYPE_MAPPINGS[cardType]);\n }\n\n return types;\n },\n []\n ),\n },\n };\n }\n\n if (\n this._enabledPaymentMethods.googlePay &&\n androidPayConfiguration &&\n androidPayConfiguration.enabled\n ) {\n supportedPaymentMethods.googlePay = {\n supportedMethods: \"https://google.com/pay\",\n data: generateGooglePayConfiguration(\n configuration,\n this._googlePayVersion,\n this._googleMerchantId\n ),\n };\n }\n\n return supportedPaymentMethods;\n };\n\nPaymentRequestComponent.prototype.initialize = function () {\n var clientConfiguration = this._client.getConfiguration();\n var self = this;\n\n this._frame = iFramer({\n allowPaymentRequest: true,\n name: \"braintree-payment-request-frame\",\n class: \"braintree-payment-request-frame\",\n height: 0,\n width: 0,\n style: {\n position: \"absolute\",\n left: \"-9999px\",\n },\n title: \"Secure Payment Frame\",\n });\n\n if (this._defaultSupportedPaymentMethods.length === 0) {\n return Promise.reject(\n new BraintreeError(\n errors.PAYMENT_REQUEST_NO_VALID_SUPPORTED_PAYMENT_METHODS\n )\n );\n }\n\n return new Promise(function (resolve) {\n self._bus.on(events.FRAME_READY, function (reply) {\n reply(self._client);\n });\n self._bus.on(events.FRAME_CAN_MAKE_REQUESTS, function () {\n analytics.sendEvent(self._client, \"payment-request.initialized\");\n self._bus.on(events.SHIPPING_ADDRESS_CHANGE, function (shippingAddress) {\n var shippingAddressChangeEvent = {\n target: {\n shippingAddress: shippingAddress,\n },\n updateWith: function (paymentDetails) {\n self._bus.emit(events.UPDATE_SHIPPING_ADDRESS, paymentDetails);\n },\n };\n\n self._emit(\"shippingAddressChange\", shippingAddressChangeEvent);\n self._emit(\"shippingaddresschange\", shippingAddressChangeEvent);\n });\n self._bus.on(events.SHIPPING_OPTION_CHANGE, function (shippingOption) {\n var shippingOptionChangeEvent = {\n target: {\n shippingOption: shippingOption,\n },\n updateWith: function (paymentDetails) {\n self._bus.emit(events.UPDATE_SHIPPING_OPTION, paymentDetails);\n },\n };\n\n self._emit(\"shippingOptionChange\", shippingOptionChangeEvent);\n self._emit(\"shippingoptionchange\", shippingOptionChangeEvent);\n });\n resolve(self);\n });\n\n // TODO - We may need to apply the same setTimeout hack that Hosted Fields\n // uses for iframes to load correctly in Edge. See:\n // https://github.com/braintree/braintree-web/blob/0c951e5f9859c606652485de14188b6bd6656677/src/hosted-fields/external/hosted-fields.js#L449-L469\n self._frame.src = composeUrl(\n clientConfiguration.gatewayConfiguration.assetsUrl,\n self._componentId,\n clientConfiguration.isDebug\n );\n document.body.appendChild(self._frame);\n });\n};\n\n/**\n * Create an object to pass into tokenize to specify a custom configuration. If no overrides are provided, the default configuration will be provided.\n * @public\n * @param {string} type The supported payment method type. Possible values are `basicCard` and `googlePay`.\n * If no type is provided, the function will throw an error. If the type provided is not an enabled payment method for the merchant account , the function will throw an error.\n * @param {object} [overrides] The configuration overrides for the [data property on the supported payment methods objects](https://developers.google.com/web/fundamentals/payments/deep-dive-into-payment-request). If not passed in, the default configuration for the specified type will be provided. If a property is not provided, the value from the default configuration will be used.\n * @example <caption>Getting the default configuration for a specified type</caption>\n * var configuration = paymentRequestInstance.createSupportedPaymentMethodsConfiguration('basicCard');\n *\n * configuration.supportedMethods; // 'basic-card'\n * configuration.data.supportedNetworks; // ['visa', 'mastercard', 'amex'] <- whatever the supported card networks for the merchant account are\n * @example <caption>Specifying overrides</caption>\n * var configuration = paymentRequestInstance.createSupportedPaymentMethodsConfiguration('basicCard', {\n * supportedNetworks: ['visa'],\n * supportedTypes: ['credit', 'debit']\n * });\n *\n * configuration.supportedMethods; // 'basic-card'\n * configuration.data.supportedNetworks; // ['visa']\n * configuration.data.supportedTypes; // ['credit', 'debit']\n * @returns {object} Returns a configuration object for use in the tokenize function.\n */\nPaymentRequestComponent.prototype.createSupportedPaymentMethodsConfiguration =\n function (type, overrides) {\n var configuration;\n\n if (!type) {\n throw new BraintreeError(\n errors.PAYMENT_REQUEST_CREATE_SUPPORTED_PAYMENT_METHODS_CONFIGURATION_MUST_INCLUDE_TYPE\n );\n }\n\n if (!this._enabledPaymentMethods[type]) {\n throw new BraintreeError(\n errors.PAYMENT_REQUEST_CREATE_SUPPORTED_PAYMENT_METHODS_CONFIGURATION_TYPE_NOT_ENABLED\n );\n }\n\n configuration = assign({}, this._supportedPaymentMethods[type]);\n configuration.data = assign({}, configuration.data, overrides);\n\n return configuration;\n };\n\n/**\n * Tokenizes a Payment Request\n * @public\n * @param {object} configuration A {@link PaymentRequestComponent~paymentRequestConfiguration|paymentRequestConfiguration}.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link PaymentRequest~paymentPayload|paymentPayload}. If no callback is provided, `tokenize` returns a function that resolves with a {@link PaymentRequestComponent~tokenizePayload|tokenizePayload}.\n * @example\n * paymentRequestInstance.tokenize({\n * details: {\n * total: {\n * label: 'Price',\n * amount: {\n * currency: 'USD',\n * value: '100.00'\n * }\n * }\n * }\n * }).then(function (payload) {\n * // send payload.nonce to server\n *\n * // examine the raw response (with card details removed for security) from the payment request\n * console.log(payload.details.rawPaymentResponse);\n * }).catch(function (err) {\n * if (err.code === 'PAYMENT_REQUEST_CANCELED') {\n * // payment request was canceled by user\n * } else {\n * // an error occurred while processing\n * }\n * });\n * @example <caption>Tokenize only Visa cards</caption>\n * var basicCardConfiguration = paymentRequestInstance.createSupportedPaymentMethodsConfiguration('basicCard', {\n * supportedNetworks: ['visa']\n * };\n *\n * paymentRequestInstance.tokenize({\n * supportedPaymentMethods: [basicCardConfiguration],\n * details: {\n * total: {\n * label: 'Price',\n * amount: {\n * currency: 'USD',\n * value: '100.00'\n * }\n * }\n * }\n * }).then(function (payload) {\n * // send payload.nonce to your server\n * });\n * @example <caption>Include payment request options</caption>\n * paymentRequestInstance.tokenize({\n * details: {\n * total: {\n * label: 'Price',\n * amount: {\n * currency: 'USD',\n * value: '100.00'\n * }\n * }\n * },\n * options: {\n * requestPayerName: true,\n * requestPayerPhone: true,\n * requestPayerEmail: true\n * }\n * }).then(function (payload) {\n * // send payload.nonce to your server\n * // collect additional info from the raw response\n * console.log(payload.details.rawPaymentResponse);\n * });\n * @example <caption>Request Shipping Information</caption>\n * var shippingOptions = [\n * {\n * id: 'economy',\n * label: 'Economy Shipping (5-7 Days)',\n * amount: {\n * currency: 'USD',\n * value: '0',\n * },\n * }, {\n * id: 'express',\n * label: 'Express Shipping (2-3 Days)',\n * amount: {\n * currency: 'USD',\n * value: '5',\n * },\n * }, {\n * id: 'next-day',\n * label: 'Next Day Delivery',\n * amount: {\n * currency: 'USD',\n * value: '12',\n * },\n * },\n * ];\n * var paymentDetails = {\n * \t total: {\n * label: 'Total',\n * amount: {\n * currency: 'USD',\n * value: '10.00',\n * }\n * },\n * shippingOptions: shippingOptions\n * };\n *\n * paymentRequestInstance.on('shippingAddressChange', function (event) {\n * // validate shipping address on event.target.shippingAddress\n * // make changes to the paymentDetails or shippingOptions if necessary\n *\n * event.updateWith(paymentDetails)\n * });\n *\n * paymentRequestInstance.on('shippingOptionChange', function (event) {\n * shippingOptions.forEach(function (option) {\n * option.selected = option.id === event.target.shippingOption;\n * });\n *\n * event.updateWith(paymentDetails)\n * });\n *\n * paymentRequestInstance.tokenize({\n * details: paymentDetails,\n * options: {\n * requestShipping: true\n * }\n * }).then(function (payload) {\n * // send payload.nonce to your server\n * // collect shipping information from payload\n * console.log(payload.details.rawPaymentResponse.shippingAddress);\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPaymentRequestComponent.prototype.tokenize = function (configuration) {\n var self = this;\n\n // NEXT_MAJOR_VERSION fail early if a payment method is passed in\n // that the component does not support\n return new Promise(function (resolve, reject) {\n self._bus.emit(\n events.PAYMENT_REQUEST_INITIALIZED,\n {\n supportedPaymentMethods:\n configuration.supportedPaymentMethods ||\n self._defaultSupportedPaymentMethods,\n details: configuration.details,\n options: configuration.options,\n },\n function (response) {\n var rawError = response[0];\n var payload = response[1];\n\n if (rawError) {\n reject(self._formatTokenizationError(rawError));\n\n return;\n }\n\n analytics.sendEvent(self._client, \"payment-request.tokenize.succeeded\");\n resolve({\n nonce: payload.nonce,\n type: payload.type,\n description: payload.description,\n details: {\n rawPaymentResponse: payload.details.rawPaymentResponse,\n cardType: payload.details.cardType,\n lastFour: payload.details.lastFour,\n lastTwo: payload.details.lastTwo,\n },\n binData: payload.binData,\n });\n }\n );\n });\n};\n\n/**\n * Check if the customer can make payments.\n * @public\n * @param {object} configuration A {@link PaymentRequestComponent~paymentRequestConfiguration|paymentRequestConfiguration}.\n * @param {callback} [callback] Called on completion.\n * @example\n * var paymentDetails = {\n * \t total: {\n * label: 'Total',\n * amount: {\n * currency: 'USD',\n * value: '10.00',\n * }\n * }\n * };\n *\n * paymentRequestInstance.canMakePayment({\n * details: paymentDetails\n * }).then(function (result) {\n * if (result) {\n * // set up payment request button\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPaymentRequestComponent.prototype.canMakePayment = function (configuration) {\n var self = this;\n var unsupportedPaymentMethod;\n\n // NEXT_MAJOR_VERSION Move this check to component creation\n if (!window.PaymentRequest) {\n analytics.sendEvent(\n self._client,\n \"payment-request.can-make-payment.not-available\"\n );\n\n return Promise.resolve(false);\n }\n\n if (configuration.supportedPaymentMethods) {\n configuration.supportedPaymentMethods.forEach(function (config) {\n var supportedMethods = config.supportedMethods;\n\n if (!(supportedMethods in constants.SUPPORTED_METHODS)) {\n unsupportedPaymentMethod = supportedMethods;\n }\n });\n\n if (unsupportedPaymentMethod) {\n return Promise.reject(\n new BraintreeError({\n type: errors.PAYMENT_REQUEST_UNSUPPORTED_PAYMENT_METHOD.type,\n code: errors.PAYMENT_REQUEST_UNSUPPORTED_PAYMENT_METHOD.code,\n message:\n unsupportedPaymentMethod + \" is not a supported payment method.\",\n })\n );\n }\n }\n\n return new Promise(function (resolve, reject) {\n self._bus.emit(\n events.CAN_MAKE_PAYMENT,\n {\n supportedPaymentMethods:\n configuration.supportedPaymentMethods ||\n self._defaultSupportedPaymentMethods,\n details: configuration.details,\n options: configuration.options,\n },\n function (response) {\n var error = response[0];\n var payload = response[1];\n\n if (error) {\n reject(self._formatCanMakePaymentError(error));\n\n return;\n }\n\n analytics.sendEvent(\n self._client,\n \"payment-request.can-make-payment.\" + payload\n );\n\n resolve(payload);\n }\n );\n });\n};\n\n/**\n * Cleanly remove anything set up by {@link module:braintree-web/payment-request.create|create}.\n * @public\n * @param {callback} [callback] Called on completion.\n * @example\n * paymentRequestInstance.teardown();\n * @example <caption>With callback</caption>\n * paymentRequestInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPaymentRequestComponent.prototype.teardown = function () {\n this._bus.teardown();\n this._frame.parentNode.removeChild(this._frame);\n\n convertMethodsToError(this, methods(PaymentRequestComponent.prototype));\n\n analytics.sendEvent(this._client, \"payment-request.teardown-completed\");\n\n return Promise.resolve();\n};\n\nPaymentRequestComponent.prototype._formatTokenizationError = function (error) {\n var formattedError;\n\n switch (error.name) {\n case \"AbortError\":\n formattedError = new BraintreeError({\n type: errors.PAYMENT_REQUEST_CANCELED.type,\n code: errors.PAYMENT_REQUEST_CANCELED.code,\n message: errors.PAYMENT_REQUEST_CANCELED.message,\n details: {\n originalError: error,\n },\n });\n\n analytics.sendEvent(this._client, \"payment-request.tokenize.canceled\");\n\n return formattedError;\n case \"PAYMENT_REQUEST_INITIALIZATION_FAILED\":\n formattedError = new BraintreeError({\n type: errors.PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED.type,\n code: errors.PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED.code,\n message: errors.PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED.message,\n details: {\n originalError: error,\n },\n });\n break;\n case \"BRAINTREE_GATEWAY_GOOGLE_PAYMENT_TOKENIZATION_ERROR\":\n formattedError = new BraintreeError({\n type: errors.PAYMENT_REQUEST_GOOGLE_PAYMENT_FAILED_TO_TOKENIZE.type,\n code: errors.PAYMENT_REQUEST_GOOGLE_PAYMENT_FAILED_TO_TOKENIZE.code,\n message:\n errors.PAYMENT_REQUEST_GOOGLE_PAYMENT_FAILED_TO_TOKENIZE.message,\n details: {\n originalError: error,\n },\n });\n break;\n case \"BRAINTREE_GATEWAY_GOOGLE_PAYMENT_PARSING_ERROR\":\n formattedError = new BraintreeError({\n type: errors.PAYMENT_REQUEST_GOOGLE_PAYMENT_PARSING_ERROR.type,\n code: errors.PAYMENT_REQUEST_GOOGLE_PAYMENT_PARSING_ERROR.code,\n message: errors.PAYMENT_REQUEST_GOOGLE_PAYMENT_PARSING_ERROR.message,\n details: {\n originalError: error,\n },\n });\n break;\n default:\n formattedError = new BraintreeError({\n code: errors.PAYMENT_REQUEST_NOT_COMPLETED.code,\n type: error.type || BraintreeError.types.CUSTOMER,\n message: errors.PAYMENT_REQUEST_NOT_COMPLETED.message,\n details: {\n originalError: error,\n },\n });\n }\n\n analytics.sendEvent(this._client, \"payment-request.tokenize.failed\");\n\n return formattedError;\n};\n\nPaymentRequestComponent.prototype._formatCanMakePaymentError = function (\n error\n) {\n var formattedError;\n\n switch (error.name) {\n case \"PAYMENT_REQUEST_INITIALIZATION_FAILED\":\n formattedError = new BraintreeError({\n type: errors.PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED.type,\n code: errors.PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED.code,\n message: errors.PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED.message,\n details: {\n originalError: error,\n },\n });\n break;\n case \"NotAllowedError\":\n formattedError = new BraintreeError({\n type: errors.PAYMENT_REQUEST_CAN_MAKE_PAYMENT_NOT_ALLOWED.type,\n code: errors.PAYMENT_REQUEST_CAN_MAKE_PAYMENT_NOT_ALLOWED.code,\n message: errors.PAYMENT_REQUEST_CAN_MAKE_PAYMENT_NOT_ALLOWED.message,\n details: {\n originalError: error,\n },\n });\n break;\n default:\n formattedError = new BraintreeError({\n code: errors.PAYMENT_REQUEST_CAN_MAKE_PAYMENT_FAILED.code,\n type: errors.PAYMENT_REQUEST_CAN_MAKE_PAYMENT_FAILED.type,\n message: errors.PAYMENT_REQUEST_CAN_MAKE_PAYMENT_FAILED.message,\n details: {\n originalError: error,\n },\n });\n }\n\n analytics.sendEvent(this._client, \"payment-request.can-make-payment.failed\");\n\n return formattedError;\n};\n\nmodule.exports = wrapPromise.wrapPrototype(PaymentRequestComponent);\n\n},{\"../../lib/analytics\":132,\"../../lib/assign\":134,\"../../lib/braintree-error\":137,\"../../lib/convert-methods-to-error\":140,\"../../lib/generate-google-pay-configuration\":162,\"../../lib/methods\":168,\"../../lib/use-min\":173,\"../shared/constants\":186,\"@braintree/event-emitter\":30,\"@braintree/iframer\":32,\"@braintree/uuid\":36,\"@braintree/wrap-promise\":40,\"framebus\":49}],185:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/payment-request\n * @description A component to integrate with the Payment Request API.\n *\n * **Note:** This component is currently in beta and the API may include breaking changes when upgrading. Please review the [Changelog](https://github.com/braintree/braintree-web/blob/main/CHANGELOG.md) for upgrade steps whenever you upgrade the version of braintree-web.\n * */\n\nvar PaymentRequestComponent = _dereq_(\"./external/payment-request\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar VERSION = \"3.103.0\";\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {object} [options.enabledPaymentMethods] An object representing which payment methods to display.\n * @param {boolean} [options.enabledPaymentMethods.basicCard=true] Whether or not to display credit card as an option in the Payment Request dialog. If left blank or set to true, credit cards will be displayed in the dialog if the merchant account is set up to process credit cards.\n * @param {boolean} [options.enabledPaymentMethods.googlePay=true] Whether or not to display Google Pay as an option in the Payment Request dialog. If left blank or set to true, Google Pay will be displayed in the dialog if the merchant account is set up to process Google Pay.\n * @param {Number} [options.googlePayVersion=1] Ignored if `options.enabledPaymentMethods.googlePay = false`. If `true`, this option specifies the version of Google Pay to use. Choose either 1 (default) or 2.\n * @param {callback} [callback] The second argument, `data`, is the {@link PaymentRequestComponent} instance. If no callback is provided, `create` returns a promise that resolves with the {@link PaymentRequestComponent} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * if (window.PaymentRequest) {\n * braintree.paymentRequest.create({\n * client: clientInstance\n * }, cb);\n * } else {\n * // fall back to Hosted Fields if browser does not support Payment Request API\n * braintree.hostedFields.create(hostedFieldsOptions, cb);\n * }\n * @example <caption>Explicitly turning off credit cards from Payment Request API dialog</caption>\n * braintree.paymentRequest.create({\n * client: clientInstance,\n * enabledPaymentMethods: {\n * googlePay: true,\n * basicCard: false\n * }\n * }, cb);\n * @example <caption>Using Google Pay v2 or basic card</caption>\n * braintree.paymentRequest.create({\n * client: clientInstance,\n * enabledPaymentMethods: {\n * basicCard: true,\n * googlePay: true\n * },\n * googlePayVersion: 2\n * }, cb);\n *\n */\nfunction create(options) {\n var name = \"Payment Request\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n return createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n });\n })\n .then(function (client) {\n var paymentRequestInstance;\n\n options.client = client;\n paymentRequestInstance = new PaymentRequestComponent(options);\n\n return paymentRequestInstance.initialize();\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./external/payment-request\":184,\"@braintree/wrap-promise\":40}],186:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"../../lib/enumerate\");\nvar errors = _dereq_(\"./errors\");\n\nvar constants = {};\n\nconstants.events = enumerate(\n [\n \"CAN_MAKE_PAYMENT\",\n \"FRAME_READY\",\n \"FRAME_CAN_MAKE_REQUESTS\",\n \"PAYMENT_REQUEST_INITIALIZED\",\n \"SHIPPING_ADDRESS_CHANGE\",\n \"UPDATE_SHIPPING_ADDRESS\",\n \"SHIPPING_OPTION_CHANGE\",\n \"UPDATE_SHIPPING_OPTION\",\n ],\n \"payment-request:\"\n);\n\nconstants.errors = errors;\n\nconstants.SUPPORTED_METHODS = {\n \"basic-card\": true,\n \"https://google.com/pay\": true,\n};\n\nmodule.exports = constants;\n\n},{\"../../lib/enumerate\":147,\"./errors\":187}],187:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Payment Request - Creation Error Codes\n * @description Errors that occur when [creating the Payment Request component](./module-braintree-web_payment-request.html#.create).\n * @property {MERCHANT} PAYMENT_REQUEST_NO_VALID_SUPPORTED_PAYMENT_METHODS Occurs when there are no valid payment methods configured.\n */\n\n/**\n * @name BraintreeError.Payment Request - createSupportedPaymentMethodsConfiguration Error Codes\n * @description Errors that occur when using the [`createSupportedPaymentMethodsConfiguration` method](./PaymentRequestComponent.html#createSupportedPaymentMethodsConfiguration)\n * @property {MERCHANT} PAYMENT_REQUEST_CREATE_SUPPORTED_PAYMENT_METHODS_CONFIGURATION_MUST_INCLUDE_TYPE Occurs when no type is supplied for method.\n * @property {MERCHANT} PAYMENT_REQUEST_CREATE_SUPPORTED_PAYMENT_METHODS_CONFIGURATION_TYPE_NOT_ENABLED Occurs when configured type is not enabled.\n */\n\n/**\n * @name BraintreeError.Payment Request - tokenize Error Codes\n * @description Errors that occur when using the [`tokenize` method](./PaymentRequestComponent.html#tokenize)\n * @property {CUSTOMER} PAYMENT_REQUEST_CANCELED Occurs when customer cancels the Payment Request.\n * @property {MERCHANT} PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED Occurs when the Payment Request is closed do to the options being misconfigured.\n * @property {MERCHANT} PAYMENT_REQUEST_GOOGLE_PAYMENT_FAILED_TO_TOKENIZE Occurs when a Google Payment payment method is unable to be tokenized.\n * @property {UNKNOWN} PAYMENT_REQUEST_GOOGLE_PAYMENT_PARSING_ERROR Occurs when the result of tokenizing a Google Payment payment method could not be parsed.\n * @property {CUSTOMER} PAYMENT_REQUEST_NOT_COMPLETED Occurs when an error prevented the Payment Request from being completed.\n */\n\n/**\n * @name BraintreeError.Payment Request - canMakePayment Error Codes\n * @description Errors that occur when using the [`canMakePayment` method](./PaymentRequestComponent.html#canMakePayment)\n * @property {MERCHANT} PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED Occurs when the Payment Request is instantiated with misconfigured options.\n * @property {MERCHANT} PAYMENT_REQUEST_CAN_MAKE_PAYMENT_NOT_ALLOWED Occurs when `canMakePayment` results in a `DomException` with a `NotAllowedError`. This usually occurs when `canMakePayment` is called multiple times with different supported payment options.\n * @property {MERCHANT} PAYMENT_REQUEST_UNSUPPORTED_PAYMENT_METHOD Occurs when `canMakePayment` is called with a `supportedPaymentMethods` array that contains a payment method that is not supported by the Braintree SDK.\n * @property {UNKNOWN} PAYMENT_REQUEST_CAN_MAKE_PAYMENT_FAILED Occurs when `canMakePayment` fails for any reason other than a misconfigured Payment Request object.\n */\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nmodule.exports = {\n PAYMENT_REQUEST_NO_VALID_SUPPORTED_PAYMENT_METHODS: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYMENT_REQUEST_NO_VALID_SUPPORTED_PAYMENT_METHODS\",\n message:\n \"There are no supported payment methods associated with this account.\",\n },\n PAYMENT_REQUEST_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"PAYMENT_REQUEST_CANCELED\",\n message: \"Payment request was canceled.\",\n },\n PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYMENT_REQUEST_INITIALIZATION_MISCONFIGURED\",\n message: \"Something went wrong when configuring the payment request.\",\n },\n PAYMENT_REQUEST_CAN_MAKE_PAYMENT_FAILED: {\n type: BraintreeError.types.UNKNOWN,\n code: \"PAYMENT_REQUEST_CAN_MAKE_PAYMENT_FAILED\",\n message: \"Something went wrong when calling `canMakePayment`\",\n },\n PAYMENT_REQUEST_CAN_MAKE_PAYMENT_NOT_ALLOWED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYMENT_REQUEST_CAN_MAKE_PAYMENT_NOT_ALLOWED\",\n message:\n \"Something went wrong when calling `canMakePayment`. Most likely, `canMakePayment` was called multiple times with different supportedMethods configurations.\",\n },\n PAYMENT_REQUEST_UNSUPPORTED_PAYMENT_METHOD: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYMENT_REQUEST_UNSUPPORTED_PAYMENT_METHOD\",\n },\n PAYMENT_REQUEST_GOOGLE_PAYMENT_FAILED_TO_TOKENIZE: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYMENT_REQUEST_GOOGLE_PAYMENT_FAILED_TO_TOKENIZE\",\n message: \"Something went wrong when tokenizing the Google Pay card.\",\n },\n PAYMENT_REQUEST_GOOGLE_PAYMENT_PARSING_ERROR: {\n type: BraintreeError.types.UNKNOWN,\n code: \"PAYMENT_REQUEST_GOOGLE_PAYMENT_PARSING_ERROR\",\n message: \"Something went wrong when tokenizing the Google Pay card.\",\n },\n PAYMENT_REQUEST_NOT_COMPLETED: {\n code: \"PAYMENT_REQUEST_NOT_COMPLETED\",\n message: \"Payment request could not be completed.\",\n },\n PAYMENT_REQUEST_CREATE_SUPPORTED_PAYMENT_METHODS_CONFIGURATION_MUST_INCLUDE_TYPE:\n {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYMENT_REQUEST_CREATE_SUPPORTED_PAYMENT_METHODS_CONFIGURATION_MUST_INCLUDE_TYPE\",\n message:\n \"createSupportedPaymentMethodsConfiguration must include a type parameter.\",\n },\n PAYMENT_REQUEST_CREATE_SUPPORTED_PAYMENT_METHODS_CONFIGURATION_TYPE_NOT_ENABLED:\n {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYMENT_REQUEST_CREATE_SUPPORTED_PAYMENT_METHODS_CONFIGURATION_TYPE_NOT_ENABLED\",\n message:\n \"createSupportedPaymentMethodsConfiguration type parameter must be valid or enabled.\",\n },\n};\n\n},{\"../../lib/braintree-error\":137}],188:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.PayPal Checkout - Creation Error Codes\n * @description Errors that occur when [creating the PayPal Checkout component](./module-braintree-web_paypal-checkout.html#.create).\n * @property {MERCHANT} PAYPAL_NOT_ENABLED Occurs when PayPal is not enabled on the Braintree control panel.\n * @property {MERCHANT} PAYPAL_SANDBOX_ACCOUNT_NOT_LINKED Occurs only when testing in Sandbox, when a PayPal sandbox account is not linked to the merchant account in the Braintree control panel.\n */\n\n/**\n * @name BraintreeError.PayPal Checkout - createPayment Error Codes\n * @description Errors that occur when using the [`createPayment` method](./PayPalCheckout.html#createPayment).\n * @property {MERCHANT} PAYPAL_FLOW_OPTION_REQUIRED Occurs when a required option is missing.\n * @property {MERCHANT} PAYPAL_INVALID_PAYMENT_OPTION Occurs when an option contains an invalid value.\n * @property {NETWORK} PAYPAL_FLOW_FAILED Occurs when something goes wrong when initializing the flow.\n */\n\n/**\n * @name BraintreeError.PayPal Checkout - startVaultInitiatedCheckout Error Codes\n * @description Errors that occur when using the [`startVaultInitiatedCheckout` method](./PayPalCheckout.html#startVaultInitiatedCheckout).\n * @property {MERCHANT} PAYPAL_START_VAULT_INITIATED_CHECKOUT_PARAM_REQUIRED Occurs when a required param is missing when calling the method.\n * @property {MERCHANT} PAYPAL_START_VAULT_INITIATED_CHECKOUT_POPUP_OPEN_FAILED Occurs when PayPal window could not be opened. This often occurs because the call to start the vault initiated flow was not triggered from a click event.\n * @property {CUSTOMER} PAYPAL_START_VAULT_INITIATED_CHECKOUT_CANCELED Occurs when a customer closes the PayPal flow before completion.\n * @property {MERCHANT} PAYPAL_START_VAULT_INITIATED_CHECKOUT_IN_PROGRESS Occurs when the flow is initialized while an authorization is already in progress.\n * @property {NETWORK} PAYPAL_START_VAULT_INITIATED_CHECKOUT_SETUP_FAILED Occurs when something went wrong setting up the flow.\n */\n\n/**\n * @name BraintreeError.PayPal Checkout - tokenizePayment Error Codes\n * @description Errors that occur when using the [`tokenizePayment` method](./PayPalCheckout.html#tokenizePayment).\n * @property {NETWORK} PAYPAL_ACCOUNT_TOKENIZATION_FAILED Occurs when PayPal account could not be tokenized.\n */\n\n/**\n * @name BraintreeError.Paypal Checkout - updatePayment Error Codes\n * @description Errors that occur when using the [`updatePayment` method](./PayPalCheckout.html#updatePayment).\n * @property {MERCHANT} PAYPAL_INVALID_PAYMENT_OPTION Occurs when an option contains an invalid value.\n * @property {MERCHANT} PAYPAL_MISSING_REQUIRED_OPTION Occurs when a required option is missing.\n * @property {NETWORK} PAYPAL_FLOW_FAILED Occurs when something goes wrong when initializing the flow or communicating with the server.\n */\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n PAYPAL_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_NOT_ENABLED\",\n message: \"PayPal is not enabled for this merchant.\",\n },\n PAYPAL_SANDBOX_ACCOUNT_NOT_LINKED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_SANDBOX_ACCOUNT_NOT_LINKED\",\n message:\n \"A linked PayPal Sandbox account is required to use PayPal Checkout in Sandbox. See https://developer.paypal.com/braintree/docs/guides/paypal/testing-go-live#linked-paypal-testing for details on linking your PayPal sandbox with Braintree.\",\n },\n PAYPAL_ACCOUNT_TOKENIZATION_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"PAYPAL_ACCOUNT_TOKENIZATION_FAILED\",\n message: \"Could not tokenize user's PayPal account.\",\n },\n PAYPAL_FLOW_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"PAYPAL_FLOW_FAILED\",\n message: \"Could not initialize PayPal flow.\",\n },\n PAYPAL_FLOW_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_FLOW_OPTION_REQUIRED\",\n message: \"PayPal flow property is invalid or missing.\",\n },\n PAYPAL_START_VAULT_INITIATED_CHECKOUT_PARAM_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_START_VAULT_INITIATED_CHECKOUT_PARAM_REQUIRED\",\n },\n PAYPAL_START_VAULT_INITIATED_CHECKOUT_SETUP_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"PAYPAL_START_VAULT_INITIATED_CHECKOUT_SETUP_FAILED\",\n message: \"Something went wrong when setting up the checkout workflow.\",\n },\n PAYPAL_START_VAULT_INITIATED_CHECKOUT_POPUP_OPEN_FAILED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_START_VAULT_INITIATED_CHECKOUT_POPUP_OPEN_FAILED\",\n message:\n \"PayPal popup failed to open, make sure to initiate the vault checkout in response to a user action.\",\n },\n PAYPAL_START_VAULT_INITIATED_CHECKOUT_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"PAYPAL_START_VAULT_INITIATED_CHECKOUT_CANCELED\",\n message: \"Customer closed PayPal popup before authorizing.\",\n },\n PAYPAL_START_VAULT_INITIATED_CHECKOUT_IN_PROGRESS: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_START_VAULT_INITIATED_CHECKOUT_IN_PROGRESS\",\n message: \"Vault initiated checkout already in progress.\",\n },\n PAYPAL_INVALID_PAYMENT_OPTION: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_INVALID_PAYMENT_OPTION\",\n message: \"PayPal payment options are invalid.\",\n },\n PAYPAL_MISSING_REQUIRED_OPTION: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_MISSING_REQUIRED_OPTION\",\n message: \"Missing required option.\",\n },\n};\n\n},{\"../lib/braintree-error\":137}],189:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/paypal-checkout\n * @description A component to integrate with the [PayPal JS SDK](https://github.com/paypal/paypal-checkout-components).\n */\n\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar PayPalCheckout = _dereq_(\"./paypal-checkout\");\nvar VERSION = \"3.103.0\";\n\n/**\n * @static\n * @function create\n * @description There are two ways to integrate the PayPal Checkout component. See the [PayPal Checkout constructor documentation](PayPalCheckout.html#PayPalCheckout) for more information and examples.\n *\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {string} [options.merchantAccountId] A non-default merchant account ID to use for tokenization.\n * @param {boolean} [options.autoSetDataUserIdToken=false] Whether or not to render the PayPal SDK button with a customer's vaulted PayPal account. Must be used in conjunction with a Client Token generated with a customer id.\n * @param {callback} [callback] The second argument, `data`, is the {@link PayPalCheckout} instance.\n * @example\n * braintree.client.create({\n * authorization: 'authorization'\n * }).then(function (clientInstance) {\n * return braintree.paypalCheckout.create({\n * client: clientInstance\n * });\n * }).then(function (paypalCheckoutInstance) {\n * // set up the PayPal JS SDK\n * }).catch(function (err) {\n * console.error('Error!', err);\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"PayPal Checkout\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n var instance = new PayPalCheckout(options);\n\n return instance._initialize(options);\n });\n}\n\n/**\n * @static\n * @function isSupported\n * @description Returns true if PayPal Checkout [supports this browser](index.html#browser-support-webviews).\n * @deprecated Previously, this method checked for Popup support in the browser. The PayPal JS SDK now falls back to a modal if popups are not supported.\n * @returns {Boolean} Returns true if PayPal Checkout supports this browser.\n */\nfunction isSupported() {\n return true;\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n isSupported: isSupported,\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"./paypal-checkout\":190,\"@braintree/wrap-promise\":40}],190:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar analytics = _dereq_(\"../lib/analytics\");\nvar assign = _dereq_(\"../lib/assign\").assign;\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar ExtendedPromise = _dereq_(\"@braintree/extended-promise\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar convertToBraintreeError = _dereq_(\"../lib/convert-to-braintree-error\");\nvar errors = _dereq_(\"./errors\");\nvar constants = _dereq_(\"../paypal/shared/constants\");\nvar frameService = _dereq_(\"../lib/frame-service/external\");\nvar createAuthorizationData = _dereq_(\"../lib/create-authorization-data\");\nvar methods = _dereq_(\"../lib/methods\");\nvar useMin = _dereq_(\"../lib/use-min\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar querystring = _dereq_(\"../lib/querystring\");\nvar VERSION = \"3.103.0\";\nvar INTEGRATION_TIMEOUT_MS = _dereq_(\"../lib/constants\").INTEGRATION_TIMEOUT_MS;\n\nvar REQUIRED_PARAMS_FOR_START_VAULT_INITIATED_CHECKOUT = [\n \"amount\",\n \"currency\",\n \"vaultInitiatedCheckoutPaymentMethodToken\",\n];\n\nvar PAYPAL_SDK_PRELOAD_URL =\n \"https://www.{ENV}paypal.com/smart/buttons/preload\";\n\nExtendedPromise.suppressUnhandledPromiseMessage = true;\n\n/**\n * PayPal Checkout tokenized payload. Returned in {@link PayPalCheckout#tokenizePayment}'s callback as the second argument, `data`.\n * @typedef {object} PayPalCheckout~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {string} type The payment method type, always `PayPalAccount`.\n * @property {object} details Additional PayPal account details.\n * @property {string} details.email User's email address.\n * @property {string} details.payerId User's payer ID, the unique identifier for each PayPal account.\n * @property {string} details.firstName User's given name.\n * @property {string} details.lastName User's surname.\n * @property {?string} details.countryCode User's 2 character country code.\n * @property {?string} details.phone User's phone number (e.g. 555-867-5309).\n * @property {?object} details.shippingAddress User's shipping address details, only available if shipping address is enabled.\n * @property {string} details.shippingAddress.recipientName Recipient of postage.\n * @property {string} details.shippingAddress.line1 Street number and name.\n * @property {string} details.shippingAddress.line2 Extended address.\n * @property {string} details.shippingAddress.city City or locality.\n * @property {string} details.shippingAddress.state State or region.\n * @property {string} details.shippingAddress.postalCode Postal code.\n * @property {string} details.shippingAddress.countryCode 2 character country code (e.g. US).\n * @property {?object} details.billingAddress User's billing address details.\n * Not available to all merchants; [contact support](https://developer.paypal.com/braintree/help) for details on eligibility and enabling this feature.\n * Alternatively, see `shippingAddress` above as an available client option.\n * @property {string} details.billingAddress.line1 Street number and name.\n * @property {string} details.billingAddress.line2 Extended address.\n * @property {string} details.billingAddress.city City or locality.\n * @property {string} details.billingAddress.state State or region.\n * @property {string} details.billingAddress.postalCode Postal code.\n * @property {string} details.billingAddress.countryCode 2 character country code (e.g. US).\n * @property {?object} creditFinancingOffered This property will only be present when the customer pays with PayPal Credit.\n * @property {object} creditFinancingOffered.totalCost This is the estimated total payment amount including interest and fees the user will pay during the lifetime of the loan.\n * @property {string} creditFinancingOffered.totalCost.value An amount defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm) for the given currency.\n * @property {string} creditFinancingOffered.totalCost.currency 3 letter currency code as defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm).\n * @property {number} creditFinancingOffered.term Length of financing terms in months.\n * @property {object} creditFinancingOffered.monthlyPayment This is the estimated amount per month that the customer will need to pay including fees and interest.\n * @property {string} creditFinancingOffered.monthlyPayment.value An amount defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm) for the given currency.\n * @property {string} creditFinancingOffered.monthlyPayment.currency 3 letter currency code as defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm).\n * @property {object} creditFinancingOffered.totalInterest Estimated interest or fees amount the payer will have to pay during the lifetime of the loan.\n * @property {string} creditFinancingOffered.totalInterest.value An amount defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm) for the given currency.\n * @property {string} creditFinancingOffered.totalInterest.currency 3 letter currency code as defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm).\n * @property {boolean} creditFinancingOffered.payerAcceptance Status of whether the customer ultimately was approved for and chose to make the payment using the approved installment credit.\n * @property {boolean} creditFinancingOffered.cartAmountImmutable Indicates whether the cart amount is editable after payer's acceptance on PayPal side.\n */\n\n/**\n * @class\n * @param {object} options see {@link module:braintree-web/paypal-checkout.create|paypal-checkout.create}\n * @classdesc This class represents a PayPal Checkout component that coordinates with the {@link https://developer.paypal.com/docs/checkout/integrate/#2-add-the-paypal-script-to-your-web-page|PayPal SDK}. Instances of this class can generate payment data and tokenize authorized payments.\n *\n * All UI (such as preventing actions on the parent page while authentication is in progress) is managed by the {@link https://developer.paypal.com/docs/checkout/integrate/#2-add-the-paypal-script-to-your-web-page|PayPal SDK}. You must provide your PayPal `client-id` as a query parameter. You can [retrieve this value from the PayPal Dashboard](https://developer.paypal.com/docs/checkout/integrate/#1-get-paypal-rest-api-credentials).\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/paypal-checkout.create|braintree-web.paypal-checkout.create} instead.</strong>\n *\n * #### Integrate Checkout Flow with PayPal SDK\n *\n * You must have [PayPal's script, configured with various query parameters](https://developer.paypal.com/docs/checkout/integrate/#2-add-the-paypal-script-to-your-web-page), loaded on your page:\n *\n * ```html\n * <script src=\"https://www.paypal.com/sdk/js?client-id=your-sandbox-or-prod-client-id\"></script>\n * <div id=\"paypal-button\"></div>\n * ```\n *\n * When passing values in the `createPayment` method, make sure they match the [corresponding parameters in the query parameters for the PayPal SDK script](https://developer.paypal.com/docs/checkout/reference/customize-sdk/).\n *\n * ```javascript\n * braintree.client.create({\n * authorization: 'authorization'\n * }).then(function (clientInstance) {\n * return braintree.paypalCheckout.create({\n * client: clientInstance\n * });\n * }).then(function (paypalCheckoutInstance) {\n * return paypal.Buttons({\n * createOrder: function () {\n * return paypalCheckoutInstance.createPayment({\n * flow: 'checkout',\n * currency: 'USD',\n * amount: '10.00',\n * intent: 'capture' // this value must either be `capture` or match the intent passed into the PayPal SDK intent query parameter\n * // your other createPayment options here\n * });\n * },\n *\n * onApprove: function (data, actions) {\n * // some logic here before tokenization happens below\n * return paypalCheckoutInstance.tokenizePayment(data).then(function (payload) {\n * // Submit payload.nonce to your server\n * });\n * },\n *\n * onCancel: function () {\n * // handle case where user cancels\n * },\n *\n * onError: function (err) {\n * // handle case where error occurs\n * }\n * }).render('#paypal-button');\n * }).catch(function (err) {\n * console.error('Error!', err);\n * });\n * ```\n *\n * #### Integrate Vault Flow with PayPal SDK\n *\n * You must have [PayPal's script, configured with various query parameters](https://developer.paypal.com/docs/checkout/integrate/#2-add-the-paypal-script-to-your-web-page), loaded on your page:\n *\n * ```html\n * <script src=\"https://www.paypal.com/sdk/js?client-id=your-sandbox-or-prod-client-id&vault=true\"></script>\n * <div id=\"paypal-button\"></div>\n * ```\n *\n * When passing values in the `createPayment` method, make sure they match the [corresponding parameters in the query parameters for the PayPal SDK script](https://developer.paypal.com/docs/checkout/reference/customize-sdk/).\n *\n * ```javascript\n * braintree.client.create({\n * authorization: 'authorization'\n * }).then(function (clientInstance) {\n * return braintree.paypalCheckout.create({\n * client: clientInstance\n * });\n * }).then(function (paypalCheckoutInstance) {\n * return paypal.Buttons({\n * createBillingAgreement: function () {\n * return paypalCheckoutInstance.createPayment({\n * flow: 'vault'\n * // your other createPayment options here\n * });\n * },\n *\n * onApprove: function (data, actions) {\n * // some logic here before tokenization happens below\n * return paypalCheckoutInstance.tokenizePayment(data).then(function (payload) {\n * // Submit payload.nonce to your server\n * });\n * },\n *\n * onCancel: function () {\n * // handle case where user cancels\n * },\n *\n * onError: function (err) {\n * // handle case where error occurs\n * }\n * }).render('#paypal-button');\n * }).catch(function (err) {\n * console.error('Error!', err);\n * });\n * ```\n *\n * #### Integrate with Checkout.js (deprecated PayPal SDK)\n *\n * If you are creating a new PayPal integration, please follow the previous integration guide to use the current version of the PayPal SDK. Use this integration guide only as a reference if you are already integrated with Checkout.js.\n *\n * You must have PayPal's Checkout.js script loaded on your page.\n *\n * ```html\n * <script src=\"https://www.paypalobjects.com/api/checkout.js\" data-version-4 log-level=\"warn\"></script>\n * ```\n *\n * ```javascript\n * braintree.client.create({\n * authorization: 'authorization'\n * }).then(function (clientInstance) {\n * return braintree.paypalCheckout.create({\n * client: clientInstance\n * });\n * }).then(function (paypalCheckoutInstance) {\n * return paypal.Button.render({\n * env: 'production', // or 'sandbox'\n *\n * payment: function () {\n * return paypalCheckoutInstance.createPayment({\n * // your createPayment options here\n * });\n * },\n *\n * onAuthorize: function (data, actions) {\n * // some logic here before tokenization happens below\n * return paypalCheckoutInstance.tokenizePayment(data).then(function (payload) {\n * // Submit payload.nonce to your server\n * });\n * }\n * }, '#paypal-button');\n * }).catch(function (err) {\n * console.error('Error!', err);\n * });\n * ```\n */\nfunction PayPalCheckout(options) {\n this._merchantAccountId = options.merchantAccountId;\n // TODO remove this requirement for it to be opt in.\n // This feature is not yet GA, so we're intentionally making\n // it opt in and not publicly documenting it yet. Once it's\n // GA, we can remove the requirement to opt in to it\n this._autoSetDataUserIdToken = Boolean(options.autoSetDataUserIdToken);\n}\n\nPayPalCheckout.prototype._initialize = function (options) {\n var config;\n\n if (options.client) {\n config = options.client.getConfiguration();\n this._authorizationInformation = {\n fingerprint: config.authorizationFingerprint,\n environment: config.gatewayConfiguration.environment,\n };\n } else {\n config = createAuthorizationData(options.authorization);\n this._authorizationInformation = {\n fingerprint: config.attrs.authorizationFingerprint,\n environment: config.environment,\n };\n }\n\n this._clientPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: \"PayPal Checkout\",\n })\n .then(\n function (client) {\n this._configuration = client.getConfiguration();\n\n // we skip these checks if a merchant account id is\n // passed in, because the default merchant account\n // may not have paypal enabled\n if (!this._merchantAccountId) {\n if (!this._configuration.gatewayConfiguration.paypalEnabled) {\n this._setupError = new BraintreeError(errors.PAYPAL_NOT_ENABLED);\n } else if (\n this._configuration.gatewayConfiguration.paypal\n .environmentNoNetwork === true\n ) {\n this._setupError = new BraintreeError(\n errors.PAYPAL_SANDBOX_ACCOUNT_NOT_LINKED\n );\n }\n }\n\n if (this._setupError) {\n return Promise.reject(this._setupError);\n }\n\n analytics.sendEvent(client, \"paypal-checkout.initialized\");\n this._frameServicePromise = this._setupFrameService(client);\n\n return client;\n }.bind(this)\n );\n\n // if client was passed in, let config checks happen before\n // resolving the instance. Otherwise, just resolve the instance\n if (options.client) {\n return this._clientPromise.then(\n function () {\n return this;\n }.bind(this)\n );\n }\n\n return Promise.resolve(this);\n};\n\nPayPalCheckout.prototype._setupFrameService = function (client) {\n var frameServicePromise = new ExtendedPromise();\n var config = client.getConfiguration();\n var timeoutRef = setTimeout(function () {\n analytics.sendEvent(client, \"paypal-checkout.frame-service.timed-out\");\n frameServicePromise.reject(\n new BraintreeError(\n errors.PAYPAL_START_VAULT_INITIATED_CHECKOUT_SETUP_FAILED\n )\n );\n }, INTEGRATION_TIMEOUT_MS);\n\n this._assetsUrl =\n config.gatewayConfiguration.paypal.assetsUrl + \"/web/\" + VERSION;\n this._isDebug = config.isDebug;\n // Note: this is using the static landing frame that the deprecated PayPal component builds and uses\n this._loadingFrameUrl =\n this._assetsUrl +\n \"/html/paypal-landing-frame\" +\n useMin(this._isDebug) +\n \".html\";\n\n frameService.create(\n {\n name: \"braintreepaypallanding\",\n dispatchFrameUrl:\n this._assetsUrl +\n \"/html/dispatch-frame\" +\n useMin(this._isDebug) +\n \".html\",\n openFrameUrl: this._loadingFrameUrl,\n },\n function (service) {\n this._frameService = service;\n clearTimeout(timeoutRef);\n\n frameServicePromise.resolve();\n }.bind(this)\n );\n\n return frameServicePromise;\n};\n\n/**\n * @typedef {object} PayPalCheckout~lineItem\n * @property {string} quantity Number of units of the item purchased. This value must be a whole number and can't be negative or zero.\n * @property {string} unitAmount Per-unit price of the item. Can include up to 2 decimal places. This value can't be negative or zero.\n * @property {string} name Item name. Maximum 127 characters.\n * @property {string} kind Indicates whether the line item is a debit (sale) or credit (refund) to the customer. Accepted values: `debit` and `credit`.\n * @property {?string} unitTaxAmount Per-unit tax price of the item. Can include up to 2 decimal places. This value can't be negative or zero.\n * @property {?string} description Item description. Maximum 127 characters.\n * @property {?string} productCode Product or UPC code for the item. Maximum 127 characters.\n * @property {?string} url The URL to product information.\n */\n\n/**\n * @typedef {object} PayPalCheckout~shippingOption\n * @property {string} id A unique ID that identifies a payer-selected shipping option.\n * @property {string} label A description that the payer sees, which helps them choose an appropriate shipping option. For example, `Free Shipping`, `USPS Priority Shipping`, `Exp\u00E9dition prioritaire USPS`, or `USPS y\u014Duxi\u0101n f\u0101 hu\u00F2`. Localize this description to the payer's locale.\n * @property {boolean} selected If `selected = true` is specified as part of the API request it represents the shipping option that the payee/merchant expects to be pre-selected for the payer when they first view the shipping options within the PayPal checkout experience. As part of the response if a shipping option has `selected = true` it represents the shipping option that the payer selected during the course of checkout with PayPal. Only 1 `shippingOption` can be set to `selected = true`.\n * @property {string} type The method by which the payer wants to get their items. The possible values are:\n * * `SHIPPING` - The payer intends to receive the items at a specified address.\n * * `PICKUP` - The payer intends to pick up the items at a specified address. For example, a store address.\n * @property {object} amount The shipping cost for the selected option.\n * @property {string} amount.currency The three-character ISO-4217 currency code. PayPal does not support all currencies.\n * @property {string} amount.value The amount the shipping option will cost. Includes the specified number of digits after decimal separator for the ISO-4217 currency code.\n */\n\n/**\n * Creates a PayPal payment ID or billing token using the given options. This is meant to be passed to the PayPal JS SDK.\n * When a {@link callback} is defined, the function returns undefined and invokes the callback with the id to be used with the PayPal JS SDK. Otherwise, it returns a Promise that resolves with the id.\n * @public\n * @param {object} options All options for the PayPalCheckout component.\n * @param {string} options.flow Set to 'checkout' for one-time payment flow, or 'vault' for Vault flow. If 'vault' is used with a client token generated with a customer ID, the PayPal account will be added to that customer as a saved payment method.\n * @param {string} [options.intent=authorize]\n * * `authorize` - Submits the transaction for authorization but not settlement.\n * * `order` - Validates the transaction without an authorization (i.e. without holding funds). Useful for authorizing and capturing funds up to 90 days after the order has been placed. Only available for Checkout flow.\n * * `capture` - Payment will be immediately submitted for settlement upon creating a transaction. `sale` can be used as an alias for this value.\n * @param {boolean} [options.offerCredit=false] Offers PayPal Credit as the default funding instrument for the transaction. If the customer isn't pre-approved for PayPal Credit, they will be prompted to apply for it.\n * @param {(string|number)} [options.amount] The amount of the transaction. Required when using the Checkout flow. Should not include shipping cost.\n * * Supports up to 2 digits after the decimal point\n * @param {string} [options.currency] The currency code of the amount, such as 'USD'. Required when using the Checkout flow.\n * @param {string} [options.displayName] The merchant name displayed inside of the PayPal lightbox; defaults to the company name on your Braintree account\n * @param {boolean} [options.requestBillingAgreement] If `true` and `flow = checkout`, the customer will be prompted to consent to a billing agreement during the checkout flow. This value is ignored when `flow = vault`.\n * @param {object} [options.billingAgreementDetails] When `requestBillingAgreement = true`, allows for details to be set for the billing agreement portion of the flow.\n * @param {string} [options.billingAgreementDetails.description] Description of the billing agreement to display to the customer.\n * @param {string} [options.vaultInitiatedCheckoutPaymentMethodToken] Use the payment method nonce representing a PayPal account with a Billing Agreement ID to create the payment and redirect the customer to select a new financial instrument. This option is only applicable to the `checkout` flow.\n * @param {shippingOption[]} [options.shippingOptions] List of shipping options offered by the payee or merchant to the payer to ship or pick up their items.\n * @param {boolean} [options.enableShippingAddress=false] Returns a shipping address object in {@link PayPal#tokenize}.\n * @param {object} [options.shippingAddressOverride] Allows you to pass a shipping address you have already collected into the PayPal payment flow.\n * @param {string} options.shippingAddressOverride.line1 Street address.\n * @param {string} [options.shippingAddressOverride.line2] Street address (extended).\n * @param {string} options.shippingAddressOverride.city City.\n * @param {string} options.shippingAddressOverride.state State.\n * @param {string} options.shippingAddressOverride.postalCode Postal code.\n * @param {string} options.shippingAddressOverride.countryCode Country.\n * @param {string} [options.shippingAddressOverride.phone] Phone number.\n * @param {string} [options.shippingAddressOverride.recipientName] Recipient's name.\n * @param {boolean} [options.shippingAddressEditable=true] Set to false to disable user editing of the shipping address.\n * @param {string} [options.billingAgreementDescription] Use this option to set the description of the preapproved payment agreement visible to customers in their PayPal profile during Vault flows. Max 255 characters.\n * @param {string} [options.landingPageType] Use this option to specify the PayPal page to display when a user lands on the PayPal site to complete the payment.\n * * `login` - A PayPal account login page is used.\n * * `billing` - A non-PayPal account landing page is used.\n * @param {lineItem[]} [options.lineItems] The {@link PayPalCheckout~lineItem|line items} for this transaction. It can include up to 249 line items.\n * @param {callback} [callback] The second argument is a PayPal `paymentId` or `billingToken` string, depending on whether `options.flow` is `checkout` or `vault`. This is also what is resolved by the promise if no callback is provided.\n * @example\n * // this paypal object is created by the PayPal JS SDK\n * // see https://github.com/paypal/paypal-checkout-components\n * paypal.Buttons({\n * createOrder: function () {\n * // when createPayment resolves, it is automatically passed to the PayPal JS SDK\n * return paypalCheckoutInstance.createPayment({\n * flow: 'checkout',\n * amount: '10.00',\n * currency: 'USD',\n * intent: 'capture' // this value must either be `capture` or match the intent passed into the PayPal SDK intent query parameter\n * });\n * },\n * // Add other options, e.g. onApproved, onCancel, onError\n * }).render('#paypal-button');\n *\n * @example\n * // shippingOptions are passed to createPayment. You can review the result from onAuthorize to determine which shipping option id was selected.\n * ```javascript\n * braintree.client.create({\n * authorization: 'authorization'\n * }).then(function (clientInstance) {\n * return braintree.paypalCheckout.create({\n * client: clientInstance\n * });\n * }).then(function (paypalCheckoutInstance) {\n * return paypal.Button.render({\n * env: 'production'\n *\n * payment: function () {\n * return paypalCheckoutInstance.createPayment({\n * flow: 'checkout',\n * amount: '10.00',\n * currency: 'USD',\n * shippingOptions: [\n * {\n * id: 'UUID-9',\n * type: 'PICKUP',\n * label: 'Store Location Five',\n * selected: true,\n * amount: {\n * value: '1.00',\n * currency: 'USD'\n * }\n * },\n * {\n * id: 'shipping-speed-fast',\n * type: 'SHIPPING',\n * label: 'Fast Shipping',\n * selected: false,\n * amount: {\n * value: '1.00',\n * currency: 'USD'\n * }\n * },\n * {\n * id: 'shipping-speed-slow',\n * type: 'SHIPPING',\n * label: 'Slow Shipping',\n * selected: false,\n * amount: {\n * value: '1.00',\n * currency: 'USD'\n * }\n * }\n * ]\n * });\n * },\n *\n * onAuthorize: function (data, actions) {\n * return paypalCheckoutInstance.tokenizePayment(data).then(function (payload) {\n * // Submit payload.nonce to your server\n * });\n * }\n * }, '#paypal-button');\n * }).catch(function (err) {\n * console.error('Error!', err);\n * });\n * ```\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPayPalCheckout.prototype.createPayment = function (options) {\n if (!options || !constants.FLOW_ENDPOINTS.hasOwnProperty(options.flow)) {\n return Promise.reject(\n new BraintreeError(errors.PAYPAL_FLOW_OPTION_REQUIRED)\n );\n }\n\n analytics.sendEvent(this._clientPromise, \"paypal-checkout.createPayment\");\n\n return this._createPaymentResource(options).then(function (response) {\n var flowToken, urlParams;\n\n if (options.flow === \"checkout\") {\n urlParams = querystring.parse(response.paymentResource.redirectUrl);\n flowToken = urlParams.token;\n } else {\n flowToken = response.agreementSetup.tokenId;\n }\n\n return flowToken;\n });\n};\n\nPayPalCheckout.prototype._createPaymentResource = function (options, config) {\n var self = this;\n var endpoint = \"paypal_hermes/\" + constants.FLOW_ENDPOINTS[options.flow];\n\n delete this.intentFromCreatePayment;\n\n config = config || {};\n\n if (options.offerCredit === true) {\n analytics.sendEvent(this._clientPromise, \"paypal-checkout.credit.offered\");\n }\n\n return this._clientPromise\n .then(function (client) {\n return client\n .request({\n endpoint: endpoint,\n method: \"post\",\n data: self._formatPaymentResourceData(options, config),\n })\n .then(function (data) {\n self.intentFromCreatePayment = options.intent;\n\n return data;\n });\n })\n .catch(function (err) {\n var status;\n\n if (self._setupError) {\n return Promise.reject(self._setupError);\n }\n\n status = err.details && err.details.httpStatus;\n\n if (status === 422) {\n return Promise.reject(\n new BraintreeError({\n type: errors.PAYPAL_INVALID_PAYMENT_OPTION.type,\n code: errors.PAYPAL_INVALID_PAYMENT_OPTION.code,\n message: errors.PAYPAL_INVALID_PAYMENT_OPTION.message,\n details: {\n originalError: err,\n },\n })\n );\n }\n\n return Promise.reject(\n convertToBraintreeError(err, {\n type: errors.PAYPAL_FLOW_FAILED.type,\n code: errors.PAYPAL_FLOW_FAILED.code,\n message: errors.PAYPAL_FLOW_FAILED.message,\n })\n );\n });\n};\n\n/**\n * Use this function to update {@link PayPalCheckout~lineItem|line items} and/or {@link PayPalCheckout~shippingOption|shipping options} associated with a PayPalCheckout flow (`paymentId`).\n * When a {@link callback} is defined, this function returns undefined and invokes the callback. The second callback argument, <code>data</code>, is the returned server data. If no callback is provided, `updatePayment` returns a promise that resolves with the server data.\n * @public\n * @param {object} options All options for the PayPalCheckout component.\n * @param {string} options.paymentId This should be PayPal `paymentId`.\n * @param {(string|number)} options.amount The amount of the transaction, including the amount of the selected shipping option, and all `line_items`.\n * * Supports up to 2 decimal digits.\n * @param {string} options.currency The currency code of the amount, such as 'USD'. Required when using the Checkout flow.\n * @param {shippingOption[]} [options.shippingOptions] List of {@link PayPalCheckout~shippingOption|shipping options} offered by the payee or merchant to the payer to ship or pick up their items.\n * @param {lineItem[]} [options.lineItems] The {@link PayPalCheckout~lineItem|line items} for this transaction. It can include up to 249 line items.\n * @param {object} [options.amountBreakdown] Optional collection of amounts that break down the total into individual pieces.\n * @param {string} [options.amountBreakdown.itemTotal] Optional, item amount\n * @param {string} [options.amountBreakdown.shipping] Optional, shipping amount\n * @param {string} [options.amountBreakdown.handling] Optional, handling amount\n * @param {string} [options.amountBreakdown.taxTotal] Optional, tax amount\n * @param {string} [options.amountBreakdown.insurance] Optional, insurance amount\n * @param {string} [options.amountBreakdown.shippingDiscount] Optional, shipping discount amount\n * @param {string} [options.amountBreakdown.discount] Optional, discount amount\n * @param {callback} [callback] The second argument is a PayPal `paymentId` or `billingToken` string, depending on whether `options.flow` is `checkout` or `vault`. This is also what is resolved by the promise if no callback is provided.\n * @example\n * // this paypal object is created by the PayPal JS SDK\n * // see https://github.com/paypal/paypal-checkout-components\n * paypal.Buttons({\n * createOrder: function () {\n * // when createPayment resolves, it is automatically passed to the PayPal JS SDK\n * return paypalCheckoutInstance.createPayment({\n * //\n * });\n * },\n * onShippingChange: function (data) {\n * // Examine data and determine if the payment needs to be updated.\n * // when updatePayment resolves, it is automatically passed to the PayPal JS SDK\n * return paypalCheckoutInstance.updatePayment({\n * paymentId: data.paymentId,\n * amount: '15.00',\n * currency: 'USD',\n * shippingOptions: [\n * {\n * id: 'shipping-speed-fast',\n * type: 'SHIPPING',\n * label: 'Fast Shipping',\n * selected: true,\n * amount: {\n * value: '5.00',\n * currency: 'USD'\n * }\n * },\n * {\n * id: 'shipping-speed-slow',\n * type: 'SHIPPING',\n * label: 'Slow Shipping',\n * selected: false,\n * amount: {\n * value: '1.00',\n * currency: 'USD'\n * }\n * }\n * ]\n * });\n * }\n * // Add other options, e.g. onApproved, onCancel, onError\n * }).render('#paypal-button');\n *\n * ```\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPayPalCheckout.prototype.updatePayment = function (options) {\n var self = this;\n var endpoint = \"paypal_hermes/patch_payment_resource\";\n\n if (!options || this._hasMissingOption(options, constants.REQUIRED_OPTIONS)) {\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.updatePayment.missing-options\"\n );\n\n return Promise.reject(\n new BraintreeError(errors.PAYPAL_MISSING_REQUIRED_OPTION)\n );\n }\n\n if (!this._verifyConsistentCurrency(options)) {\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.updatePayment.inconsistent-currencies\"\n );\n\n return Promise.reject(\n new BraintreeError({\n type: errors.PAYPAL_INVALID_PAYMENT_OPTION.type,\n code: errors.PAYPAL_INVALID_PAYMENT_OPTION.code,\n message: errors.PAYPAL_INVALID_PAYMENT_OPTION.message,\n details: {\n originalError: new Error(\n \"One or more shipping option currencies differ from checkout currency.\"\n ),\n },\n })\n );\n }\n\n analytics.sendEvent(this._clientPromise, \"paypal-checkout.updatePayment\");\n\n return this._clientPromise\n .then(function (client) {\n return client.request({\n endpoint: endpoint,\n method: \"post\",\n data: self._formatUpdatePaymentData(options),\n });\n })\n .catch(function (err) {\n var status = err.details && err.details.httpStatus;\n\n if (status === 422) {\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.updatePayment.invalid\"\n );\n\n return Promise.reject(\n new BraintreeError({\n type: errors.PAYPAL_INVALID_PAYMENT_OPTION.type,\n code: errors.PAYPAL_INVALID_PAYMENT_OPTION.code,\n message: errors.PAYPAL_INVALID_PAYMENT_OPTION.message,\n details: {\n originalError: err,\n },\n })\n );\n }\n\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.updatePayment.\" + errors.PAYPAL_FLOW_FAILED.code\n );\n\n return Promise.reject(\n convertToBraintreeError(err, {\n type: errors.PAYPAL_FLOW_FAILED.type,\n code: errors.PAYPAL_FLOW_FAILED.code,\n message: errors.PAYPAL_FLOW_FAILED.message,\n })\n );\n });\n};\n\n/**\n * Initializes the PayPal checkout flow with a payment method nonce that represents a vaulted PayPal account.\n * When a {@link callback} is defined, the function returns undefined and invokes the callback with the id to be used with the PayPal JS SDK. Otherwise, it returns a Promise that resolves with the id.\n * @public\n * @ignore\n * @param {object} options These options are identical to the {@link PayPalCheckout#createPayment|options for creating a payment resource}, except for the following:\n * * `flow` cannot be set (will always be `'checkout'`)\n * * `amount`, `currency`, and `vaultInitiatedCheckoutPaymentMethodToken` are required instead of optional\n * * Additional configuration is available (listed below)\n * @param {boolean} [options.optOutOfModalBackdrop=false] By default, the webpage will darken and become unusable while the PayPal window is open. For full control of the UI, pass `true` for this option.\n * @param {callback} [callback] The second argument, <code>payload</code>, is a {@link PayPalCheckout~tokenizePayload|tokenizePayload}. If no callback is provided, the promise resolves with a {@link PayPalCheckout~tokenizePayload|tokenizePayload}.\n * @example\n * paypalCheckoutInstance.startVaultInitiatedCheckout({\n * vaultInitiatedCheckoutPaymentMethodToken: 'nonce-that-represents-a-vaulted-paypal-account',\n * amount: '10.00',\n * currency: 'USD'\n * }).then(function (payload) {\n * // send payload.nonce to your server\n * }).catch(function (err) {\n * if (err.code === 'PAYPAL_POPUP_CLOSED') {\n * // indicates that customer canceled by\n * // manually closing the PayPal popup\n * }\n *\n * // handle other errors\n * });\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPayPalCheckout.prototype.startVaultInitiatedCheckout = function (options) {\n var missingRequiredParam;\n var self = this;\n\n if (this._vaultInitiatedCheckoutInProgress) {\n analytics.sendEvent(\n this._clientPromise,\n \"paypal-checkout.startVaultInitiatedCheckout.error.already-in-progress\"\n );\n\n return Promise.reject(\n new BraintreeError(\n errors.PAYPAL_START_VAULT_INITIATED_CHECKOUT_IN_PROGRESS\n )\n );\n }\n\n REQUIRED_PARAMS_FOR_START_VAULT_INITIATED_CHECKOUT.forEach(function (param) {\n if (!options.hasOwnProperty(param)) {\n missingRequiredParam = param;\n }\n });\n\n if (missingRequiredParam) {\n return Promise.reject(\n new BraintreeError({\n type: errors.PAYPAL_START_VAULT_INITIATED_CHECKOUT_PARAM_REQUIRED.type,\n code: errors.PAYPAL_START_VAULT_INITIATED_CHECKOUT_PARAM_REQUIRED.code,\n message: \"Required param \" + missingRequiredParam + \" is missing.\",\n })\n );\n }\n\n this._vaultInitiatedCheckoutInProgress = true;\n this._addModalBackdrop(options);\n\n options = assign({}, options, {\n flow: \"checkout\",\n });\n\n analytics.sendEvent(\n this._clientPromise,\n \"paypal-checkout.startVaultInitiatedCheckout.started\"\n );\n\n return this._waitForVaultInitiatedCheckoutDependencies()\n .then(function () {\n var frameCommunicationPromise = new ExtendedPromise();\n var startVaultInitiatedCheckoutPromise = self\n ._createPaymentResource(options, {\n returnUrl: self._constructVaultCheckutUrl(\"redirect-frame\"),\n cancelUrl: self._constructVaultCheckutUrl(\"cancel-frame\"),\n })\n .then(function (response) {\n var redirectUrl = response.paymentResource.redirectUrl;\n\n self._frameService.redirect(redirectUrl);\n\n return frameCommunicationPromise;\n });\n\n self._frameService.open(\n {},\n self._createFrameServiceCallback(frameCommunicationPromise)\n );\n\n return startVaultInitiatedCheckoutPromise;\n })\n .catch(function (err) {\n self._vaultInitiatedCheckoutInProgress = false;\n self._removeModalBackdrop();\n\n if (err.code === \"FRAME_SERVICE_FRAME_CLOSED\") {\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.startVaultInitiatedCheckout.canceled.by-customer\"\n );\n\n return Promise.reject(\n new BraintreeError(\n errors.PAYPAL_START_VAULT_INITIATED_CHECKOUT_CANCELED\n )\n );\n }\n\n if (self._frameService) {\n self._frameService.close();\n }\n\n if (\n err.code &&\n err.code.indexOf(\"FRAME_SERVICE_FRAME_OPEN_FAILED\") > -1\n ) {\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.startVaultInitiatedCheckout.failed.popup-not-opened\"\n );\n\n return Promise.reject(\n new BraintreeError({\n code: errors.PAYPAL_START_VAULT_INITIATED_CHECKOUT_POPUP_OPEN_FAILED\n .code,\n type: errors.PAYPAL_START_VAULT_INITIATED_CHECKOUT_POPUP_OPEN_FAILED\n .type,\n message:\n errors.PAYPAL_START_VAULT_INITIATED_CHECKOUT_POPUP_OPEN_FAILED\n .message,\n details: {\n originalError: err,\n },\n })\n );\n }\n\n return Promise.reject(err);\n })\n .then(function (response) {\n self._frameService.close();\n self._vaultInitiatedCheckoutInProgress = false;\n self._removeModalBackdrop();\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.startVaultInitiatedCheckout.succeeded\"\n );\n\n return Promise.resolve(response);\n });\n};\n\nPayPalCheckout.prototype._addModalBackdrop = function (options) {\n if (options.optOutOfModalBackdrop) {\n return;\n }\n\n if (!this._modalBackdrop) {\n this._modalBackdrop = document.createElement(\"div\");\n this._modalBackdrop.setAttribute(\n \"data-braintree-paypal-vault-initiated-checkout-modal\",\n true\n );\n this._modalBackdrop.style.position = \"fixed\";\n this._modalBackdrop.style.top = 0;\n this._modalBackdrop.style.bottom = 0;\n this._modalBackdrop.style.left = 0;\n this._modalBackdrop.style.right = 0;\n this._modalBackdrop.style.zIndex = 9999;\n this._modalBackdrop.style.background = \"black\";\n this._modalBackdrop.style.opacity = \"0.7\";\n this._modalBackdrop.addEventListener(\n \"click\",\n function () {\n this.focusVaultInitiatedCheckoutWindow();\n }.bind(this)\n );\n }\n\n document.body.appendChild(this._modalBackdrop);\n};\n\nPayPalCheckout.prototype._removeModalBackdrop = function () {\n if (!(this._modalBackdrop && this._modalBackdrop.parentNode)) {\n return;\n }\n\n this._modalBackdrop.parentNode.removeChild(this._modalBackdrop);\n};\n\n/**\n * Closes the PayPal window if it is opened via `startVaultInitiatedCheckout`.\n * @public\n * @ignore\n * @param {callback} [callback] Gets called when window is closed.\n * @example\n * paypalCheckoutInstance.closeVaultInitiatedCheckoutWindow();\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPayPalCheckout.prototype.closeVaultInitiatedCheckoutWindow = function () {\n if (this._vaultInitiatedCheckoutInProgress) {\n analytics.sendEvent(\n this._clientPromise,\n \"paypal-checkout.startVaultInitiatedCheckout.canceled.by-merchant\"\n );\n }\n\n return this._waitForVaultInitiatedCheckoutDependencies().then(\n function () {\n this._frameService.close();\n }.bind(this)\n );\n};\n\n/**\n * Focuses the PayPal window if it is opened via `startVaultInitiatedCheckout`.\n * @public\n * @ignore\n * @param {callback} [callback] Gets called when window is focused.\n * @example\n * paypalCheckoutInstance.focusVaultInitiatedCheckoutWindow();\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPayPalCheckout.prototype.focusVaultInitiatedCheckoutWindow = function () {\n return this._waitForVaultInitiatedCheckoutDependencies().then(\n function () {\n this._frameService.focus();\n }.bind(this)\n );\n};\n\nPayPalCheckout.prototype._createFrameServiceCallback = function (\n frameCommunicationPromise\n) {\n var self = this;\n\n // TODO when a merchant integrates an iOS or Android integration\n // with a webview using the web SDK, we will have to add popupbridge\n // support\n return function (err, payload) {\n if (err) {\n frameCommunicationPromise.reject(err);\n } else if (payload) {\n self._frameService.redirect(self._loadingFrameUrl);\n self\n .tokenizePayment({\n paymentToken: payload.token,\n payerID: payload.PayerID,\n paymentID: payload.paymentId,\n orderID: payload.orderId,\n })\n .then(function (res) {\n frameCommunicationPromise.resolve(res);\n })\n .catch(function (tokenizationError) {\n frameCommunicationPromise.reject(tokenizationError);\n });\n }\n };\n};\n\nPayPalCheckout.prototype._waitForVaultInitiatedCheckoutDependencies =\n function () {\n var self = this;\n\n return this._clientPromise.then(function () {\n return self._frameServicePromise;\n });\n };\n\nPayPalCheckout.prototype._constructVaultCheckutUrl = function (frameName) {\n var serviceId = this._frameService._serviceId;\n\n return (\n this._assetsUrl +\n \"/html/\" +\n frameName +\n useMin(this._isDebug) +\n \".html?channel=\" +\n serviceId\n );\n};\n\n/**\n * Tokenizes the authorize data from the PayPal JS SDK when completing a buyer approval flow.\n * When a {@link callback} is defined, invokes the callback with {@link PayPalCheckout~tokenizePayload|tokenizePayload} and returns undefined. Otherwise, returns a Promise that resolves with a {@link PayPalCheckout~tokenizePayload|tokenizePayload}.\n * @public\n * @param {object} tokenizeOptions Tokens and IDs required to tokenize the payment.\n * @param {string} tokenizeOptions.payerId Payer ID returned by PayPal `onApproved` callback.\n * @param {string} [tokenizeOptions.paymentId] Payment ID returned by PayPal `onApproved` callback.\n * @param {string} [tokenizeOptions.billingToken] Billing Token returned by PayPal `onApproved` callback.\n * @param {boolean} [tokenizeOptions.vault=true] Whether or not to vault the resulting PayPal account (if using a client token generated with a customer id and the vault flow).\n * @param {callback} [callback] The second argument, <code>payload</code>, is a {@link PayPalCheckout~tokenizePayload|tokenizePayload}. If no callback is provided, the promise resolves with a {@link PayPalCheckout~tokenizePayload|tokenizePayload}.\n * @example <caption>Opt out of auto-vaulting behavior</caption>\n * // create the paypalCheckoutInstance with a client token generated with a customer id\n * paypal.Buttons({\n * createBillingAgreement: function () {\n * return paypalCheckoutInstance.createPayment({\n * flow: 'vault'\n * // your other createPayment options here\n * });\n * },\n * onApproved: function (data) {\n * data.vault = false;\n *\n * return paypalCheckoutInstance.tokenizePayment(data);\n * },\n * // Add other options, e.g. onCancel, onError\n * }).render('#paypal-button');\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPayPalCheckout.prototype.tokenizePayment = function (tokenizeOptions) {\n var self = this;\n var shouldVault = true;\n var payload;\n var options = {\n flow:\n tokenizeOptions.billingToken && !tokenizeOptions.paymentID\n ? \"vault\"\n : \"checkout\",\n intent: tokenizeOptions.intent || this.intentFromCreatePayment,\n };\n var params = {\n // The paymentToken provided by the PayPal JS SDK is the EC Token\n ecToken: tokenizeOptions.paymentToken,\n billingToken: tokenizeOptions.billingToken,\n payerId: tokenizeOptions.payerID,\n paymentId: tokenizeOptions.paymentID,\n orderId: tokenizeOptions.orderID,\n shippingOptionsId: tokenizeOptions.shippingOptionsId,\n };\n\n if (tokenizeOptions.hasOwnProperty(\"vault\")) {\n shouldVault = tokenizeOptions.vault;\n }\n\n options.vault = shouldVault;\n\n analytics.sendEvent(\n this._clientPromise,\n \"paypal-checkout.tokenization.started\"\n );\n\n return this._clientPromise\n .then(function (client) {\n return client.request({\n endpoint: \"payment_methods/paypal_accounts\",\n method: \"post\",\n data: self._formatTokenizeData(options, params),\n });\n })\n .then(function (response) {\n payload = self._formatTokenizePayload(response);\n\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.tokenization.success\"\n );\n if (payload.creditFinancingOffered) {\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.credit.accepted\"\n );\n }\n\n return payload;\n })\n .catch(function (err) {\n if (self._setupError) {\n return Promise.reject(self._setupError);\n }\n\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.tokenization.failed\"\n );\n\n return Promise.reject(\n convertToBraintreeError(err, {\n type: errors.PAYPAL_ACCOUNT_TOKENIZATION_FAILED.type,\n code: errors.PAYPAL_ACCOUNT_TOKENIZATION_FAILED.code,\n message: errors.PAYPAL_ACCOUNT_TOKENIZATION_FAILED.message,\n })\n );\n });\n};\n\n/**\n * Resolves with the PayPal client id to be used when loading the PayPal SDK.\n * @public\n * @param {callback} [callback] The second argument, <code>id</code>, is a the PayPal client id. If no callback is provided, the promise resolves with the PayPal client id.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * paypalCheckoutInstance.getClientId().then(function (id) {\n * var script = document.createElement('script');\n *\n * script.src = 'https://www.paypal.com/sdk/js?client-id=' + id;\n * script.onload = function () {\n * // setup the PayPal SDK\n * };\n *\n * document.body.appendChild(script);\n * });\n */\nPayPalCheckout.prototype.getClientId = function () {\n return this._clientPromise.then(function (client) {\n return client.getConfiguration().gatewayConfiguration.paypal.clientId;\n });\n};\n\n/**\n * Resolves when the PayPal SDK has been successfully loaded onto the page.\n * @public\n * @param {object} [options] A configuration object to modify the query params and data-attributes on the PayPal SDK. A subset of the parameters are listed below. For a full list of query params, see the [PayPal docs](https://developer.paypal.com/docs/checkout/reference/customize-sdk/?mark=query#query-parameters).\n * @param {string} [options.client-id] By default, this will be the client id associated with the authorization used to create the Braintree component. When used in conjunction with passing `authorization` when creating the PayPal Checkout component, you can speed up the loading of the PayPal SDK.\n * @param {string} [options.intent=\"authorize\"] By default, the PayPal SDK defaults to an intent of `capture`. Since the default intent when calling {@link PayPalCheckout#createPayment|`createPayment`} is `authorize`, the PayPal SDK will be loaded with `intent=authorize`. If you wish to use a different intent when calling {@link PayPalCheckout#createPayment|`createPayment`}, make sure it matches here. If `sale` is used, it will be converted to `capture` for the PayPal SDK. If the `vault: true` param is used, `tokenize` will be passed as the default intent.\n * @param {string} [options.locale=en_US] Use this option to change the language, links, and terminology used in the PayPal flow. This locale will be used unless the buyer has set a preferred locale for their account. If an unsupported locale is supplied, a fallback locale (determined by buyer preference or browser data) will be used and no error will be thrown.\n *\n * Supported locales are:\n * `da_DK`,\n * `de_DE`,\n * `en_AU`,\n * `en_GB`,\n * `en_US`,\n * `es_ES`,\n * `fr_CA`,\n * `fr_FR`,\n * `id_ID`,\n * `it_IT`,\n * `ja_JP`,\n * `ko_KR`,\n * `nl_NL`,\n * `no_NO`,\n * `pl_PL`,\n * `pt_BR`,\n * `pt_PT`,\n * `ru_RU`,\n * `sv_SE`,\n * `th_TH`,\n * `zh_CN`,\n * `zh_HK`,\n * and `zh_TW`.\n *\n * @param {string} [options.currency=\"USD\"] If a currency is passed in {@link PayPalCheckout#createPayment|`createPayment`}, it must match the currency passed here.\n * @param {boolean} [options.vault] Must be `true` when using `flow: vault` in {@link PayPalCheckout#createPayment|`createPayment`}.\n * @param {string} [options.components=buttons] By default, the Braintree SDK will only load the PayPal smart buttons component. If you would like to load just the [messages component](https://developer.paypal.com/docs/business/checkout/add-capabilities/credit-messaging/), pass `messages`. If you would like to load both, pass `buttons,messages`\n * @param {object} [options.dataAttributes] The data attributes to apply to the script. Any data attribute can be passed. A subset of the parameters are listed below. For a full list of data attributes, see the [PayPal docs](https://developer.paypal.com/docs/checkout/reference/customize-sdk/#script-parameters).\n * @param {string} [options.dataAttributes.client-token] The client token to use in the script. (usually not needed)\n * @param {string} [options.dataAttributes.csp-nonce] See the [PayPal docs about content security nonces](https://developer.paypal.com/docs/checkout/reference/customize-sdk/#csp-nonce).\n * @param {callback} [callback] Called when the PayPal SDK has been loaded onto the page. The second argument is the PayPal Checkout instance. If no callback is provided, the promise resolves with the PayPal Checkout instance when the PayPal SDK has been loaded onto the page.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example <caption>Without options</caption>\n * paypalCheckoutInstance.loadPayPalSDK().then(function () {\n * // window.paypal.Buttons is now available to use\n * });\n * @example <caption>With options</caption>\n * paypalCheckoutInstance.loadPayPalSDK({\n * 'client-id': 'PayPal Client Id', // Can speed up rendering time to hardcode this value\n *\n * intent: 'capture', // Make sure this value matches the value in createPayment\n * currency: 'USD', // Make sure this value matches the value in createPayment\n * }).then(function () {\n * // window.paypal.Buttons is now available to use\n * });\n * @example <caption>With Vaulting</caption>\n * paypalCheckoutInstance.loadPayPalSDK({\n * vault: true\n * }).then(function () {\n * // window.paypal.Buttons is now available to use\n * });\n */\nPayPalCheckout.prototype.loadPayPalSDK = function (options) {\n var idPromise, src;\n var loadPromise = new ExtendedPromise();\n var dataAttributes = (options && options.dataAttributes) || {};\n var userIdToken =\n dataAttributes[\"user-id-token\"] || dataAttributes[\"data-user-id-token\"];\n\n if (!userIdToken) {\n userIdToken =\n this._authorizationInformation.fingerprint &&\n this._authorizationInformation.fingerprint.split(\"?\")[0];\n }\n\n this._paypalScript = document.createElement(\"script\");\n\n // NEXT_MAJOR_VERSION\n // this options object should have 2 properties:\n // * queryParams\n // * dataAttributes\n // should make organizing this better than squashing\n // all the query params at the top level and extracting\n // the data attributes\n options = assign(\n {},\n {\n components: \"buttons\",\n },\n options\n );\n delete options.dataAttributes;\n\n // NEXT_MAJOR_VERSION if merchant passes an explicit intent,\n // currency, amount, etc, save those for use in createPayment\n // if no explicit param of that type is passed in when calling\n // createPayment to reduce the number of items that need to be\n // duplicated here and in createPayment\n if (options.vault) {\n options.intent = options.intent || \"tokenize\";\n } else {\n options.intent = options.intent || \"authorize\";\n options.currency = options.currency || \"USD\";\n }\n\n src = \"https://www.paypal.com/sdk/js?\";\n this._paypalScript.onload = function () {\n loadPromise.resolve();\n };\n\n Object.keys(dataAttributes).forEach(\n function (attribute) {\n this._paypalScript.setAttribute(\n \"data-\" + attribute.replace(/^data\\-/, \"\"),\n dataAttributes[attribute]\n );\n }.bind(this)\n );\n\n if (options[\"client-id\"]) {\n idPromise = Promise.resolve(options[\"client-id\"]);\n } else {\n idPromise = this.getClientId();\n }\n\n idPromise.then(\n function (id) {\n options[\"client-id\"] = id;\n\n if (this._autoSetDataUserIdToken && userIdToken) {\n this._paypalScript.setAttribute(\"data-user-id-token\", userIdToken);\n\n // preloading improves the rendering time of the PayPal button\n this._attachPreloadPixel({\n id: id,\n userIdToken: userIdToken,\n amount: dataAttributes.amount,\n currency: options.currency,\n merchantId: options[\"merchant-id\"],\n });\n }\n\n this._paypalScript.src = querystring.queryify(src, options);\n document.head.insertBefore(\n this._paypalScript,\n document.head.firstElementChild\n );\n }.bind(this)\n );\n\n return loadPromise.then(\n function () {\n return this;\n }.bind(this)\n );\n};\n\nPayPalCheckout.prototype._attachPreloadPixel = function (options) {\n var request;\n var id = options.id;\n var userIdToken = options.userIdToken;\n var env = this._authorizationInformation.environment;\n var subdomain = env === \"production\" ? \"\" : \"sandbox.\";\n var url = PAYPAL_SDK_PRELOAD_URL.replace(\"{ENV}\", subdomain);\n var preloadOptions = {\n \"client-id\": id,\n \"user-id-token\": userIdToken,\n };\n\n if (options.amount) {\n preloadOptions.amount = options.amount;\n }\n if (options.currency) {\n preloadOptions.currency = options.currency;\n }\n if (options.merchantId) {\n preloadOptions[\"merchant-id\"] = options.merchantId;\n }\n\n request = new XMLHttpRequest();\n request.open(\"GET\", querystring.queryify(url, preloadOptions));\n request.send();\n};\n\nPayPalCheckout.prototype._formatPaymentResourceData = function (\n options,\n config\n) {\n var key;\n var gatewayConfiguration = this._configuration.gatewayConfiguration;\n // NEXT_MAJOR_VERSION default value for intent in PayPal SDK is capture\n // but our integrations default value is authorize. Default this to capture\n // in the next major version.\n var intent = options.intent;\n var paymentResource = {\n // returnUrl and cancelUrl are required in hermes create_payment_resource route\n // but are not used by the PayPal sdk, except to redirect to an error page\n returnUrl: config.returnUrl || \"https://www.paypal.com/checkoutnow/error\",\n cancelUrl: config.cancelUrl || \"https://www.paypal.com/checkoutnow/error\",\n offerPaypalCredit: options.offerCredit === true,\n merchantAccountId: this._merchantAccountId,\n experienceProfile: {\n brandName: options.displayName || gatewayConfiguration.paypal.displayName,\n localeCode: options.locale,\n noShipping: (!options.enableShippingAddress).toString(),\n addressOverride: options.shippingAddressEditable === false,\n landingPageType: options.landingPageType,\n },\n shippingOptions: options.shippingOptions,\n };\n\n if (options.flow === \"checkout\") {\n paymentResource.amount = options.amount;\n paymentResource.currencyIsoCode = options.currency;\n paymentResource.requestBillingAgreement = options.requestBillingAgreement;\n\n if (intent) {\n // 'sale' has been changed to 'capture' in PayPal's backend, but\n // we use an old version with 'sale'. We provide capture as an alias\n // to match the PayPal SDK\n if (intent === \"capture\") {\n intent = \"sale\";\n }\n paymentResource.intent = intent;\n }\n\n if (options.hasOwnProperty(\"lineItems\")) {\n paymentResource.lineItems = options.lineItems;\n }\n\n if (options.hasOwnProperty(\"vaultInitiatedCheckoutPaymentMethodToken\")) {\n paymentResource.vaultInitiatedCheckoutPaymentMethodToken =\n options.vaultInitiatedCheckoutPaymentMethodToken;\n }\n\n if (options.hasOwnProperty(\"shippingOptions\")) {\n paymentResource.shippingOptions = options.shippingOptions;\n }\n\n for (key in options.shippingAddressOverride) {\n if (options.shippingAddressOverride.hasOwnProperty(key)) {\n paymentResource[key] = options.shippingAddressOverride[key];\n }\n }\n\n if (options.hasOwnProperty(\"billingAgreementDetails\")) {\n paymentResource.billingAgreementDetails = options.billingAgreementDetails;\n }\n } else {\n paymentResource.shippingAddress = options.shippingAddressOverride;\n\n if (options.billingAgreementDescription) {\n paymentResource.description = options.billingAgreementDescription;\n }\n }\n\n // this needs to be set outside of the block where add it to the\n // payment request so that a follow up tokenization call can use it,\n // but if a second create payment resource call is made without\n // the correlation id, we want to reset it to undefined so that the\n // tokenization call does not use a stale correlation id\n this._riskCorrelationId = options.riskCorrelationId;\n if (options.riskCorrelationId) {\n paymentResource.correlationId = this._riskCorrelationId;\n }\n\n return paymentResource;\n};\n\n/**\n * @ignore\n * @static\n * @function _verifyConsistentCurrency\n * Verifies that `options.currency` and the currencies for each `shippingOption` the same.\n * @param {object} options `options` provided for `updatePayment`.\n * @returns {boolean} true is currencies match (or no shipping options); false if currencies do not match.\n */\n\nPayPalCheckout.prototype._verifyConsistentCurrency = function (options) {\n if (\n options.currency &&\n options.hasOwnProperty(\"shippingOptions\") &&\n Array.isArray(options.shippingOptions)\n ) {\n return options.shippingOptions.every(function (item) {\n return (\n item.amount &&\n item.amount.currency &&\n options.currency.toLowerCase() === item.amount.currency.toLowerCase()\n );\n });\n }\n\n return true;\n};\n\n/**\n * @ignore\n * @static\n * @function _hasMissingOption\n * @param {object} options All options provided for intiating the PayPal flow.\n * @param {array} required A list of required inputs that must be include as part of the options.\n * @returns {boolean} Returns a boolean.\n */\n\nPayPalCheckout.prototype._hasMissingOption = function (options, required) {\n var i, option;\n\n required = required || [];\n\n if (\n !options.hasOwnProperty(\"amount\") &&\n !options.hasOwnProperty(\"lineItems\")\n ) {\n return true;\n }\n\n for (i = 0; i < required.length; i++) {\n option = required[i];\n\n if (!options.hasOwnProperty(option)) {\n return true;\n }\n }\n\n return false;\n};\n\nPayPalCheckout.prototype._formatUpdatePaymentData = function (options) {\n var self = this;\n var paymentResource = {\n merchantAccountId: this._merchantAccountId,\n paymentId: options.paymentId || options.orderId,\n currencyIsoCode: options.currency,\n };\n\n if (options.hasOwnProperty(\"amount\")) {\n paymentResource.amount = options.amount;\n }\n\n if (options.hasOwnProperty(\"lineItems\")) {\n paymentResource.lineItems = options.lineItems;\n }\n\n if (options.hasOwnProperty(\"shippingOptions\")) {\n paymentResource.shippingOptions = options.shippingOptions;\n }\n\n if (options.hasOwnProperty(\"amountBreakdown\")) {\n paymentResource.amountBreakdown = options.amountBreakdown;\n }\n\n /* shippingAddress not supported yet */\n if (options.hasOwnProperty(\"shippingAddress\")) {\n analytics.sendEvent(\n self._clientPromise,\n \"paypal-checkout.updatePayment.shippingAddress.provided.by-the-merchant\"\n );\n\n paymentResource.line1 = options.shippingAddress.line1;\n\n if (options.shippingAddress.hasOwnProperty(\"line2\")) {\n paymentResource.line2 = options.shippingAddress.line2;\n }\n\n paymentResource.city = options.shippingAddress.city;\n paymentResource.state = options.shippingAddress.state;\n paymentResource.postalCode = options.shippingAddress.postalCode;\n paymentResource.countryCode = options.shippingAddress.countryCode;\n\n if (options.shippingAddress.hasOwnProperty(\"phone\")) {\n paymentResource.phone = options.shippingAddress.phone;\n }\n\n if (options.shippingAddress.hasOwnProperty(\"recipientName\")) {\n paymentResource.recipientName = options.shippingAddress.recipientName;\n }\n }\n\n return paymentResource;\n};\n\nPayPalCheckout.prototype._formatTokenizeData = function (options, params) {\n var clientConfiguration = this._configuration;\n var gatewayConfiguration = clientConfiguration.gatewayConfiguration;\n var isTokenizationKey =\n clientConfiguration.authorizationType === \"TOKENIZATION_KEY\";\n var isVaultFlow = options.flow === \"vault\";\n var correlationId =\n this._riskCorrelationId || params.billingToken || params.ecToken;\n var data = {\n paypalAccount: {\n correlationId: correlationId,\n options: {\n validate: isVaultFlow && !isTokenizationKey && options.vault,\n },\n },\n };\n\n if (isVaultFlow) {\n data.paypalAccount.billingAgreementToken = params.billingToken;\n } else {\n data.paypalAccount.paymentToken = params.paymentId || params.orderId;\n data.paypalAccount.payerId = params.payerId;\n data.paypalAccount.unilateral =\n gatewayConfiguration.paypal.unvettedMerchant;\n\n if (options.intent) {\n data.paypalAccount.intent = options.intent;\n }\n }\n\n if (this._merchantAccountId) {\n data.merchantAccountId = this._merchantAccountId;\n }\n\n return data;\n};\n\nPayPalCheckout.prototype._formatTokenizePayload = function (response) {\n var payload;\n var account = {};\n\n if (response.paypalAccounts) {\n account = response.paypalAccounts[0];\n }\n\n payload = {\n nonce: account.nonce,\n details: {},\n type: account.type,\n };\n\n if (account.details && account.details.payerInfo) {\n payload.details = account.details.payerInfo;\n }\n\n if (account.details && account.details.creditFinancingOffered) {\n payload.creditFinancingOffered = account.details.creditFinancingOffered;\n }\n\n if (account.details && account.details.shippingOptionId) {\n payload.shippingOptionId = account.details.shippingOptionId;\n }\n\n if (account.details && account.details.cobrandedCardLabel) {\n payload.cobrandedCardLabel = account.details.cobrandedCardLabel;\n }\n\n return payload;\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/paypal-checkout.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * paypalCheckoutInstance.teardown();\n * @example <caption>With callback</caption>\n * paypalCheckoutInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPayPalCheckout.prototype.teardown = function () {\n var self = this;\n\n convertMethodsToError(this, methods(PayPalCheckout.prototype));\n\n if (this._paypalScript && this._paypalScript.parentNode) {\n this._paypalScript.parentNode.removeChild(this._paypalScript);\n }\n\n return this._frameServicePromise\n .catch(function () {\n // no need to error in teardown for an error setting up the frame service\n })\n .then(function () {\n if (!self._frameService) {\n return Promise.resolve();\n }\n\n return self._frameService.teardown();\n });\n};\n\nmodule.exports = wrapPromise.wrapPrototype(PayPalCheckout);\n\n},{\"../lib/analytics\":132,\"../lib/assign\":134,\"../lib/braintree-error\":137,\"../lib/constants\":139,\"../lib/convert-methods-to-error\":140,\"../lib/convert-to-braintree-error\":141,\"../lib/create-assets-url\":142,\"../lib/create-authorization-data\":143,\"../lib/create-deferred-client\":144,\"../lib/frame-service/external\":152,\"../lib/methods\":168,\"../lib/querystring\":170,\"../lib/use-min\":173,\"../paypal/shared/constants\":193,\"./errors\":188,\"@braintree/extended-promise\":31,\"@braintree/wrap-promise\":40}],191:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar frameService = _dereq_(\"../../lib/frame-service/external\");\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar convertToBraintreeError = _dereq_(\"../../lib/convert-to-braintree-error\");\nvar useMin = _dereq_(\"../../lib/use-min\");\nvar once = _dereq_(\"../../lib/once\");\nvar VERSION = \"3.103.0\";\nvar constants = _dereq_(\"../shared/constants\");\nvar INTEGRATION_TIMEOUT_MS =\n _dereq_(\"../../lib/constants\").INTEGRATION_TIMEOUT_MS;\nvar analytics = _dereq_(\"../../lib/analytics\");\nvar methods = _dereq_(\"../../lib/methods\");\nvar deferred = _dereq_(\"../../lib/deferred\");\nvar errors = _dereq_(\"../shared/errors\");\nvar convertMethodsToError = _dereq_(\"../../lib/convert-methods-to-error\");\nvar querystring = _dereq_(\"../../lib/querystring\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @typedef {object} PayPal~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {string} type The payment method type, always `PayPalAccount`.\n * @property {object} details Additional PayPal account details.\n * @property {string} details.email User's email address.\n * @property {string} details.payerId User's payer ID, the unique identifier for each PayPal account.\n * @property {string} details.firstName User's given name.\n * @property {string} details.lastName User's surname.\n * @property {?string} details.countryCode User's 2 character country code.\n * @property {?string} details.phone User's phone number (e.g. 555-867-5309).\n * @property {?object} details.shippingAddress User's shipping address details, only available if shipping address is enabled.\n * @property {string} details.shippingAddress.recipientName Recipient of postage.\n * @property {string} details.shippingAddress.line1 Street number and name.\n * @property {string} details.shippingAddress.line2 Extended address.\n * @property {string} details.shippingAddress.city City or locality.\n * @property {string} details.shippingAddress.state State or region.\n * @property {string} details.shippingAddress.postalCode Postal code.\n * @property {string} details.shippingAddress.countryCode 2 character country code (e.g. US).\n * @property {?object} details.billingAddress User's billing address details.\n * Not available to all merchants; [contact support](https://developer.paypal.com/braintree/help) for details on eligibility and enabling this feature.\n * Alternatively, see `shippingAddress` above as an available client option.\n * @property {string} details.billingAddress.line1 Street number and name.\n * @property {string} details.billingAddress.line2 Extended address.\n * @property {string} details.billingAddress.city City or locality.\n * @property {string} details.billingAddress.state State or region.\n * @property {string} details.billingAddress.postalCode Postal code.\n * @property {string} details.billingAddress.countryCode 2 character country code (e.g. US).\n * @property {?object} creditFinancingOffered This property will only be present when the customer pays with PayPal Credit.\n * @property {object} creditFinancingOffered.totalCost This is the estimated total payment amount including interest and fees the user will pay during the lifetime of the loan.\n * @property {string} creditFinancingOffered.totalCost.value An amount defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm) for the given currency.\n * @property {string} creditFinancingOffered.totalCost.currency 3 letter currency code as defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm).\n * @property {number} creditFinancingOffered.term Length of financing terms in months.\n * @property {object} creditFinancingOffered.monthlyPayment This is the estimated amount per month that the customer will need to pay including fees and interest.\n * @property {string} creditFinancingOffered.monthlyPayment.value An amount defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm) for the given currency.\n * @property {string} creditFinancingOffered.monthlyPayment.currency 3 letter currency code as defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm).\n * @property {object} creditFinancingOffered.totalInterest Estimated interest or fees amount the payer will have to pay during the lifetime of the loan.\n * @property {string} creditFinancingOffered.totalInterest.value An amount defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm) for the given currency.\n * @property {string} creditFinancingOffered.totalInterest.currency 3 letter currency code as defined by [ISO 4217](https://www.iso.org/iso/home/standards/currency_codes.htm).\n * @property {boolean} creditFinancingOffered.payerAcceptance Status of whether the customer ultimately was approved for and chose to make the payment using the approved installment credit.\n * @property {boolean} creditFinancingOffered.cartAmountImmutable Indicates whether the cart amount is editable after payer's acceptance on PayPal side.\n *\n */\n\n/**\n * @typedef {object} PayPal~tokenizeReturn\n * @property {Function} close A handle to close the PayPal checkout flow.\n * @property {Function} focus A handle to focus the PayPal checkout flow. Note that some browsers (notably iOS Safari) do not support focusing popups. Firefox requires the focus call to occur as the result of a user interaction, such as a button click.\n */\n\n/**\n * @class\n * @param {object} options see {@link module:braintree-web/paypal.create|paypal.create}\n * @classdesc This class represents a PayPal component. Instances of this class can open a PayPal window for authenticating a PayPal account. Any additional UI, such as disabling the page while authentication is taking place, is up to the developer.\n *\n * This component has been deprecated in favor of the {@link PayPalCheckout|PayPal Checkout component}, which provides a fully managed UI. New features will not be added to this component.\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/paypal.create|braintree-web.paypal.create} instead.</strong>\n */\nfunction PayPal(options) {\n this._client = options.client;\n this._assetsUrl =\n options.client.getConfiguration().gatewayConfiguration.paypal.assetsUrl +\n \"/web/\" +\n VERSION;\n this._isDebug = options.client.getConfiguration().isDebug;\n this._loadingFrameUrl =\n this._assetsUrl +\n \"/html/paypal-landing-frame\" +\n useMin(this._isDebug) +\n \".html\";\n this._authorizationInProgress = false;\n}\n\nPayPal.prototype._initialize = function () {\n var self = this;\n var client = this._client;\n var failureTimeout = setTimeout(function () {\n analytics.sendEvent(client, \"paypal.load.timed-out\");\n }, INTEGRATION_TIMEOUT_MS);\n\n return new Promise(function (resolve) {\n frameService.create(\n {\n name: constants.LANDING_FRAME_NAME,\n dispatchFrameUrl:\n self._assetsUrl +\n \"/html/dispatch-frame\" +\n useMin(self._isDebug) +\n \".html\",\n openFrameUrl: self._loadingFrameUrl,\n },\n function (service) {\n self._frameService = service;\n clearTimeout(failureTimeout);\n analytics.sendEvent(client, \"paypal.load.succeeded\");\n resolve(self);\n }\n );\n });\n};\n\n/**\n * Launches the PayPal login flow and returns a nonce payload. Only one PayPal login flow should be active at a time. One way to achieve this is to disable your PayPal button while the flow is open.\n * @public\n * @param {object} options All tokenization options for the PayPal component.\n * @param {string} options.flow Set to 'checkout' for one-time payment flow, or 'vault' for Vault flow. If 'vault' is used with a client token generated with a customer id, the PayPal account will be added to that customer as a saved payment method.\n * @param {string} [options.intent=authorize]\n * * `authorize` - Submits the transaction for authorization but not settlement.\n * * `order` - Validates the transaction without an authorization (i.e. without holding funds). Useful for authorizing and capturing funds up to 90 days after the order has been placed. Only available for Checkout flow.\n * * `sale` - Payment will be immediately submitted for settlement upon creating a transaction.\n * @param {boolean} [options.offerCredit=false] Offers PayPal Credit as the default funding instrument for the transaction. If the customer isn't pre-approved for PayPal Credit, they will be prompted to apply for it.\n * @param {boolean} [options.offerPayLater=false] Offers PayPal Pay Later if the customer qualifies. Defaults to false. Only available with `flow: 'checkout'`.\n * @param {string} [options.useraction]\n * Changes the call-to-action in the PayPal flow. By default the final button will show the localized\n * word for \"Continue\" and implies that the final amount billed is not yet known.\n *\n * Setting this option to `commit` changes the button text to \"Pay Now\" and page text will convey to\n * the user that billing will take place immediately.\n * @param {(string|number)} [options.amount] The amount of the transaction. Required when using the Checkout flow.\n * @param {string} [options.currency] The currency code of the amount, such as 'USD'. Required when using the Checkout flow.\n * @param {string} [options.displayName] The merchant name displayed inside of the PayPal lightbox; defaults to the company name on your Braintree account\n * @param {string} [options.locale=en_US] Use this option to change the language, links, and terminology used in the PayPal flow. This locale will be used unless the buyer has set a preferred locale for their account. If an unsupported locale is supplied, a fallback locale (determined by buyer preference or browser data) will be used and no error will be thrown.\n *\n * Supported locales are:\n * `da_DK`,\n * `de_DE`,\n * `en_AU`,\n * `en_GB`,\n * `en_US`,\n * `es_ES`,\n * `fr_CA`,\n * `fr_FR`,\n * `id_ID`,\n * `it_IT`,\n * `ja_JP`,\n * `ko_KR`,\n * `nl_NL`,\n * `no_NO`,\n * `pl_PL`,\n * `pt_BR`,\n * `pt_PT`,\n * `ru_RU`,\n * `sv_SE`,\n * `th_TH`,\n * `zh_CN`,\n * `zh_HK`,\n * and `zh_TW`.\n *\n * @param {boolean} [options.enableShippingAddress=false] Returns a shipping address object in {@link PayPal#tokenize}.\n * @param {object} [options.shippingAddressOverride] Allows you to pass a shipping address you have already collected into the PayPal payment flow.\n * @param {string} options.shippingAddressOverride.line1 Street address.\n * @param {string} [options.shippingAddressOverride.line2] Street address (extended).\n * @param {string} options.shippingAddressOverride.city City.\n * @param {string} options.shippingAddressOverride.state State.\n * @param {string} options.shippingAddressOverride.postalCode Postal code.\n * @param {string} options.shippingAddressOverride.countryCode Country.\n * @param {string} [options.shippingAddressOverride.phone] Phone number.\n * @param {string} [options.shippingAddressOverride.recipientName] Recipient's name.\n * @param {boolean} [options.shippingAddressEditable=true] Set to false to disable user editing of the shipping address.\n * @param {string} [options.billingAgreementDescription] Use this option to set the description of the preapproved payment agreement visible to customers in their PayPal profile during Vault flows. Max 255 characters.\n * @param {string} [options.landingPageType] Use this option to specify the PayPal page to display when a user lands on the PayPal site to complete the payment.\n * * `login` - A PayPal account login page is used.\n * * `billing` - A non-PayPal account landing page is used.\n * @param {callback} callback The second argument, <code>data</code>, is a {@link PayPal~tokenizePayload|tokenizePayload}.\n * @example\n * <caption>Tokenizing with the vault flow</caption>\n * button.addEventListener('click', function () {\n * // Disable the button so that we don't attempt to open multiple popups.\n * button.setAttribute('disabled', 'disabled');\n *\n * // if there is any other part of the page that must be disabled\n * // while authentication is in progress, do so now\n *\n * // Because PayPal tokenization opens a popup, this must be called\n * // as a result of a user action, such as a button click.\n * paypalInstance.tokenize({\n * flow: 'vault' // Required\n * // Any other tokenization options\n * }, function (tokenizeErr, payload) {\n * button.removeAttribute('disabled');\n *\n * // if any other part of the page was disabled, re-enable now\n *\n * if (tokenizeErr) {\n * // Handle tokenization errors or premature flow closure\n *\n * switch (tokenizeErr.code) {\n * case 'PAYPAL_POPUP_CLOSED':\n * console.error('Customer closed PayPal popup.');\n * break;\n * case 'PAYPAL_ACCOUNT_TOKENIZATION_FAILED':\n * console.error('PayPal tokenization failed. See details:', tokenizeErr.details);\n * break;\n * case 'PAYPAL_FLOW_FAILED':\n * console.error('Unable to initialize PayPal flow. Are your options correct?', tokenizeErr.details);\n * break;\n * default:\n * console.error('Error!', tokenizeErr);\n * }\n * } else {\n * // Submit payload.nonce to your server\n * }\n * });\n * });\n\n * @example\n * <caption>Tokenizing with the checkout flow</caption>\n * button.addEventListener('click', function () {\n * // Disable the button so that we don't attempt to open multiple popups.\n * button.setAttribute('disabled', 'disabled');\n *\n * // Because PayPal tokenization opens a popup, this must be called\n * // as a result of a user action, such as a button click.\n * paypalInstance.tokenize({\n * flow: 'checkout', // Required\n * amount: '10.00', // Required\n * currency: 'USD' // Required\n * // Any other tokenization options\n * }, function (tokenizeErr, payload) {\n * button.removeAttribute('disabled');\n *\n * if (tokenizeErr) {\n * // Handle tokenization errors or premature flow closure\n *\n * switch (tokenizeErr.code) {\n * case 'PAYPAL_POPUP_CLOSED':\n * console.error('Customer closed PayPal popup.');\n * break;\n * case 'PAYPAL_ACCOUNT_TOKENIZATION_FAILED':\n * console.error('PayPal tokenization failed. See details:', tokenizeErr.details);\n * break;\n * case 'PAYPAL_FLOW_FAILED':\n * console.error('Unable to initialize PayPal flow. Are your options correct?', tokenizeErr.details);\n * break;\n * default:\n * console.error('Error!', tokenizeErr);\n * }\n * } else {\n * // Submit payload.nonce to your server\n * }\n * });\n * });\n * @returns {Promise|PayPal~tokenizeReturn} A handle to manage the PayPal checkout frame. If no callback is provided, returns a promise.\n */\nPayPal.prototype.tokenize = function (options, callback) {\n var self = this;\n var client = this._client;\n var tokenizePromise, optionError;\n\n if (callback) {\n callback = once(deferred(callback));\n }\n\n if (!options || !constants.FLOW_ENDPOINTS.hasOwnProperty(options.flow)) {\n optionError = new BraintreeError(errors.PAYPAL_FLOW_OPTION_REQUIRED);\n\n if (callback) {\n callback(optionError);\n\n return this._frameService.createNoopHandler();\n }\n\n return Promise.reject(optionError);\n }\n\n tokenizePromise = new Promise(function (resolve, reject) {\n if (self._authorizationInProgress) {\n analytics.sendEvent(client, \"paypal.tokenization.error.already-opened\");\n\n reject(new BraintreeError(errors.PAYPAL_TOKENIZATION_REQUEST_ACTIVE));\n } else {\n self._authorizationInProgress = true;\n\n if (!window.popupBridge) {\n analytics.sendEvent(client, \"paypal.tokenization.opened\");\n }\n\n if (options.offerCredit === true) {\n analytics.sendEvent(client, \"paypal.credit.offered\");\n }\n\n if (options.offerPayLater === true) {\n analytics.sendEvent(client, \"paypal.paylater.offered\");\n }\n\n self._navigateFrameToAuth(options).catch(reject);\n // self MUST happen after _navigateFrameToAuth for Metro browsers to work.\n self._frameService.open(\n {},\n self._createFrameServiceCallback(options, resolve, reject)\n );\n }\n });\n\n if (callback) {\n tokenizePromise\n .then(function (res) {\n callback(null, res);\n })\n .catch(callback);\n\n return this._frameService.createHandler({\n beforeClose: function () {\n analytics.sendEvent(client, \"paypal.tokenization.closed.by-merchant\");\n },\n });\n }\n\n return tokenizePromise;\n};\n\nPayPal.prototype._createFrameServiceCallback = function (\n options,\n resolve,\n reject\n) {\n var self = this;\n var client = this._client;\n\n if (window.popupBridge) {\n return function (err, payload) {\n var canceled =\n payload && payload.path && payload.path.substring(0, 7) === \"/cancel\";\n\n self._authorizationInProgress = false;\n\n // `err` exists when the user clicks \"Done\" button of browser view\n if (err || canceled) {\n analytics.sendEvent(\n client,\n \"paypal.tokenization.closed-popupbridge.by-user\"\n );\n // Call merchant's tokenize callback with an error\n reject(new BraintreeError(errors.PAYPAL_POPUP_CLOSED));\n } else if (payload) {\n self\n ._tokenizePayPal(options, payload.queryItems)\n .then(resolve)\n .catch(reject);\n }\n };\n }\n\n return function (err, params) {\n self._authorizationInProgress = false;\n\n if (err) {\n if (err.code === \"FRAME_SERVICE_FRAME_CLOSED\") {\n analytics.sendEvent(client, \"paypal.tokenization.closed.by-user\");\n reject(new BraintreeError(errors.PAYPAL_POPUP_CLOSED));\n } else if (\n err.code &&\n err.code.indexOf(\"FRAME_SERVICE_FRAME_OPEN_FAILED\") > -1\n ) {\n reject(\n new BraintreeError({\n code: errors.PAYPAL_POPUP_OPEN_FAILED.code,\n type: errors.PAYPAL_POPUP_OPEN_FAILED.type,\n message: errors.PAYPAL_POPUP_OPEN_FAILED.message,\n details: {\n originalError: err,\n },\n })\n );\n }\n } else if (params) {\n self._tokenizePayPal(options, params).then(resolve).catch(reject);\n }\n };\n};\n\nPayPal.prototype._tokenizePayPal = function (options, params) {\n var self = this;\n var client = this._client;\n\n if (!window.popupBridge) {\n this._frameService.redirect(this._loadingFrameUrl);\n }\n\n return client\n .request({\n endpoint: \"payment_methods/paypal_accounts\",\n method: \"post\",\n data: this._formatTokenizeData(options, params),\n })\n .then(function (response) {\n var payload = self._formatTokenizePayload(response);\n\n if (window.popupBridge) {\n analytics.sendEvent(client, \"paypal.tokenization.success-popupbridge\");\n } else {\n analytics.sendEvent(client, \"paypal.tokenization.success\");\n }\n\n if (payload.creditFinancingOffered) {\n analytics.sendEvent(client, \"paypal.credit.accepted\");\n }\n\n self._frameService.close();\n\n return payload;\n })\n .catch(function (err) {\n if (window.popupBridge) {\n analytics.sendEvent(client, \"paypal.tokenization.failed-popupbridge\");\n } else {\n analytics.sendEvent(client, \"paypal.tokenization.failed\");\n }\n\n self._frameService.close();\n\n return Promise.reject(\n convertToBraintreeError(err, {\n type: errors.PAYPAL_ACCOUNT_TOKENIZATION_FAILED.type,\n code: errors.PAYPAL_ACCOUNT_TOKENIZATION_FAILED.code,\n message: errors.PAYPAL_ACCOUNT_TOKENIZATION_FAILED.message,\n })\n );\n });\n};\n\nPayPal.prototype._formatTokenizePayload = function (response) {\n var payload;\n var account = {};\n\n if (response.paypalAccounts) {\n account = response.paypalAccounts[0];\n }\n\n payload = {\n nonce: account.nonce,\n details: {},\n type: account.type,\n };\n\n if (account.details && account.details.payerInfo) {\n payload.details = account.details.payerInfo;\n }\n\n if (account.details && account.details.creditFinancingOffered) {\n payload.creditFinancingOffered = account.details.creditFinancingOffered;\n }\n\n return payload;\n};\n\nPayPal.prototype._formatTokenizeData = function (options, params) {\n var clientConfiguration = this._client.getConfiguration();\n var gatewayConfiguration = clientConfiguration.gatewayConfiguration;\n var isTokenizationKey =\n clientConfiguration.authorizationType === \"TOKENIZATION_KEY\";\n var data = {\n paypalAccount: {\n correlationId: params.ba_token || params.token,\n options: {\n validate: options.flow === \"vault\" && !isTokenizationKey,\n },\n },\n };\n\n if (params.ba_token) {\n data.paypalAccount.billingAgreementToken = params.ba_token;\n } else {\n data.paypalAccount.paymentToken = params.paymentId;\n data.paypalAccount.payerId = params.PayerID;\n data.paypalAccount.unilateral =\n gatewayConfiguration.paypal.unvettedMerchant;\n\n if (options.hasOwnProperty(\"intent\")) {\n data.paypalAccount.intent = options.intent;\n }\n }\n\n return data;\n};\n\nPayPal.prototype._navigateFrameToAuth = function (options) {\n var self = this;\n var client = this._client;\n var endpoint = \"paypal_hermes/\" + constants.FLOW_ENDPOINTS[options.flow];\n\n return client\n .request({\n endpoint: endpoint,\n method: \"post\",\n data: this._formatPaymentResourceData(options),\n })\n .then(function (response) {\n var redirectUrl;\n\n if (options.flow === \"checkout\") {\n redirectUrl = response.paymentResource.redirectUrl;\n } else {\n redirectUrl = response.agreementSetup.approvalUrl;\n }\n\n if (options.useraction === \"commit\") {\n redirectUrl = querystring.queryify(redirectUrl, {\n useraction: \"commit\",\n });\n }\n\n if (window.popupBridge) {\n analytics.sendEvent(client, \"paypal.tokenization.opened-popupbridge\");\n }\n\n self._frameService.redirect(redirectUrl);\n })\n .catch(function (err) {\n var status = err.details && err.details.httpStatus;\n\n self._frameService.close();\n self._authorizationInProgress = false;\n\n if (status === 422) {\n return Promise.reject(\n new BraintreeError({\n type: errors.PAYPAL_INVALID_PAYMENT_OPTION.type,\n code: errors.PAYPAL_INVALID_PAYMENT_OPTION.code,\n message: errors.PAYPAL_INVALID_PAYMENT_OPTION.message,\n details: {\n originalError: err,\n },\n })\n );\n }\n\n return Promise.reject(\n convertToBraintreeError(err, {\n type: errors.PAYPAL_FLOW_FAILED.type,\n code: errors.PAYPAL_FLOW_FAILED.code,\n message: errors.PAYPAL_FLOW_FAILED.message,\n })\n );\n });\n};\n\nPayPal.prototype._formatPaymentResourceData = function (options) {\n var key;\n var gatewayConfiguration =\n this._client.getConfiguration().gatewayConfiguration;\n var serviceId = this._frameService._serviceId;\n var paymentResource = {\n returnUrl:\n gatewayConfiguration.paypal.assetsUrl +\n \"/web/\" +\n VERSION +\n \"/html/redirect-frame\" +\n useMin(this._isDebug) +\n \".html?channel=\" +\n serviceId,\n cancelUrl:\n gatewayConfiguration.paypal.assetsUrl +\n \"/web/\" +\n VERSION +\n \"/html/cancel-frame\" +\n useMin(this._isDebug) +\n \".html?channel=\" +\n serviceId,\n offerPaypalCredit: options.offerCredit === true,\n offerPayLater: options.offerPayLater === true,\n experienceProfile: {\n brandName: options.displayName || gatewayConfiguration.paypal.displayName,\n localeCode: options.locale,\n noShipping: (!options.enableShippingAddress).toString(),\n addressOverride: options.shippingAddressEditable === false,\n landingPageType: options.landingPageType,\n },\n };\n\n if (\n window.popupBridge &&\n typeof window.popupBridge.getReturnUrlPrefix === \"function\"\n ) {\n paymentResource.returnUrl =\n window.popupBridge.getReturnUrlPrefix() + \"return\";\n paymentResource.cancelUrl =\n window.popupBridge.getReturnUrlPrefix() + \"cancel\";\n }\n\n if (options.flow === \"checkout\") {\n paymentResource.amount = options.amount;\n paymentResource.currencyIsoCode = options.currency;\n\n if (options.hasOwnProperty(\"intent\")) {\n paymentResource.intent = options.intent;\n }\n\n for (key in options.shippingAddressOverride) {\n if (options.shippingAddressOverride.hasOwnProperty(key)) {\n paymentResource[key] = options.shippingAddressOverride[key];\n }\n }\n } else {\n paymentResource.shippingAddress = options.shippingAddressOverride;\n\n if (options.billingAgreementDescription) {\n paymentResource.description = options.billingAgreementDescription;\n }\n }\n\n return paymentResource;\n};\n\n/**\n * Closes the PayPal window if it is open.\n * @public\n * @example\n * paypalInstance.closeWindow();\n * @returns {void}\n */\nPayPal.prototype.closeWindow = function () {\n if (this._authorizationInProgress) {\n analytics.sendEvent(this._client, \"paypal.tokenize.closed.by-merchant\");\n }\n this._frameService.close();\n};\n\n/**\n * Focuses the PayPal window if it is open.\n * @public\n * @example\n * paypalInstance.focusWindow();\n * @returns {void}\n */\nPayPal.prototype.focusWindow = function () {\n this._frameService.focus();\n};\n\n/**\n * Cleanly remove anything set up by {@link module:braintree-web/paypal.create|create}.\n * @public\n * @param {callback} [callback] Called on completion.\n * @example\n * paypalInstance.teardown();\n * @example <caption>With callback</caption>\n * paypalInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nPayPal.prototype.teardown = wrapPromise(function () {\n var self = this; // eslint-disable-line no-invalid-this\n\n self._frameService.teardown();\n\n convertMethodsToError(self, methods(PayPal.prototype));\n\n analytics.sendEvent(self._client, \"paypal.teardown-completed\");\n\n return Promise.resolve();\n});\n\nmodule.exports = PayPal;\n\n},{\"../../lib/analytics\":132,\"../../lib/braintree-error\":137,\"../../lib/constants\":139,\"../../lib/convert-methods-to-error\":140,\"../../lib/convert-to-braintree-error\":141,\"../../lib/deferred\":145,\"../../lib/frame-service/external\":152,\"../../lib/methods\":168,\"../../lib/once\":169,\"../../lib/querystring\":170,\"../../lib/use-min\":173,\"../shared/constants\":193,\"../shared/errors\":194,\"@braintree/wrap-promise\":40}],192:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/paypal\n * @description A component to integrate with PayPal.\n * @deprecated Use the {@link PayPalCheckout|PayPal Checkout component} instead.\n */\n\nvar analytics = _dereq_(\"../lib/analytics\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar errors = _dereq_(\"./shared/errors\");\nvar PayPal = _dereq_(\"./external/paypal\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {callback} callback The second argument, `data`, is the {@link PayPal} instance.\n * @example\n * // We recommend creating your PayPal button with button.js\n * // For an example, see https://codepen.io/braintree/pen/LNKJWa\n * var paypalButton = document.querySelector('.paypal-button');\n *\n * braintree.client.create({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (clientErr, clientInstance) {\n * if (clientErr) {\n * console.error('Error creating client:', clientErr);\n * return;\n * }\n *\n * braintree.paypal.create({\n * client: clientInstance\n * }, function (paypalErr, paypalInstance) {\n * if (paypalErr) {\n * console.error('Error creating PayPal:', paypalErr);\n * return;\n * }\n *\n * paypalButton.removeAttribute('disabled');\n *\n * // When the button is clicked, attempt to tokenize.\n * paypalButton.addEventListener('click', function (event) {\n * // Because tokenization opens a popup, this has to be called as a result of\n * // customer action, like clicking a button. You cannot call this at any time.\n * paypalInstance.tokenize({\n * flow: 'vault'\n * // For more tokenization options, see the full PayPal tokenization documentation\n * // https://braintree.github.io/braintree-web/current/PayPal.html#tokenize\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * if (tokenizeErr.type !== 'CUSTOMER') {\n * console.error('Error tokenizing:', tokenizeErr);\n * }\n * return;\n * }\n *\n * // Tokenization succeeded\n * paypalButton.setAttribute('disabled', true);\n * console.log('Got a nonce! You should submit this to your server.');\n * console.log(payload.nonce);\n * });\n * }, false);\n * });\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"PayPal\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n return createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n });\n })\n .then(function (client) {\n var pp;\n var config = client.getConfiguration();\n\n options.client = client;\n\n if (config.gatewayConfiguration.paypalEnabled !== true) {\n return Promise.reject(new BraintreeError(errors.PAYPAL_NOT_ENABLED));\n }\n\n analytics.sendEvent(options.client, \"paypal.initialized\");\n\n pp = new PayPal(options);\n\n return pp._initialize();\n });\n}\n\n/**\n * @static\n * @function isSupported\n * @description Returns true if PayPal [supports this browser](index.html#browser-support-webviews).\n * @example\n * if (braintree.paypal.isSupported()) {\n * // Add PayPal button to the page\n * } else {\n * // Hide PayPal payment option\n * }\n * @returns {Boolean} Returns true if PayPal supports this browser.\n */\nfunction isSupported() {\n return true;\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n isSupported: isSupported,\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/analytics\":132,\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./external/paypal\":191,\"./shared/errors\":194,\"@braintree/wrap-promise\":40}],193:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n LANDING_FRAME_NAME: \"braintreepaypallanding\",\n FLOW_ENDPOINTS: {\n checkout: \"create_payment_resource\",\n vault: \"setup_billing_agreement\",\n },\n REQUIRED_OPTIONS: [\"paymentId\", \"currency\"],\n};\n\n},{}],194:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.PayPal - Creation Error Codes\n * @description Errors that occur when [creating the PayPal component](./module-braintree-web_paypal.html#.create).\n * @property {MERCHANT} PAYPAL_NOT_ENABLED Occurs when PayPal is not enabled on the Braintree control panel.\n */\n\n/**\n * @name BraintreeError.PayPal - tokenize Error Codes\n * @description Errors that occur when using the [`tokenize` method](./PayPal.html#tokenize).\n * @property {MERCHANT} PAYPAL_TOKENIZATION_REQUEST_ACTIVE Occurs when a tokenization request is already in progress.\n * @property {MERCHANT} PAYPAL_FLOW_OPTION_REQUIRED Occurs when flow option is not provided.\n * @property {NETWORK} PAYPAL_ACCOUNT_TOKENIZATION_FAILED Occurs when PayPal account could not be tokenized.\n * @property {NETWORK} PAYPAL_FLOW_FAILED Occurs when PayPal flow could not be initiated.\n * @property {MERCHANT} PAYPAL_POPUP_OPEN_FAILED Occurs when PayPal window could not be opened.\n * @property {CUSTOMER} PAYPAL_POPUP_CLOSED Occurs when customer closes the PayPal window before completing the flow.\n * @property {MERCHANT} PAYPAL_INVALID_PAYMENT_OPTION Occurs when an invalid payment option is passed.\n */\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nmodule.exports = {\n PAYPAL_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_NOT_ENABLED\",\n message: \"PayPal is not enabled for this merchant.\",\n },\n PAYPAL_TOKENIZATION_REQUEST_ACTIVE: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_TOKENIZATION_REQUEST_ACTIVE\",\n message: \"Another tokenization request is active.\",\n },\n PAYPAL_ACCOUNT_TOKENIZATION_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"PAYPAL_ACCOUNT_TOKENIZATION_FAILED\",\n message: \"Could not tokenize user's PayPal account.\",\n },\n PAYPAL_FLOW_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"PAYPAL_FLOW_FAILED\",\n message: \"Could not initialize PayPal flow.\",\n },\n PAYPAL_FLOW_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_FLOW_OPTION_REQUIRED\",\n message: \"PayPal flow property is invalid or missing.\",\n },\n PAYPAL_POPUP_OPEN_FAILED: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_POPUP_OPEN_FAILED\",\n message:\n \"PayPal popup failed to open, make sure to tokenize in response to a user action.\",\n },\n PAYPAL_POPUP_CLOSED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"PAYPAL_POPUP_CLOSED\",\n message: \"Customer closed PayPal popup before authorizing.\",\n },\n PAYPAL_INVALID_PAYMENT_OPTION: {\n type: BraintreeError.types.MERCHANT,\n code: \"PAYPAL_INVALID_PAYMENT_OPTION\",\n message: \"PayPal payment options are invalid.\",\n },\n};\n\n},{\"../../lib/braintree-error\":137}],195:[function(_dereq_,module,exports){\n\"use strict\";\n/** @module braintree-web/preferred-payment-methods */\n\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar PreferredPaymentMethods = _dereq_(\"./preferred-payment-methods\");\nvar VERSION = \"3.103.0\";\n\n// NEXT_MAJOR_VERSION\n// Remove this integration entirely. It doesn't work, isn't documented, and otherwise isn't going to be pursued further beyond the non-operational beta it is in.\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {callback} [callback] The second argument, `data`, is the {@link PreferredPaymentMethods} instance.\n * @example\n * braintree.preferredPaymentMethods.create({\n * client: clientInstance\n * }).then(function (preferredPaymentMethodsInstance) {\n * // preferredPaymentMethodsInstance is ready to be used.\n * }).catch(function (error) {\n * // handle creation error\n * });\n * @returns {Promise|void} Returns a Promise with resolves with the PreferredPaymentMethods instance.\n */\nfunction create(options) {\n var name = \"PreferredPaymentMethods\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n var instance = new PreferredPaymentMethods();\n\n return instance.initialize(options);\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"./preferred-payment-methods\":196,\"@braintree/wrap-promise\":40}],196:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar analytics = _dereq_(\"../lib/analytics\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\n\n/**\n * @class\n * @param {object} options See {@link module:braintree-web/preferred-payment-methods.create|preferred-payment-methods.create}\n */\nfunction PreferredPaymentMethods() {}\n\nPreferredPaymentMethods.prototype.initialize = function (options) {\n var self = this;\n\n this._clientPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: \"PreferredPaymentMethods\",\n })\n .catch(function (err) {\n self._setupError = err;\n\n return Promise.reject(err);\n });\n\n analytics.sendEvent(\n this._clientPromise,\n \"preferred-payment-methods.initialized\"\n );\n\n return Promise.resolve(this);\n};\n\n/**\n * Fetches information about which payment methods are preferred on the device.\n * Used to determine which payment methods are given preference in your UI,\n * not whether they are presented entirely.\n *\n * This class is currently in beta and may change in future releases.\n * @public\n * @returns {Promise|void} Returns a promise if no callback is provided.\n * @example\n * <caption>Preferred Payment Methods</caption>\n * preferredPaymentMethodsInstance.fetchPreferredPaymentMethods().then(function (result) {\n * if (result.paypalPreferred) {\n * // PayPal preferred\n * } else {\n * // PayPal not preferred\n * }\n *\n * if (result.venmoPreferred) {\n * // Venmo preferred\n * } else {\n * // Venmo not preferred\n * }\n * });\n */\nPreferredPaymentMethods.prototype.fetchPreferredPaymentMethods = function () {\n var client;\n var self = this;\n\n return this._clientPromise\n .then(function (clientInstance) {\n client = clientInstance;\n\n return client.request({\n api: \"graphQLApi\",\n data: {\n query:\n \"query PreferredPaymentMethods { \" +\n \"preferredPaymentMethods { \" +\n \"paypalPreferred \" +\n \"venmoPreferred \" +\n \"} \" +\n \"}\",\n },\n });\n })\n .then(function (result) {\n var paypalPreferred = result.data.preferredPaymentMethods.paypalPreferred;\n var venmoPreferred = result.data.preferredPaymentMethods.venmoPreferred;\n\n analytics.sendEvent(\n client,\n \"preferred-payment-methods.paypal.api-detected.\" + paypalPreferred\n );\n analytics.sendEvent(\n client,\n \"preferred-payment-methods.venmo.api-detected.\" + venmoPreferred\n );\n\n return {\n paypalPreferred: paypalPreferred,\n venmoPreferred: venmoPreferred,\n };\n })\n .catch(function () {\n if (self._setupError) {\n return Promise.reject(self._setupError);\n }\n\n analytics.sendEvent(client, \"preferred-payment-methods.api-error\");\n\n return {\n paypalPreferred: false,\n venmoPreferred: false,\n };\n });\n};\n\nmodule.exports = wrapPromise.wrapPrototype(PreferredPaymentMethods);\n\n},{\"../lib/analytics\":132,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"@braintree/wrap-promise\":40}],197:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar sepaErrors = _dereq_(\"../shared/errors\");\nvar frameService = _dereq_(\"../../lib/frame-service/external\");\nvar analytics = _dereq_(\"../../lib/analytics\");\nvar useMin = _dereq_(\"../../lib/use-min\");\nvar billingAddressOptions =\n _dereq_(\"../shared/constants\").BILLING_ADDRESS_OPTIONS;\nvar snakeCaseToCamelCase = _dereq_(\"../../lib/snake-case-to-camel-case\");\n\nvar POPUP_WIDTH = 400;\nvar POPUP_HEIGHT = 570;\n\n/**\n * @ignore\n * @typedef CreateMandateResponse\n * @property {string} approvalUrl The URL to present to the customer for payment approval.\n * @property {string} last4 The last four digits of the iban.\n * @property {string} bankReferenceToken The tokenized payment source to fun the payment.\n */\n\n/**\n *\n * A function that creates a mandate so that we can present the mandate to the customer via a popup.\n *\n * @ignore\n * @static\n * @function createMandate\n * @param {object} client The Braintree client.\n * @param {object} options All options for intiating the SEPA payment flow.\n * @param {string} [options.accountHolderName] The account holder name.\n * @param {object} [options.billingAddress] The customer's billing address\n * @param {string} [options.billingAddress.addressLine1] Line 1 of the Address (eg. number, street, etc). An error will occur if this address is not valid.\n * @param {string} [options.billingAddress.addressLine2] Line 2 of the Address (eg. suite, apt #, etc.). An error will occur if this address is not valid.\n * @param {string} [options.billingAddress.adminArea1] Customer's city.\n * @param {string} [options.billingAddress.adminArea2] Customer's region or state.\n * @param {string} [options.billingAddress.postalCode] Customer's postal code.\n * @param {string} [options.cancelUrl] The URL to redirect to if authorization is cancelled.\n * @param {string} [options.countryCode] The customer's country code. Also used as billing address country code.\n * @param {string} [options.customerId] The customer's id.\n * @param {string} [options.iban] The customer's International Bank Account Number.\n * @param {string} [options.locale] The BCP 47-formatted locale. See https://developer.paypal.com/reference/locale-codes/ for a list of possible values.\n * @param {string} [options.mandateType] Specify ONE_OFF or RECURRENT payment.\n * @param {string} [options.merchantAccountId] The merchant's account id.\n * @param {string} [options.merchantId] The merchant id.\n * @param {string} [options.returnUrl] The URL to redirect to if authorization is successful.\n * @returns {Promise<CreateMandateResponse|Error>} Returns a promise with the mandate response or an error.\n */\n\nfunction createMandate(client, options) {\n // Disabling eslint because api is expecting snake_case format for the keys\n /* eslint-disable */\n var data = {\n sepa_debit: {\n account_holder_name: options.accountHolderName,\n billing_address: {\n country_code: options.countryCode,\n },\n iban: options.iban,\n merchant_or_partner_customer_id: options.customerId,\n mandate_type: options.mandateType,\n },\n locale: options.locale,\n cancel_url: options.cancelUrl,\n return_url: options.returnUrl,\n merchant_account_id: options.merchantAccountId,\n };\n\n if (options.billingAddress) {\n billingAddressOptions.forEach(function (option) {\n var ccOption = snakeCaseToCamelCase(option);\n if (ccOption in options.billingAddress) {\n data.sepa_debit.billing_address[option] =\n options.billingAddress[ccOption]; // camelCase equivilent of option (eg. postal_code = postalCode) ]\n }\n });\n }\n /* eslint-enable */\n\n return client\n .request({\n api: \"clientApi\",\n method: \"post\",\n endpoint: \"sepa_debit\",\n data: data,\n })\n .then(function (response) {\n var sepaDebitAccount = response.message.body.sepaDebitAccount;\n\n if (!sepaDebitAccount) {\n throw new BraintreeError(sepaErrors.SEPA_CREATE_MANDATE_FAILED);\n }\n\n return {\n approvalUrl: sepaDebitAccount.approvalUrl,\n last4: sepaDebitAccount.last4,\n bankReferenceToken: sepaDebitAccount.bankReferenceToken,\n };\n })\n .catch(function () {\n throw new BraintreeError(sepaErrors.SEPA_CREATE_MANDATE_FAILED);\n });\n}\n\n/**\n *\n * A function for opening and managing the popup used for authorization.\n *\n * @ignore\n * @param {string} client The Braintree client.\n * @param {string} options The input options needed to manage the popup portion of the flow.\n * @param {string} [options.assetsUrl] The url to the Braintree asset to be used in frameservice.\n * @param {string} [options.approvalUrl] The url to open for SEPA authorization. It is `approvalUrl` coming back from the mandate creation, but commonly refered to as the mandate link.\n * @param {string} [options.debug] Whether to use debugging modes or not.\n * @returns {Promise<void|Error>} Returns a promise.\n */\nfunction openPopup(client, options) {\n var popupName = \"sepadirectdebit\";\n var assetsBaseUrl = options.assetsUrl + \"/html\";\n var debug = options.debug || false;\n\n return new Promise(function (resolve, reject) {\n var popupLocation = centeredPopupDimensions();\n\n frameService.create(\n {\n name: popupName,\n dispatchFrameUrl:\n assetsBaseUrl + \"/dispatch-frame\" + useMin(debug) + \".html\",\n openFrameUrl:\n assetsBaseUrl + \"/sepa-landing-frame\" + useMin(debug) + \".html\",\n top: popupLocation.top,\n left: popupLocation.left,\n height: POPUP_HEIGHT,\n width: POPUP_WIDTH,\n },\n function (frameServiceInstance) {\n analytics.sendEvent(client, \"sepa.popup.initialized\");\n frameServiceInstance.open({}, function (err, params) {\n if (mandateApproved(params)) {\n frameServiceInstance.close();\n\n return resolve();\n }\n\n if (customerCanceled(params, err)) {\n frameServiceInstance.close();\n\n return reject(\n new BraintreeError(sepaErrors.SEPA_CUSTOMER_CANCELED)\n );\n }\n\n frameServiceInstance.close();\n\n return reject(\n new BraintreeError(sepaErrors.SEPA_TOKENIZATION_FAILED)\n );\n });\n\n frameServiceInstance.redirect(options.approvalUrl);\n }\n );\n });\n}\n\nfunction mandateApproved(params) {\n return params && params.success;\n}\n\nfunction customerCanceled(params, error) {\n return (\n (params && params.cancel) ||\n (error && error.code === \"FRAME_SERVICE_FRAME_CLOSED\")\n );\n}\n\nfunction centeredPopupDimensions() {\n var popupTop =\n Math.round((window.outerHeight - POPUP_HEIGHT) / 2) + window.screenTop;\n var popupLeft =\n Math.round((window.outerWidth - POPUP_WIDTH) / 2) + window.screenLeft;\n\n return {\n top: popupTop,\n left: popupLeft,\n };\n}\n\n/**\n *\n * A function that creates a mandate so that we can present the mandate to the customer via a popup.\n *\n * @ignore\n * @static\n * @function handleApproval\n * @param {object} client The Braintree client.\n * @param {object} options All options for intiating the SEPA payment flow.\n * @param {string} [options.bankReferenceToken] The tokenized payment source to fun the payment.\n * @param {string} [options.customerId] The customer's id.\n * @param {string} [options.last4] The last four digits of iban.\n * @param {string} [options.mandateType] The mandate type being used. Specify ONE_OFF or RECURRENT payment.\n * @param {string} [options.merchantAccountId] The merchant's account id.\n * @param {string} [options.merchantId] The merchant id.\n * @returns {Promise<tokenizePayload|Error>} Returns a promise with the approval response or an error.\n */\n\nfunction handleApproval(client, options) {\n // Disabling eslint because api is expecting snake_case format for the keys\n /* eslint-disable */\n var data = {\n sepa_debit_account: {\n last_4: options.last4,\n merchant_or_partner_customer_id: options.customerId,\n bank_reference_token: options.bankReferenceToken,\n mandate_type: options.mandateType,\n },\n merchant_account_id: options.merchantAccountId,\n };\n\n /* eslint-enable */\n return client\n .request({\n api: \"clientApi\",\n method: \"post\",\n endpoint: \"payment_methods/sepa_debit_accounts\",\n data: data,\n })\n .then(function (response) {\n if (!response.nonce) {\n throw new BraintreeError(sepaErrors.SEPA_TRANSACTION_FAILED);\n }\n\n return {\n nonce: response.nonce,\n ibanLastFour: options.last4,\n customerId: options.customerId,\n mandateType: options.mandateType,\n };\n })\n .catch(function () {\n throw new BraintreeError(sepaErrors.SEPA_TRANSACTION_FAILED);\n });\n}\n\nmodule.exports = {\n createMandate: createMandate,\n openPopup: openPopup,\n handleApproval: handleApproval,\n POPUP_WIDTH: POPUP_WIDTH,\n POPUP_HEIGHT: POPUP_HEIGHT,\n};\n\n},{\"../../lib/analytics\":132,\"../../lib/braintree-error\":137,\"../../lib/frame-service/external\":152,\"../../lib/snake-case-to-camel-case\":172,\"../../lib/use-min\":173,\"../shared/constants\":200,\"../shared/errors\":201}],198:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar sepaErrors = _dereq_(\"../shared/errors\");\nvar constants = _dereq_(\"../shared/constants\");\nvar mandates = _dereq_(\"./mandate\");\nvar hasMissingOption = _dereq_(\"../shared/has-missing-option\");\nvar analytics = _dereq_(\"../../lib/analytics\");\nvar VERSION = \"3.103.0\";\nvar assign = _dereq_(\"../../lib/assign\").assign;\n\n/**\n * @class\n * @param {object} options see {@link module:braintree-web/sepa.create|sepa.create}\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/sepa.create|braintree-web.sepa.create} instead.</strong>\n * @classdesc This class represents a SEPA component produced by {@link module:braintree-web/sepa.create|braintree-web.sepa.create}. Instances provide methods for tokenizing SEPA payments.\n */\nfunction SEPA(options) {\n var getConfiguration = options.client.getConfiguration();\n\n this._client = options.client;\n this._assetsUrl =\n getConfiguration.gatewayConfiguration.assetsUrl + \"/web/\" + VERSION;\n this._isDebug = getConfiguration.isDebug;\n this._returnUrl = this._assetsUrl + \"/html/redirect-frame.html?success=1\";\n this._cancelUrl = this._assetsUrl + \"/html/redirect-frame.html?cancel=1\";\n\n analytics.sendEvent(this._client, \"sepa.component.initialized\");\n}\n\n/**\n * SEPA tokenize payload.\n * @typedef SEPA~tokenizePayload\n * @property {string} nonce The payment nonce.\n * @property {string} ibanLastFour The last four digits of the customer's IBAN.\n * @property {string} mandateType The specified mandateType used.\n * @property {string} customerId The provided customer id.\n */\n\n/**\n * @public\n * @param {object} options All options for intiating the SEPA payment flow.\n * @param {string} [options.accountHolderName] The account holder name.\n * @param {string} [options.customerId] The customer's id.\n * @param {string} [options.iban] The customer's International Bank Account Number.\n * @param {string} [options.mandateType] Specify ONE_OFF or RECURRENT payment.\n * @param {string} [options.countryCode] The customer's country code.\n * @param {string} [options.merchantAccountId] The merchant's account id.\n * @param {callback} [callback] The first argument is an error object, where the second is a {@link SEPA~tokenizePayload|tokenizePayload}\n * @returns {(Promise<tokenizePayload|error>)} Returns a promise if no callback is provided.\n *\n * @example\n * button.addEventListener('click', function () {\n * var tokenizeInputs = {\n * accountHolderName: \"some-accnt-holder-name\",\n * customerId: \"a-customer-id\",\n * iban: \"a-full-iban\",\n * mandateType: \"ONE_OFF\",\n * countryCode: \"LI\",\n * merchantAccountId: \"a-merchant-account-id\"\n * }\n * sepaInstance.tokenize(tokenizeInputs).then(function (payload) {\n * // Submit payload.nonce to your server\n * }).catch(function(tokenizationErr) {\n * // Handle errors in the flow\n * })\n * })\n */\nSEPA.prototype.tokenize = function (options) {\n var self = this;\n var createMandateOptions = assign(\n { cancelUrl: self._cancelUrl, returnUrl: self._returnUrl },\n options\n );\n\n if (!options || hasMissingOption(options, constants.REQUIRED_OPTIONS)) {\n analytics.sendEvent(self._client, \"sepa.input-validation.missing-options\");\n\n return Promise.reject(\n new BraintreeError(sepaErrors.SEPA_TOKENIZE_MISSING_REQUIRED_OPTION)\n );\n }\n\n if (!constants.MANDATE_TYPE_ENUM.includes(options.mandateType)) {\n analytics.sendEvent(self._client, \"sepa.input-validation.invalid-mandate\");\n\n return Promise.reject(\n new BraintreeError(sepaErrors.SEPA_INVALID_MANDATE_TYPE)\n );\n }\n\n return mandates\n .createMandate(self._client, createMandateOptions)\n .then(function (mandateResponse) {\n analytics.sendEvent(self._client, \"sepa.create-mandate.success\");\n options.last4 = mandateResponse.last4;\n options.bankReferenceToken = mandateResponse.bankReferenceToken;\n\n return mandates.openPopup(self._client, {\n approvalUrl: mandateResponse.approvalUrl,\n assetsUrl: self._assetsUrl,\n });\n })\n .then(function () {\n analytics.sendEvent(self._client, \"sepa.mandate.approved\");\n\n return mandates.handleApproval(self._client, {\n bankReferenceToken: options.bankReferenceToken,\n last4: options.last4,\n customerId: options.customerId,\n mandateType: options.mandateType,\n merchantAccountId: options.merchantAccountId,\n });\n })\n .then(function (approval) {\n analytics.sendEvent(self._client, \"sepa.tokenization.success\");\n\n return Promise.resolve(approval);\n })\n .catch(function (err) {\n analytics.sendEvent(self._client, \"sepa.\" + err.details + \".failed\");\n\n return Promise.reject(err);\n });\n};\n\nmodule.exports = wrapPromise.wrapPrototype(SEPA);\n\n},{\"../../lib/analytics\":132,\"../../lib/assign\":134,\"../../lib/braintree-error\":137,\"../shared/constants\":200,\"../shared/errors\":201,\"../shared/has-missing-option\":202,\"./mandate\":197,\"@braintree/wrap-promise\":40}],199:[function(_dereq_,module,exports){\n\"use strict\";\n/** @module braintree-web/sepa */\n\nvar analytics = _dereq_(\"../lib/analytics\");\nvar SEPA = _dereq_(\"./external/sepa\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar VERSION = \"3.103.0\";\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {boolean} [options.debug] A debug flag.\n * @param {callback} [callback] When provided, will be used instead of a promise. First argument is an error object, where the second is an instance of {@link SEPA|SEPA}.\n * @returns {Promise<void|error>} Returns the SEPA instance.\n * @example\n * braintree.sepa.create({\n * client: clientInstance\n * }).then(function (sepaInstance) {\n * // sepaInstance is ready to be used.\n * }).catch(function (createErr) {\n * console.error('Error creating SEPA instance', createErr);\n * });\n * @example <caption>Creating a SEPA component</caption>\n * braintree.sepa.create({\n * client: clientInstance,\n * }).then(function (sepaInstance) {\n * // sepaInstance is ready to be used.\n * }).catch(function (createErr) {\n * console.error('Error creating SEPA instance', createErr);\n * });\n */\n\nfunction create(options) {\n var name = \"SEPA\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n return createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n });\n })\n .then(function (client) {\n options.client = client;\n\n analytics.sendEvent(options.client, \"sepa.client.initialized\");\n\n return new SEPA(options);\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/analytics\":132,\"../lib/basic-component-verification\":135,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./external/sepa\":198,\"@braintree/wrap-promise\":40}],200:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n REQUIRED_OPTIONS: [\n \"iban\",\n \"merchantAccountId\",\n \"mandateType\",\n \"customerId\",\n \"accountHolderName\",\n \"countryCode\",\n ],\n BILLING_ADDRESS_OPTIONS: [\n \"address_line_1\",\n \"address_line_2\",\n \"admin_area_1\",\n \"admin_area_2\",\n \"postal_code\",\n ],\n MANDATE_TYPE_ENUM: [\"ONE_OFF\", \"RECURRENT\"],\n};\n\n},{}],201:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\n/**\n * @name BraintreeError.SEPA - tokenize Error Codes\n * @description Errors that occur when using the {@link module:braintree-web/sepa.tokenize|sepa.tokenize} method.\n * @property {MERCHANT} SEPA_CREATE_MANDATE_FAILED Occurs when there was an issue creating a mandate. This can occur if the request fails, or if the merchant does not have SEPA enabled.\n * @property {CUSTOMER} SEPA_CUSTOMER_CANCELED Occurs when the customer has canceled the SEPA authorization process. This can be within the mandate approval popup, or by canceling the popup itself.\n * @property {MERCHANT} SEPA_INVALID_MANDATE_TYPE Occurs when an invalid mandate type is provided.\n * @property {UNKNOWN} SEPA_TOKENIZATION_FAILED Occurs when tokenization fails during the mandate approval process for unknown reasons.\n * @property {MERCHANT} SEPA_TOKENIZE_MISSING_REQUIRED_OPTION Occurs when there are required input options not provided.\n * @property {UNKNOWN} SEPA_TRANSACTION_FAILED Occurs when final tokenization fails.\n */\n\n// Those with a \"details\" property are used in specific locations and this prop serves to identify where in the imlpementation the error originates.\nmodule.exports = {\n SEPA_CREATE_MANDATE_FAILED: {\n type: BraintreeError.types.MERCHANT,\n code: \"SEPA_CREATE_MANDATE_FAILED\",\n message: \"SEPA create mandate failed.\",\n details: \"create-mandate\",\n },\n SEPA_CUSTOMER_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"SEPA_CUSTOMER_CANCELED\",\n message: \"User canceled SEPA authorization\",\n details: \"customer-canceled\",\n },\n SEPA_INVALID_MANDATE_TYPE: {\n type: BraintreeError.types.MERCHANT,\n code: \"SEPA_INVALID_MANDATE_TYPE\",\n message: \"SEPA mandate type is invalid\",\n },\n SEPA_TOKENIZATION_FAILED: {\n type: BraintreeError.types.UNKNOWN,\n code: \"SEPA_TOKENIZATION_FAILED\",\n message: \"SEPA encountered a problem\",\n details: \"open-popup\",\n },\n SEPA_TOKENIZE_MISSING_REQUIRED_OPTION: {\n type: BraintreeError.types.MERCHANT,\n code: \"SEPA_TOKENIZE_MISSING_REQUIRED_OPTION\",\n message: \"Missing required option for tokenize.\",\n },\n SEPA_TRANSACTION_FAILED: {\n type: BraintreeError.types.UNKNOWN,\n code: \"SEPA_TRANSACTION_FAILED\",\n message: \"SEPA transaction failed\",\n details: \"handle-approval\",\n },\n};\n\n},{\"../../lib/braintree-error\":137}],202:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @ignore\n * @static\n * @function hasMissingOption\n * @param {object} options All options provided for intiating the SEPA payment flow.\n * @param {array} required A list of required inputs that must be include as part of the options.\n * @returns {boolean} Returns a boolean.\n */\nfunction hasMissingOption(options, required) {\n var i, option;\n\n required = required || [];\n\n for (i = 0; i < required.length; i++) {\n option = required[i];\n\n if (!options.hasOwnProperty(option)) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = hasMissingOption;\n\n},{}],203:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar assign = _dereq_(\"../../../lib/assign\").assign;\nvar analytics = _dereq_(\"../../../lib/analytics\");\nvar BraintreeError = _dereq_(\"../../../lib/braintree-error\");\nvar isVerifiedDomain = _dereq_(\"../../../lib/is-verified-domain\");\nvar ExtendedPromise = _dereq_(\"@braintree/extended-promise\");\nvar EventEmitter = _dereq_(\"@braintree/event-emitter\");\nvar errors = _dereq_(\"../../shared/errors\");\nvar iFramer = _dereq_(\"@braintree/iframer\");\nvar Bus = _dereq_(\"framebus\");\nvar constants = _dereq_(\"../../shared/constants\");\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar events = _dereq_(\"../../shared/events\");\nvar useMin = _dereq_(\"../../../lib/use-min\");\nvar BUS_CONFIGURATION_REQUEST_EVENT =\n _dereq_(\"../../../lib/constants\").BUS_CONFIGURATION_REQUEST_EVENT;\n\nvar VERSION = \"3.103.0\";\nvar IFRAME_HEIGHT = 400;\nvar IFRAME_WIDTH = 400;\n\nExtendedPromise.suppressUnhandledPromiseMessage = true;\n\nfunction BaseFramework(options) {\n EventEmitter.call(this);\n\n this._client = options.client;\n this._createPromise = options.createPromise;\n this._createOptions = options;\n\n if (this._client) {\n this._isDebug = this._client.getConfiguration().isDebug;\n this._assetsUrl =\n this._client.getConfiguration().gatewayConfiguration.assetsUrl;\n } else {\n this._isDebug = Boolean(options.isDebug);\n this._assetsUrl = options.assetsUrl;\n }\n this._assetsUrl = this._assetsUrl + \"/web/\" + VERSION;\n}\n\nEventEmitter.createChild(BaseFramework);\n\nBaseFramework.prototype._waitForClient = function () {\n if (this._client) {\n return Promise.resolve();\n }\n\n return this._createPromise.then(\n function (client) {\n this._client = client;\n }.bind(this)\n );\n};\n\nBaseFramework.prototype.setUpEventListeners = function () {\n throw new BraintreeError(errors.THREEDS_FRAMEWORK_METHOD_NOT_IMPLEMENTED);\n};\n\nBaseFramework.prototype.verifyCard = function (options, privateOptions) {\n var formattedOptions, error;\n var self = this;\n\n privateOptions = privateOptions || {};\n\n error = this._checkForVerifyCardError(options, privateOptions);\n\n if (error) {\n return Promise.reject(error);\n }\n\n this._verifyCardInProgress = true;\n\n formattedOptions = this._formatVerifyCardOptions(options);\n\n return this._formatLookupData(formattedOptions)\n .then(function (data) {\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.verification-flow.started\"\n );\n\n return self._performLookup(formattedOptions.nonce, data);\n })\n .then(function (response) {\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.verification-flow.3ds-version.\" +\n response.lookup.threeDSecureVersion\n );\n\n return self._onLookupComplete(response, formattedOptions);\n })\n .then(function (response) {\n return self.initializeChallengeWithLookupResponse(\n response,\n formattedOptions\n );\n })\n .then(function (payload) {\n self._resetVerificationState();\n\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.verification-flow.completed\"\n );\n\n return payload;\n })\n .catch(function (err) {\n self._resetVerificationState();\n\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.verification-flow.failed\"\n );\n\n return Promise.reject(err);\n });\n};\n\nBaseFramework.prototype._checkForFrameworkSpecificVerifyCardErrors =\n function () {\n throw new BraintreeError(errors.THREEDS_FRAMEWORK_METHOD_NOT_IMPLEMENTED);\n };\n\nBaseFramework.prototype._presentChallenge = function () {\n throw new BraintreeError(errors.THREEDS_FRAMEWORK_METHOD_NOT_IMPLEMENTED);\n};\n\nBaseFramework.prototype.prepareLookup = function () {\n throw new BraintreeError(errors.THREEDS_FRAMEWORK_METHOD_NOT_IMPLEMENTED);\n};\n\nBaseFramework.prototype._resetVerificationState = function () {\n this._verifyCardInProgress = false;\n this._verifyCardPromisePlus = null;\n\n if (typeof this._reloadThreeDSecure === \"function\") {\n this._reloadThreeDSecure();\n }\n};\n\nBaseFramework.prototype._performLookup = function (nonce, data) {\n var self = this;\n var url = \"payment_methods/\" + nonce + \"/three_d_secure/lookup\";\n\n return this._waitForClient().then(function () {\n return self._client\n .request({\n endpoint: url,\n method: \"post\",\n data: data,\n })\n .catch(function (err) {\n var status = err && err.details && err.details.httpStatus;\n var analyticsMessage = \"three-d-secure.verification-flow.lookup-failed\";\n var lookupError;\n\n if (status === 404) {\n lookupError = errors.THREEDS_LOOKUP_TOKENIZED_CARD_NOT_FOUND_ERROR;\n analyticsMessage += \".404\";\n } else if (status === 422) {\n lookupError = errors.THREEDS_LOOKUP_VALIDATION_ERROR;\n analyticsMessage += \".422\";\n } else {\n lookupError = errors.THREEDS_LOOKUP_ERROR;\n }\n\n analytics.sendEvent(self._createPromise, analyticsMessage);\n\n return Promise.reject(\n new BraintreeError({\n type: lookupError.type,\n code: lookupError.code,\n message: lookupError.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n });\n};\n\nBaseFramework.prototype._existsAndIsNumeric = function (value) {\n /**\n * Returns true if value is numeric and false if value is:\n * - undefined\n * - null\n * - an array\n * - an empty string\n * - boolean\n * - otherwise non-numeric value (e.g. {}, \"cows\")\n */\n return !(\n value === undefined || // eslint-disable-line no-undefined\n value === null ||\n Array.isArray(value) ||\n typeof value === \"boolean\" ||\n (typeof value === \"string\" && value.trim() === \"\") ||\n isNaN(Number(value))\n );\n};\n\nBaseFramework.prototype._checkForVerifyCardError = function (\n options,\n privateOptions\n) {\n var errorOption;\n\n if (this._verifyCardInProgress === true) {\n return new BraintreeError(errors.THREEDS_AUTHENTICATION_IN_PROGRESS);\n } else if (!options.nonce) {\n errorOption = \"a nonce\";\n } else if (\n // eslint-disable-next-line no-undefined\n !this._existsAndIsNumeric(options.amount)\n ) {\n errorOption = \"an amount\";\n }\n\n if (!errorOption) {\n errorOption = this._checkForFrameworkSpecificVerifyCardErrors(\n options,\n privateOptions\n );\n }\n\n if (errorOption) {\n return new BraintreeError({\n type: errors.THREEDS_MISSING_VERIFY_CARD_OPTION.type,\n code: errors.THREEDS_MISSING_VERIFY_CARD_OPTION.code,\n message: \"verifyCard options must include \" + errorOption + \".\",\n });\n }\n\n return null;\n};\n\nBaseFramework.prototype.initializeChallengeWithLookupResponse = function (\n lookupResponse,\n options\n) {\n var self = this;\n\n options = options || {};\n\n this._lookupPaymentMethod = lookupResponse.paymentMethod;\n\n // sets this in the case that initializeChallengeWithLookupResponse is\n // called as a standalone method from a server side lookup. In a normal\n // verifyCard flow, this promise will already exist\n self._verifyCardPromisePlus =\n self._verifyCardPromisePlus || new ExtendedPromise();\n self._handleLookupResponse(lookupResponse, options);\n\n return self._verifyCardPromisePlus.then(function (payload) {\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.verification-flow.liability-shifted.\" +\n String(payload.liabilityShifted)\n );\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.verification-flow.liability-shift-possible.\" +\n String(payload.liabilityShiftPossible)\n );\n\n return payload;\n });\n};\n\nBaseFramework.prototype._handleLookupResponse = function (\n lookupResponse,\n options\n) {\n var challengeShouldBePresented = Boolean(\n lookupResponse.lookup && lookupResponse.lookup.acsUrl\n );\n var details;\n\n analytics.sendEvent(\n this._createPromise,\n \"three-d-secure.verification-flow.challenge-presented.\" +\n String(challengeShouldBePresented)\n );\n\n if (challengeShouldBePresented) {\n this._presentChallenge(lookupResponse, options);\n } else {\n details = this._formatAuthResponse(\n lookupResponse.paymentMethod,\n lookupResponse.threeDSecureInfo\n );\n details.verificationDetails = lookupResponse.threeDSecureInfo;\n\n this._verifyCardPromisePlus.resolve(details);\n }\n};\n\nBaseFramework.prototype._onLookupComplete = function (response) {\n this._lookupPaymentMethod = response.paymentMethod;\n this._verifyCardPromisePlus = new ExtendedPromise();\n\n return Promise.resolve(response);\n};\n\nBaseFramework.prototype._formatAuthResponse = function (\n paymentMethod,\n threeDSecureInfo\n) {\n return {\n nonce: paymentMethod.nonce,\n type: paymentMethod.type,\n binData: paymentMethod.binData,\n details: paymentMethod.details,\n description:\n paymentMethod.description &&\n paymentMethod.description.replace(/\\+/g, \" \"),\n liabilityShifted: threeDSecureInfo && threeDSecureInfo.liabilityShifted,\n liabilityShiftPossible:\n threeDSecureInfo && threeDSecureInfo.liabilityShiftPossible,\n threeDSecureInfo: paymentMethod.threeDSecureInfo,\n };\n};\n\nBaseFramework.prototype._formatVerifyCardOptions = function (options) {\n return assign({}, options);\n};\n\nBaseFramework.prototype._formatLookupData = function (options) {\n var data = {\n amount: options.amount,\n };\n\n if (options.collectDeviceData === true) {\n data.browserColorDepth = window.screen.colorDepth;\n data.browserJavaEnabled = window.navigator.javaEnabled();\n data.browserJavascriptEnabled = true;\n data.browserLanguage = window.navigator.language;\n data.browserScreenHeight = window.screen.height;\n data.browserScreenWidth = window.screen.width;\n data.browserTimeZone = new Date().getTimezoneOffset();\n data.deviceChannel = \"Browser\";\n }\n\n return Promise.resolve(data);\n};\n\nBaseFramework.prototype._handleV1AuthResponse = function (data) {\n var authResponse = JSON.parse(data.auth_response);\n\n if (authResponse.success) {\n this._verifyCardPromisePlus.resolve(\n this._formatAuthResponse(\n authResponse.paymentMethod,\n authResponse.threeDSecureInfo\n )\n );\n } else if (\n authResponse.threeDSecureInfo &&\n authResponse.threeDSecureInfo.liabilityShiftPossible\n ) {\n this._verifyCardPromisePlus.resolve(\n this._formatAuthResponse(\n this._lookupPaymentMethod,\n authResponse.threeDSecureInfo\n )\n );\n } else {\n this._verifyCardPromisePlus.reject(\n new BraintreeError({\n type: BraintreeError.types.UNKNOWN,\n code: \"UNKNOWN_AUTH_RESPONSE\",\n message: authResponse.error.message,\n })\n );\n }\n};\n\nBaseFramework.prototype.cancelVerifyCard = function () {\n var response, threeDSecureInfo;\n\n this._verifyCardInProgress = false;\n\n if (!this._lookupPaymentMethod) {\n return Promise.reject(\n new BraintreeError(errors.THREEDS_NO_VERIFICATION_PAYLOAD)\n );\n }\n\n threeDSecureInfo = this._lookupPaymentMethod.threeDSecureInfo;\n\n response = assign({}, this._lookupPaymentMethod, {\n liabilityShiftPossible:\n threeDSecureInfo && threeDSecureInfo.liabilityShiftPossible,\n liabilityShifted: threeDSecureInfo && threeDSecureInfo.liabilityShifted,\n verificationDetails:\n threeDSecureInfo && threeDSecureInfo.verificationDetails,\n });\n\n return Promise.resolve(response);\n};\n\nBaseFramework.prototype._setupV1Bus = function (options) {\n var clientConfiguration = this._client.getConfiguration();\n var parentURL = window.location.href.split(\"#\")[0];\n var lookupResponse = options.lookupResponse;\n var channel = uuid();\n var bus = new Bus({\n channel: channel,\n verifyDomain: isVerifiedDomain,\n });\n var authenticationCompleteBaseUrl =\n this._assetsUrl +\n \"/html/three-d-secure-authentication-complete-frame.html?channel=\" +\n encodeURIComponent(channel) +\n \"&\";\n\n bus.on(BUS_CONFIGURATION_REQUEST_EVENT, function (reply) {\n reply({\n clientConfiguration: clientConfiguration,\n nonce: options.nonce,\n acsUrl: lookupResponse.acsUrl,\n pareq: lookupResponse.pareq,\n termUrl:\n lookupResponse.termUrl +\n \"&three_d_secure_version=\" +\n VERSION +\n \"&authentication_complete_base_url=\" +\n encodeURIComponent(authenticationCompleteBaseUrl),\n md: lookupResponse.md,\n parentUrl: parentURL,\n });\n });\n\n bus.on(events.AUTHENTICATION_COMPLETE, options.handleAuthResponse);\n\n return bus;\n};\n\nBaseFramework.prototype._setupV1Iframe = function (options) {\n var url =\n this._assetsUrl +\n \"/html/three-d-secure-bank-frame\" +\n useMin(this._isDebug) +\n \".html?showLoader=\" +\n options.showLoader;\n var bankIframe = iFramer({\n src: url,\n height: IFRAME_HEIGHT,\n width: IFRAME_WIDTH,\n name: constants.LANDING_FRAME_NAME + \"_\" + this._v1Bus.channel,\n title: \"3D Secure Authorization Frame\",\n });\n\n return bankIframe;\n};\n\nBaseFramework.prototype._setupV1Elements = function (options) {\n this._v1Bus = this._setupV1Bus(options);\n this._v1Iframe = this._setupV1Iframe(options);\n};\n\nBaseFramework.prototype._teardownV1Elements = function () {\n if (this._v1Bus) {\n this._v1Bus.teardown();\n this._v1Bus = null;\n }\n\n if (this._v1Iframe && this._v1Iframe.parentNode) {\n this._v1Iframe.parentNode.removeChild(this._v1Iframe);\n this._v1Iframe = null;\n }\n\n if (this._onV1Keyup) {\n document.removeEventListener(\"keyup\", this._onV1Keyup);\n this._onV1Keyup = null;\n }\n};\n\nBaseFramework.prototype.teardown = function () {\n analytics.sendEvent(this._createPromise, \"three-d-secure.teardown-completed\");\n\n this._teardownV1Elements();\n\n return Promise.resolve();\n};\n\nmodule.exports = BaseFramework;\n\n},{\"../../../lib/analytics\":132,\"../../../lib/assign\":134,\"../../../lib/braintree-error\":137,\"../../../lib/constants\":139,\"../../../lib/is-verified-domain\":166,\"../../../lib/use-min\":173,\"../../shared/constants\":212,\"../../shared/errors\":213,\"../../shared/events\":214,\"@braintree/event-emitter\":30,\"@braintree/extended-promise\":31,\"@braintree/iframer\":32,\"@braintree/uuid\":36,\"framebus\":49}],204:[function(_dereq_,module,exports){\n\"use strict\";\n// NEXT_MAJOR_VERSION drop support for Bootstrap framework,\n// recomend using inline frame version and putting it in\n// the merchant's own bootstrap modal\n\nvar SongbirdFramework = _dereq_(\"./songbird\");\n\nfunction Bootstrap3ModalFramework(options) {\n SongbirdFramework.call(this, options);\n}\n\nBootstrap3ModalFramework.prototype = Object.create(\n SongbirdFramework.prototype,\n {\n constructor: SongbirdFramework,\n }\n);\n\nBootstrap3ModalFramework.prototype._createV1IframeModalElement = function (\n iframe\n) {\n var modal = document.createElement(\"div\");\n\n modal.innerHTML =\n '<div class=\"modal fade in\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"CCAFrameModal-label\" aria-hidden=\"true\" style=\"display: block;\">' +\n '<div class=\"modal-dialog\" style=\"width:440px;z-index:999999;\">' +\n '<div class=\"modal-content\">' +\n '<div class=\"modal-body\" data-braintree-v1-fallback-iframe-container>' +\n '<button type=\"button\" data-braintree-v1-fallback-close-button class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">\u00D7</button>' +\n \"</div>\" +\n \"</div>\" +\n \"</div>\" +\n '<div data-braintree-v1-fallback-backdrop style=\"' +\n \"position: fixed;\" +\n \"cursor: pointer;\" +\n \"z-index: 999998;\" +\n \"top: 0;\" +\n \"left: 0;\" +\n \"width: 100%;\" +\n \"height: 100%;\" +\n '\"></div>' +\n \"</div>\";\n\n modal\n .querySelector(\"[data-braintree-v1-fallback-iframe-container]\")\n .appendChild(iframe);\n\n return modal;\n};\n\nBootstrap3ModalFramework.prototype._createCardinalConfigurationOptions =\n function (setupOptions) {\n var options =\n SongbirdFramework.prototype._createCardinalConfigurationOptions.call(\n this,\n setupOptions\n );\n\n options.payment.framework = \"bootstrap3\";\n\n return options;\n };\n\nmodule.exports = Bootstrap3ModalFramework;\n\n},{\"./songbird\":209}],205:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar SongbirdFramework = _dereq_(\"./songbird\");\n\nfunction CardinalModalFramework(options) {\n SongbirdFramework.call(this, options);\n}\n\nCardinalModalFramework.prototype = Object.create(SongbirdFramework.prototype, {\n constructor: SongbirdFramework,\n});\n\nCardinalModalFramework.prototype._createV1IframeModalElement = function (\n iframe\n) {\n var modal = document.createElement(\"div\");\n var addCloseButton = Boolean(\n this._createOptions &&\n this._createOptions.cardinalSDKConfig &&\n this._createOptions.cardinalSDKConfig.payment &&\n this._createOptions.cardinalSDKConfig.payment.displayExitButton\n );\n\n modal.innerHTML =\n '<div style=\"' +\n \"position: fixed;\" +\n \"z-index: 999999;\" +\n \"top: 50%;\" +\n \"left: 50%;\" +\n \"padding: 24px 20px;\" +\n \"transform: translate(-50%,-50%);\" +\n \"border-radius: 2px;\" +\n \"background: #fff;\" +\n \"max-width: 100%;\" +\n \"overflow: auto;\" +\n '\">' +\n \"<div>\" +\n \"<button data-braintree-v1-fallback-close-button \" +\n 'style=\"' +\n \"font-family: Helvetica,Arial,sans-serif;\" +\n \"font-size: 25px;\" +\n \"line-height: 12px;\" +\n \"position: absolute;\" +\n \"top: 2px;\" +\n \"right: 0px;\" +\n \"cursor: pointer;\" +\n \"color: #999;\" +\n \"border: 0;\" +\n \"outline: none;\" +\n \"background: none;\" +\n '\" ' +\n \"onMouseOver=\\\"this.style.color='#000'\\\" \" +\n \"onMouseOut=\\\"this.style.color='#999'\\\"\" +\n \">\u00D7</button>\" +\n \"</div>\" +\n // iframe container\n '<div data-braintree-v1-fallback-iframe-container style=\"' +\n \"height: 400px;\" +\n '\"></div>' +\n \"</div>\" +\n // modal backdrop\n '<div data-braintree-v1-fallback-backdrop style=\"' +\n \"position: fixed;\" +\n \"z-index: 999998;\" +\n \"cursor: pointer;\" +\n \"top: 0;\" +\n \"left: 0;\" +\n \"width: 100%;\" +\n \"height: 100%;\" +\n \"transition: opacity 1ms ease;\" +\n \"background: rgba(0,0,0,.6);\" +\n '\"></div>';\n\n if (!addCloseButton) {\n modal.querySelector(\n \"[data-braintree-v1-fallback-close-button]\"\n ).style.display = \"none\";\n }\n modal\n .querySelector(\"[data-braintree-v1-fallback-iframe-container]\")\n .appendChild(iframe);\n\n return modal;\n};\n\nmodule.exports = CardinalModalFramework;\n\n},{\"./songbird\":209}],206:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar LegacyFramework = _dereq_(\"./legacy\");\nvar CardinalModalFramework = _dereq_(\"./cardinal-modal\");\nvar Bootstrap3ModalFramework = _dereq_(\"./bootstrap3-modal\");\nvar InlineIframeFramework = _dereq_(\"./inline-iframe\");\n\nmodule.exports = {\n legacy: LegacyFramework,\n \"cardinal-modal\": CardinalModalFramework,\n \"bootstrap3-modal\": Bootstrap3ModalFramework,\n \"inline-iframe\": InlineIframeFramework,\n};\n\n},{\"./bootstrap3-modal\":204,\"./cardinal-modal\":205,\"./inline-iframe\":207,\"./legacy\":208}],207:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar SongbirdFramework = _dereq_(\"./songbird\");\nvar BraintreeError = _dereq_(\"../../../lib/braintree-error\");\nvar errors = _dereq_(\"../../shared/errors\");\nvar enumerate = _dereq_(\"../../../lib/enumerate\");\n\nfunction InlineIframeFramework(options) {\n SongbirdFramework.call(this, options);\n}\n\nInlineIframeFramework.prototype = Object.create(SongbirdFramework.prototype, {\n constructor: SongbirdFramework,\n});\n\nInlineIframeFramework.events = enumerate(\n [\"AUTHENTICATION_IFRAME_AVAILABLE\"],\n \"inline-iframe-framework:\"\n);\n\nInlineIframeFramework.prototype.setUpEventListeners = function (reply) {\n SongbirdFramework.prototype.setUpEventListeners.call(this, reply);\n\n this.on(\n InlineIframeFramework.events.AUTHENTICATION_IFRAME_AVAILABLE,\n function (payload, next) {\n reply(\"authentication-iframe-available\", payload, next);\n }\n );\n};\n\nInlineIframeFramework.prototype._createCardinalConfigurationOptions = function (\n setupOptions\n) {\n var options =\n SongbirdFramework.prototype._createCardinalConfigurationOptions.call(\n this,\n setupOptions\n );\n\n options.payment.framework = \"inline\";\n\n return options;\n};\n\nInlineIframeFramework.prototype._addV1IframeToPage = function () {\n this._emit(\n InlineIframeFramework.events.AUTHENTICATION_IFRAME_AVAILABLE,\n {\n element: this._v1Modal,\n },\n function () {\n // NOOP\n }\n );\n};\n\nInlineIframeFramework.prototype._setupFrameworkSpecificListeners = function () {\n this.setCardinalListener(\"ui.inline.setup\", this._onInlineSetup.bind(this));\n};\n\nInlineIframeFramework.prototype._onInlineSetup = function (\n htmlTemplate,\n details,\n resolve,\n reject\n) {\n var container, hasError;\n\n if (!htmlTemplate || !details) {\n hasError = true;\n } else if (details.paymentType !== \"CCA\") {\n hasError = true;\n } else if (\n !(details.data.mode === \"suppress\" || details.data.mode === \"static\")\n ) {\n hasError = true;\n }\n\n if (hasError) {\n reject(new BraintreeError(errors.THREEDS_INLINE_IFRAME_DETAILS_INCORRECT));\n\n return;\n }\n\n container = document.createElement(\"div\");\n container.innerHTML = htmlTemplate;\n\n if (details.data.mode === \"suppress\") {\n container.style.display = \"none\";\n document.body.appendChild(container);\n resolve();\n } else if (details.data.mode === \"static\") {\n this._emit(\n InlineIframeFramework.events.AUTHENTICATION_IFRAME_AVAILABLE,\n {\n element: container,\n },\n function () {\n resolve();\n }\n );\n }\n};\n\nmodule.exports = InlineIframeFramework;\n\n},{\"../../../lib/braintree-error\":137,\"../../../lib/enumerate\":147,\"../../shared/errors\":213,\"./songbird\":209}],208:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BaseFramework = _dereq_(\"./base\");\nvar deferred = _dereq_(\"../../../lib/deferred\");\n\nfunction LegacyFramework(options) {\n BaseFramework.call(this, options);\n}\n\nLegacyFramework.prototype = Object.create(BaseFramework.prototype, {\n constructor: LegacyFramework,\n});\n\nLegacyFramework.prototype.setUpEventListeners = function () {\n // noop\n};\n\nLegacyFramework.prototype.transformV1CustomerBillingAddress = function (\n customer\n) {\n customer.billingAddress.line1 = customer.billingAddress.streetAddress;\n customer.billingAddress.line2 = customer.billingAddress.extendedAddress;\n customer.billingAddress.city = customer.billingAddress.locality;\n customer.billingAddress.state = customer.billingAddress.region;\n customer.billingAddress.countryCode =\n customer.billingAddress.countryCodeAlpha2;\n delete customer.billingAddress.streetAddress;\n delete customer.billingAddress.extendedAddress;\n delete customer.billingAddress.locality;\n delete customer.billingAddress.region;\n delete customer.billingAddress.countryCodeAlpha2;\n\n return customer;\n};\n\nLegacyFramework.prototype._createIframe = function (options) {\n var self = this;\n\n this._setupV1Elements({\n nonce: options.nonce,\n lookupResponse: options.lookupResponse,\n showLoader: options.showLoader,\n handleAuthResponse: function (data) {\n self._handleAuthResponse(data, options);\n },\n });\n\n return this._v1Iframe;\n};\n\nLegacyFramework.prototype._handleAuthResponse = function (data, options) {\n this._v1Bus.teardown();\n\n options.removeFrame();\n\n // This also has to be in a setTimeout so it executes after the `removeFrame`.\n deferred(\n function () {\n this._handleV1AuthResponse(data);\n }.bind(this)\n )();\n};\n\nLegacyFramework.prototype._checkForFrameworkSpecificVerifyCardErrors =\n function (options) {\n var errorOption;\n\n if (typeof options.addFrame !== \"function\") {\n errorOption = \"an addFrame function\";\n } else if (typeof options.removeFrame !== \"function\") {\n errorOption = \"a removeFrame function\";\n }\n\n return errorOption;\n };\n\nLegacyFramework.prototype._formatVerifyCardOptions = function (options) {\n var modifiedOptions = BaseFramework.prototype._formatVerifyCardOptions.call(\n this,\n options\n );\n\n modifiedOptions.addFrame = deferred(options.addFrame);\n modifiedOptions.removeFrame = deferred(options.removeFrame);\n modifiedOptions.showLoader = options.showLoader !== false;\n\n return modifiedOptions;\n};\n\nLegacyFramework.prototype._formatLookupData = function (options) {\n var self = this;\n\n return BaseFramework.prototype._formatLookupData\n .call(this, options)\n .then(function (data) {\n if (options.customer && options.customer.billingAddress) {\n data.customer = self.transformV1CustomerBillingAddress(\n options.customer\n );\n }\n\n return data;\n });\n};\n\nLegacyFramework.prototype._presentChallenge = function (\n lookupResponse,\n options\n) {\n options.addFrame(\n null,\n this._createIframe({\n showLoader: options.showLoader,\n lookupResponse: lookupResponse.lookup,\n nonce: lookupResponse.paymentMethod.nonce,\n removeFrame: options.removeFrame,\n })\n );\n};\n\nmodule.exports = LegacyFramework;\n\n},{\"../../../lib/deferred\":145,\"./base\":203}],209:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BaseFramework = _dereq_(\"./base\");\nvar assign = _dereq_(\"../../../lib/assign\").assign;\nvar deferred = _dereq_(\"../../../lib/deferred\");\nvar BraintreeError = _dereq_(\"../../../lib/braintree-error\");\nvar convertToBraintreeError = _dereq_(\"../../../lib/convert-to-braintree-error\");\nvar analytics = _dereq_(\"../../../lib/analytics\");\nvar assets = _dereq_(\"../../../lib/assets\");\nvar errors = _dereq_(\"../../shared/errors\");\nvar enumerate = _dereq_(\"../../../lib/enumerate\");\nvar constants = _dereq_(\"../../shared/constants\");\nvar ExtendedPromise = _dereq_(\"@braintree/extended-promise\");\n\nvar INTEGRATION_TIMEOUT_MS =\n _dereq_(\"../../../lib/constants\").INTEGRATION_TIMEOUT_MS;\nvar PLATFORM = _dereq_(\"../../../lib/constants\").PLATFORM;\nvar VERSION = \"3.103.0\";\nvar CUSTOMER_CANCELED_SONGBIRD_MODAL = \"01\";\nvar SONGBIRD_UI_EVENTS = [\n \"ui.close\",\n \"ui.render\",\n\n // TODO these events are not documented in the\n // client reference because so far we have\n // not been able to trigger them in our testing\n \"ui.renderHidden\",\n \"ui.loading.close\",\n \"ui.loading.render\",\n];\n\nvar SCA_EXEMPTION_TYPES = [\"low_value\", \"transaction_risk_analysis\"];\n\nExtendedPromise.suppressUnhandledPromiseMessage = true;\n\nfunction SongbirdFramework(options) {\n BaseFramework.call(this, options);\n\n this._songbirdInitFailed = false;\n this._clientMetadata = {\n requestedThreeDSecureVersion: \"2\",\n sdkVersion: PLATFORM + \"/\" + VERSION,\n };\n this.originalSetupOptions = options;\n this._getDfReferenceIdPromisePlus = new ExtendedPromise();\n this.setupSongbird(options);\n this._cardinalEvents = [];\n}\n\nSongbirdFramework.prototype = Object.create(BaseFramework.prototype, {\n constructor: SongbirdFramework,\n});\n\nSongbirdFramework.events = enumerate(\n [\n \"LOOKUP_COMPLETE\",\n \"CUSTOMER_CANCELED\",\n \"UI.CLOSE\",\n \"UI.RENDER\",\n \"UI.RENDERHIDDEN\",\n \"UI.LOADING.CLOSE\",\n \"UI.LOADING.RENDER\",\n ],\n \"songbird-framework:\"\n);\n\nSongbirdFramework.prototype.setUpEventListeners = function (reply) {\n this.on(SongbirdFramework.events.LOOKUP_COMPLETE, function (data, next) {\n reply(\"lookup-complete\", data, next);\n });\n this.on(SongbirdFramework.events.CUSTOMER_CANCELED, function () {\n reply(\"customer-canceled\");\n });\n this.on(SongbirdFramework.events[\"UI.CLOSE\"], function () {\n reply(\"authentication-modal-close\");\n });\n this.on(SongbirdFramework.events[\"UI.RENDER\"], function () {\n reply(\"authentication-modal-render\");\n });\n this.on(SongbirdFramework.events[\"UI.RENDERHIDDEN\"], function () {\n reply(\"authentication-modal-render-hidden\");\n });\n this.on(SongbirdFramework.events[\"UI.LOADING.CLOSE\"], function () {\n reply(\"authentication-modal-loader-close\");\n });\n this.on(SongbirdFramework.events[\"UI.LOADING.RENDER\"], function () {\n reply(\"authentication-modal-loader-render\");\n });\n};\n\nSongbirdFramework.prototype.prepareLookup = function (options) {\n var data = assign({}, options);\n var self = this;\n\n return this.getDfReferenceId()\n .then(function (id) {\n data.dfReferenceId = id;\n })\n .then(function () {\n return self._triggerCardinalBinProcess(options.bin);\n })\n .catch(function () {\n // catch and ignore errors from looking up\n // df reference and Cardinal bin process\n })\n .then(function () {\n return self._waitForClient();\n })\n .then(function () {\n data.clientMetadata = self._clientMetadata;\n data.authorizationFingerprint =\n self._client.getConfiguration().authorizationFingerprint;\n data.braintreeLibraryVersion = \"braintree/web/\" + VERSION;\n\n return data;\n });\n};\n\nSongbirdFramework.prototype.initializeChallengeWithLookupResponse = function (\n lookupResponse,\n options\n) {\n return this.setupSongbird().then(\n function () {\n return BaseFramework.prototype.initializeChallengeWithLookupResponse.call(\n this,\n lookupResponse,\n options\n );\n }.bind(this)\n );\n};\n\nSongbirdFramework.prototype.handleSongbirdError = function (errorType) {\n this._songbirdInitFailed = true;\n this._removeSongbirdListeners();\n analytics.sendEvent(\n this._createPromise,\n \"three-d-secure.cardinal-sdk.songbird-error.\" + errorType\n );\n\n if (this._songbirdPromise) {\n this._songbirdPromise.resolve();\n }\n};\n\nSongbirdFramework.prototype._triggerCardinalBinProcess = function (bin) {\n var self = this;\n var issuerStartTime = Date.now();\n\n return window.Cardinal.trigger(\"bin.process\", bin).then(function (\n binResults\n ) {\n self._clientMetadata.issuerDeviceDataCollectionTimeElapsed =\n Date.now() - issuerStartTime;\n self._clientMetadata.issuerDeviceDataCollectionResult =\n binResults && binResults.Status;\n });\n};\n\nSongbirdFramework.prototype.transformBillingAddress = function (\n additionalInformation,\n billingAddress\n) {\n if (billingAddress) {\n // map from public API to the API that the Gateway expects\n extractAddressData(billingAddress, additionalInformation, \"billing\");\n additionalInformation.billingPhoneNumber = billingAddress.phoneNumber;\n additionalInformation.billingGivenName = billingAddress.givenName;\n additionalInformation.billingSurname = billingAddress.surname;\n }\n\n return additionalInformation;\n};\n\nSongbirdFramework.prototype.transformShippingAddress = function (\n additionalInformation\n) {\n var shippingAddress = additionalInformation.shippingAddress;\n\n if (shippingAddress) {\n // map from public API to the API that the Gateway expects\n extractAddressData(shippingAddress, additionalInformation, \"shipping\");\n\n delete additionalInformation.shippingAddress;\n }\n\n return additionalInformation;\n};\n\nSongbirdFramework.prototype._createV1IframeModalElement = function (iframe) {\n var modal = document.createElement(\"div\");\n\n modal.innerHTML =\n '<div data-braintree-v1-fallback-iframe-container=\"true\" style=\"' +\n \"height: 400px;\" +\n '\"></div>';\n modal\n .querySelector('[data-braintree-v1-fallback-iframe-container=\"true\"]')\n .appendChild(iframe);\n\n return modal;\n};\n\nSongbirdFramework.prototype._createV1IframeModal = function (iframe) {\n var modal = this._createV1IframeModalElement(iframe);\n var btn = modal.querySelector(\"[data-braintree-v1-fallback-close-button]\");\n var backdrop = modal.querySelector(\"[data-braintree-v1-fallback-backdrop]\");\n var self = this;\n\n function closeHandler() {\n modal.parentNode.removeChild(modal);\n self.cancelVerifyCard(errors.THREEDS_CARDINAL_SDK_CANCELED);\n document.removeEventListener(\"keyup\", self._onV1Keyup);\n self._onV1Keyup = null;\n }\n\n this._onV1Keyup = function (e) {\n if (e.key !== \"Escape\") {\n return;\n }\n\n if (!modal.parentNode) {\n // modal not on page\n return;\n }\n\n closeHandler();\n };\n\n if (btn) {\n btn.addEventListener(\"click\", closeHandler);\n }\n\n if (backdrop) {\n backdrop.addEventListener(\"click\", closeHandler);\n }\n\n document.addEventListener(\"keyup\", this._onV1Keyup);\n\n return modal;\n};\n\nSongbirdFramework.prototype._addV1IframeToPage = function () {\n document.body.appendChild(this._v1Modal);\n};\n\nSongbirdFramework.prototype.setupSongbird = function (setupOptions) {\n var self = this;\n var startTime = Date.now();\n\n if (this._songbirdPromise) {\n return this._songbirdPromise;\n }\n\n setupOptions = setupOptions || {};\n\n this._songbirdPromise = new ExtendedPromise();\n this._v2SetupFailureReason = \"reason-unknown\";\n\n self\n ._loadCardinalScript(setupOptions)\n .then(function () {\n if (!window.Cardinal) {\n self._v2SetupFailureReason = \"cardinal-global-unavailable\";\n\n return Promise.reject(\n new BraintreeError(errors.THREEDS_CARDINAL_SDK_SETUP_FAILED)\n );\n }\n\n return self._configureCardinalSdk({\n setupOptions: setupOptions,\n setupStartTime: startTime,\n });\n })\n .catch(function (err) {\n var error = convertToBraintreeError(err, {\n type: errors.THREEDS_CARDINAL_SDK_SETUP_FAILED.type,\n code: errors.THREEDS_CARDINAL_SDK_SETUP_FAILED.code,\n message: errors.THREEDS_CARDINAL_SDK_SETUP_FAILED.message,\n });\n\n self._getDfReferenceIdPromisePlus.reject(error);\n\n window.clearTimeout(self._songbirdSetupTimeoutReference);\n analytics.sendEvent(\n self._client,\n \"three-d-secure.cardinal-sdk.init.setup-failed\"\n );\n self.handleSongbirdError(\n \"cardinal-sdk-setup-failed.\" + self._v2SetupFailureReason\n );\n });\n\n return this._songbirdPromise;\n};\n\nSongbirdFramework.prototype._configureCardinalSdk = function (config) {\n var self = this;\n\n return this._waitForClient()\n .then(function () {\n var threeDSConfig =\n self._client.getConfiguration().gatewayConfiguration.threeDSecure;\n\n return threeDSConfig;\n })\n .then(function (threeDSConfig) {\n var jwt = threeDSConfig.cardinalAuthenticationJWT;\n var setupOptions = config.setupOptions;\n var setupStartTime = config.setupStartTime;\n var cardinalConfiguration =\n self._createCardinalConfigurationOptions(setupOptions);\n\n SONGBIRD_UI_EVENTS.forEach(function (eventName) {\n self.setCardinalListener(eventName, function () {\n self._emit(SongbirdFramework.events[eventName.toUpperCase()]);\n });\n });\n self.setCardinalListener(\n \"payments.setupComplete\",\n self._createPaymentsSetupCompleteCallback()\n );\n\n self._setupFrameworkSpecificListeners();\n\n window.Cardinal.configure(cardinalConfiguration);\n\n window.Cardinal.setup(\"init\", {\n jwt: jwt,\n });\n\n self._clientMetadata.cardinalDeviceDataCollectionTimeElapsed =\n Date.now() - setupStartTime;\n\n self.setCardinalListener(\n \"payments.validated\",\n self._createPaymentsValidatedCallback()\n );\n })\n .catch(function (err) {\n self._v2SetupFailureReason = \"cardinal-configuration-threw-error\";\n\n return Promise.reject(err);\n });\n};\n\nSongbirdFramework.prototype.setCardinalListener = function (eventName, cb) {\n this._cardinalEvents.push(eventName);\n window.Cardinal.on(eventName, cb);\n};\n\nSongbirdFramework.prototype._setupFrameworkSpecificListeners = function () {\n // noop\n};\n\nSongbirdFramework.prototype._createCardinalConfigurationOptions = function (\n setupOptions\n) {\n var cardinalConfiguration = setupOptions.cardinalSDKConfig || {};\n var paymentSettings = cardinalConfiguration.payment || {};\n\n if (!cardinalConfiguration.logging && setupOptions.loggingEnabled) {\n cardinalConfiguration.logging = {\n level: \"verbose\",\n };\n }\n\n cardinalConfiguration.payment = {};\n\n if (paymentSettings.hasOwnProperty(\"displayLoading\")) {\n cardinalConfiguration.payment.displayLoading =\n paymentSettings.displayLoading;\n }\n if (paymentSettings.hasOwnProperty(\"displayExitButton\")) {\n cardinalConfiguration.payment.displayExitButton =\n paymentSettings.displayExitButton;\n }\n\n return cardinalConfiguration;\n};\n\nSongbirdFramework.prototype._loadCardinalScript = function (setupOptions) {\n var self = this;\n\n return this._waitForClient()\n .then(function () {\n var scriptSource = self._getCardinalScriptSource();\n\n self._songbirdSetupTimeoutReference = window.setTimeout(function () {\n analytics.sendEvent(\n self._client,\n \"three-d-secure.cardinal-sdk.init.setup-timeout\"\n );\n self.handleSongbirdError(\"cardinal-sdk-setup-timeout\");\n }, setupOptions.timeout || INTEGRATION_TIMEOUT_MS);\n\n return assets.loadScript({ src: scriptSource });\n })\n .catch(function (err) {\n self._v2SetupFailureReason = \"songbird-js-failed-to-load\";\n\n return Promise.reject(\n convertToBraintreeError(\n err,\n errors.THREEDS_CARDINAL_SDK_SCRIPT_LOAD_FAILED\n )\n );\n });\n};\n\nSongbirdFramework.prototype._getCardinalScriptSource = function () {\n var gatewayConfig = this._client.getConfiguration().gatewayConfiguration;\n\n if (gatewayConfig && gatewayConfig.environment === \"production\") {\n return constants.CARDINAL_SCRIPT_SOURCE.production;\n }\n\n return constants.CARDINAL_SCRIPT_SOURCE.sandbox;\n};\n\nSongbirdFramework.prototype._createPaymentsSetupCompleteCallback = function () {\n var self = this;\n\n return function (data) {\n self._getDfReferenceIdPromisePlus.resolve(data.sessionId);\n\n window.clearTimeout(self._songbirdSetupTimeoutReference);\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.cardinal-sdk.init.setup-completed\"\n );\n\n self._songbirdPromise.resolve();\n };\n};\n\nSongbirdFramework.prototype.getDfReferenceId = function () {\n return this._getDfReferenceIdPromisePlus;\n};\n\nSongbirdFramework.prototype._performJWTValidation = function (\n rawCardinalSDKVerificationData,\n jwt\n) {\n var self = this;\n var nonce = this._lookupPaymentMethod.nonce;\n var url =\n \"payment_methods/\" + nonce + \"/three_d_secure/authenticate_from_jwt\";\n var cancelCode =\n rawCardinalSDKVerificationData &&\n rawCardinalSDKVerificationData.Payment &&\n rawCardinalSDKVerificationData.Payment.ExtendedData &&\n rawCardinalSDKVerificationData.Payment.ExtendedData.ChallengeCancel;\n\n if (cancelCode) {\n // see ChallengeCancel docs here for different values:\n // https://cardinaldocs.atlassian.net/wiki/spaces/CC/pages/98315/Response+Objects\n analytics.sendEvent(\n this._createPromise,\n \"three-d-secure.verification-flow.cardinal-sdk.cancel-code.\" + cancelCode\n );\n\n if (cancelCode === CUSTOMER_CANCELED_SONGBIRD_MODAL) {\n this._emit(SongbirdFramework.events.CUSTOMER_CANCELED);\n }\n }\n\n analytics.sendEvent(\n this._createPromise,\n \"three-d-secure.verification-flow.upgrade-payment-method.started\"\n );\n\n return this._waitForClient()\n .then(function () {\n return self._client.request({\n method: \"post\",\n endpoint: url,\n data: {\n jwt: jwt,\n paymentMethodNonce: nonce,\n },\n });\n })\n .then(function (response) {\n var paymentMethod = response.paymentMethod || self._lookupPaymentMethod;\n var formattedResponse = self._formatAuthResponse(\n paymentMethod,\n response.threeDSecureInfo\n );\n\n formattedResponse.rawCardinalSDKVerificationData =\n rawCardinalSDKVerificationData;\n analytics.sendEvent(\n self._client,\n \"three-d-secure.verification-flow.upgrade-payment-method.succeeded\"\n );\n\n return Promise.resolve(formattedResponse);\n })\n .catch(function (err) {\n var error = new BraintreeError({\n type: errors.THREEDS_JWT_AUTHENTICATION_FAILED.type,\n code: errors.THREEDS_JWT_AUTHENTICATION_FAILED.code,\n message: errors.THREEDS_JWT_AUTHENTICATION_FAILED.message,\n details: {\n originalError: err,\n },\n });\n\n analytics.sendEvent(\n self._client,\n \"three-d-secure.verification-flow.upgrade-payment-method.errored\"\n );\n\n return Promise.reject(error);\n });\n};\n\nSongbirdFramework.prototype._createPaymentsValidatedCallback = function () {\n var self = this;\n\n /**\n * @param {object} data Response Data\n * @see {@link https://cardinaldocs.atlassian.net/wiki/spaces/CC/pages/98315/Response+Objects#ResponseObjects-ObjectDefinition}\n * @param {string} data.ActionCode The resulting state of the transaction.\n * @param {boolean} data.Validated Represents whether transaction was successfully or not.\n * @param {object} data.Payment Represents additional information about the verification.\n * @param {number} data.ErrorNumber A non-zero value represents the error encountered while attempting the process the message request.\n * @param {string} data.ErrorDescription Application error description for the associated error number.\n * @param {string} validatedJwt Response JWT\n * @returns {void}\n * */\n return function (data, validatedJwt) {\n var formattedError;\n\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.verification-flow.cardinal-sdk.action-code.\" +\n data.ActionCode.toLowerCase()\n );\n\n if (!self._verifyCardPromisePlus) {\n self.handleSongbirdError(\n \"cardinal-sdk-setup-error.number-\" + data.ErrorNumber\n );\n\n return;\n }\n\n switch (data.ActionCode) {\n // Handle these scenarios based on liability shift information in the response.\n case \"SUCCESS\":\n case \"NOACTION\":\n case \"FAILURE\":\n self\n ._performJWTValidation(data, validatedJwt)\n .then(function (result) {\n self._verifyCardPromisePlus.resolve(result);\n })\n .catch(function (err) {\n self._verifyCardPromisePlus.reject(err);\n });\n break;\n\n case \"ERROR\":\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.verification-flow.cardinal-sdk-error.\" +\n data.ErrorNumber\n );\n\n switch (data.ErrorNumber) {\n case 10001: // Cardinal Docs: Timeout when sending an /Init message\n case 10002: // Cardinal Docs: Timeout when sending an /Start message\n formattedError = new BraintreeError(\n errors.THREEDS_CARDINAL_SDK_SETUP_TIMEDOUT\n );\n break;\n case 10003: // Cardinal Docs: Timeout when sending an /Validate message. Although this code exists we do not yet have a flow where a validate message is sent to Midas. This error should not yet be triggered\n case 10007: // Cardinal Docs: Timeout when sending an /Confirm message\n case 10009: // Cardinal Docs: Timeout when sending an /Continue message\n formattedError = new BraintreeError(\n errors.THREEDS_CARDINAL_SDK_RESPONSE_TIMEDOUT\n );\n break;\n case 10005: // Cardinal Docs: Songbird was started without a request jwt.\n case 10006: // Cardinal Docs: This is a general configuration error. The description is populated by the specific configuration error that caused the error.\n formattedError = new BraintreeError(\n errors.THREEDS_CARDINAL_SDK_BAD_CONFIG\n );\n break;\n case 10008: // Cardinal Docs: Songbird was initialized without a merchant JWT.\n case 10010: // Cardinal Docs: The response JWT was\n formattedError = new BraintreeError(\n errors.THREEDS_CARDINAL_SDK_BAD_JWT\n );\n break;\n case 10011:\n // This may never get called, according to the Cardinal docs:\n // The user has canceled the transaction. This is generally found in alternative\n // payments that supply a cancel button on the payment brand side.\n analytics.sendEvent(\n self._createPromise,\n \"three-d-secure.verification-flow.canceled\"\n );\n formattedError = new BraintreeError(\n errors.THREEDS_CARDINAL_SDK_CANCELED\n );\n break;\n default:\n formattedError = new BraintreeError(\n errors.THREEDS_CARDINAL_SDK_ERROR\n );\n }\n\n formattedError.details = {\n originalError: {\n code: data.ErrorNumber,\n description: data.ErrorDescription,\n },\n };\n\n self._verifyCardPromisePlus.reject(formattedError);\n break;\n\n default:\n }\n };\n};\n\nSongbirdFramework.prototype._checkForVerifyCardError = function (\n options,\n privateOptions\n) {\n if (!options.bin) {\n return new BraintreeError({\n type: errors.THREEDS_MISSING_VERIFY_CARD_OPTION.type,\n code: errors.THREEDS_MISSING_VERIFY_CARD_OPTION.code,\n message: \"verifyCard options must include a BIN.\",\n });\n }\n\n return BaseFramework.prototype._checkForVerifyCardError.call(\n this,\n options,\n privateOptions\n );\n};\n\nSongbirdFramework.prototype._checkForFrameworkSpecificVerifyCardErrors =\n function (options, privateOptions) {\n var errorOption;\n\n if (\n typeof options.onLookupComplete !== \"function\" &&\n !privateOptions.ignoreOnLookupCompleteRequirement\n ) {\n errorOption = \"an onLookupComplete function\";\n }\n\n return errorOption;\n };\n\nSongbirdFramework.prototype._formatVerifyCardOptions = function (options) {\n var modifiedOptions = BaseFramework.prototype._formatVerifyCardOptions.call(\n this,\n options\n );\n var additionalInformation = modifiedOptions.additionalInformation || {};\n\n additionalInformation = this.transformBillingAddress(\n additionalInformation,\n options.billingAddress\n );\n additionalInformation = this.transformShippingAddress(additionalInformation);\n\n if (options.onLookupComplete) {\n modifiedOptions.onLookupComplete = deferred(options.onLookupComplete);\n }\n if (options.email) {\n additionalInformation.email = options.email;\n }\n if (options.mobilePhoneNumber) {\n additionalInformation.mobilePhoneNumber = options.mobilePhoneNumber;\n }\n\n modifiedOptions.additionalInformation = additionalInformation;\n\n return modifiedOptions;\n};\n\nSongbirdFramework.prototype._onLookupComplete = function (\n lookupResponse,\n options\n) {\n var self = this;\n\n return BaseFramework.prototype._onLookupComplete\n .call(this, lookupResponse)\n .then(function (response) {\n return new Promise(function (resolve, reject) {\n // NEXT_MAJOR_VERSION format this response object to look like the mobile sdk response\n // which is basically the lookup param at the top level with some additional accessors\n response.requiresUserAuthentication = Boolean(\n response.lookup && response.lookup.acsUrl\n );\n\n function next() {\n resolve(response);\n }\n\n self._verifyCardPromisePlus.catch(reject);\n\n // If both event and callback are mistakenly used together,\n // prefer the callback when it is passed into the verifyCard options\n if (options.onLookupComplete) {\n options.onLookupComplete(response, next);\n } else {\n self._emit(SongbirdFramework.events.LOOKUP_COMPLETE, response, next);\n }\n });\n });\n};\n\nSongbirdFramework.prototype._presentChallenge = function (lookupResponse) {\n // transactionId is required for the Songbird flow, so if it\n // does not exist, we just return\n if (this._songbirdInitFailed || !lookupResponse.lookup.transactionId) {\n return;\n }\n\n // set up listener for ref id to call out to bt before calling verify callback\n window.Cardinal.continue(\n \"cca\",\n {\n AcsUrl: lookupResponse.lookup.acsUrl,\n Payload: lookupResponse.lookup.pareq,\n },\n {\n OrderDetails: { TransactionId: lookupResponse.lookup.transactionId },\n }\n );\n};\n\nSongbirdFramework.prototype._formatLookupData = function (options) {\n var self = this;\n\n return BaseFramework.prototype._formatLookupData\n .call(this, options)\n .then(function (data) {\n data.additionalInfo = options.additionalInformation;\n\n if (options.accountType) {\n data.accountType = options.accountType;\n }\n if (options.challengeRequested) {\n data.challengeRequested = options.challengeRequested;\n }\n if (options.requestedExemptionType) {\n if (!SCA_EXEMPTION_TYPES.includes(options.requestedExemptionType)) {\n throw new BraintreeError({\n code: errors.THREEDS_REQUESTED_EXEMPTION_TYPE_INVALID.code,\n type: errors.THREEDS_REQUESTED_EXEMPTION_TYPE_INVALID.type,\n message:\n \"requestedExemptionType `\" +\n options.requestedExemptionType +\n \"` is not a valid exemption. The accepted values are: `\" +\n SCA_EXEMPTION_TYPES.join(\"`, `\") +\n \"`\",\n });\n }\n data.requestedExemptionType = options.requestedExemptionType;\n }\n if (options.customFields) {\n data.customFields = options.customFields;\n }\n if (options.dataOnlyRequested) {\n data.dataOnlyRequested = options.dataOnlyRequested;\n }\n if (options.exemptionRequested) {\n data.exemptionRequested = options.exemptionRequested;\n }\n if (options.requestVisaDAF) {\n data.requestVisaDAF = options.requestVisaDAF;\n }\n if (options.bin) {\n data.bin = options.bin;\n }\n // NEXT_MAJOR_VERSION remove cardAdd in favor of cardAddChallengeRequested\n if (options.cardAdd != null) {\n data.cardAdd = options.cardAdd;\n }\n if (options.cardAddChallengeRequested != null) {\n data.cardAdd = options.cardAddChallengeRequested;\n }\n if (options.merchantName) {\n data.merchantName = options.merchantName;\n }\n\n return self.prepareLookup(data);\n });\n};\n\nSongbirdFramework.prototype.cancelVerifyCard = function (verifyCardError) {\n var self = this;\n\n return BaseFramework.prototype.cancelVerifyCard\n .call(this)\n .then(function (response) {\n if (self._verifyCardPromisePlus) {\n verifyCardError =\n verifyCardError ||\n new BraintreeError(errors.THREEDS_VERIFY_CARD_CANCELED_BY_MERCHANT);\n\n self._verifyCardPromisePlus.reject(verifyCardError);\n }\n\n return response;\n });\n};\n\nSongbirdFramework.prototype._removeSongbirdListeners = function () {\n this._cardinalEvents.forEach(function (eventName) {\n window.Cardinal.off(eventName);\n });\n\n this._cardinalEvents = [];\n};\n\nSongbirdFramework.prototype.teardown = function () {\n if (window.Cardinal) {\n this._removeSongbirdListeners();\n }\n\n // we intentionally do not remove the Cardinal SDK\n // from the page when tearing down. Subsequent\n // component creations will be faster because\n // the asset is already on the page\n\n return BaseFramework.prototype.teardown.call(this);\n};\n\nSongbirdFramework.prototype._reloadThreeDSecure = function () {\n var self = this;\n var startTime = Date.now();\n\n return self.teardown().then(function () {\n self._configureCardinalSdk({\n setupOptions: self.originalSetupOptions,\n setupStartTime: startTime,\n });\n });\n};\n\nfunction extractAddressData(source, target, prefix) {\n target[prefix + \"Line1\"] = source.streetAddress;\n target[prefix + \"Line2\"] = source.extendedAddress;\n target[prefix + \"Line3\"] = source.line3;\n target[prefix + \"City\"] = source.locality;\n target[prefix + \"State\"] = source.region;\n target[prefix + \"PostalCode\"] = source.postalCode;\n target[prefix + \"CountryCode\"] = source.countryCodeAlpha2;\n}\n\nmodule.exports = SongbirdFramework;\n\n},{\"../../../lib/analytics\":132,\"../../../lib/assets\":133,\"../../../lib/assign\":134,\"../../../lib/braintree-error\":137,\"../../../lib/constants\":139,\"../../../lib/convert-to-braintree-error\":141,\"../../../lib/deferred\":145,\"../../../lib/enumerate\":147,\"../../shared/constants\":212,\"../../shared/errors\":213,\"./base\":203,\"@braintree/extended-promise\":31}],210:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar methods = _dereq_(\"../../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../../lib/convert-methods-to-error\");\nvar EventEmitter = _dereq_(\"@braintree/event-emitter\");\nvar FRAMEWORKS = _dereq_(\"./frameworks\");\n\n/**\n * @deprecated\n * @callback ThreeDSecure~addFrameCallback\n * @param {?BraintreeError} [err] `null` or `undefined` if there was no error.\n * @param {HTMLIFrameElement} iframe An iframe element containing the bank's authentication page that you must put on your page.\n * @description **Deprecated** The callback used for options.addFrame in 3DS 1.0's {@link ThreeDSecure#verifyCard|verifyCard}.\n * @returns {void}\n */\n\n/**\n * @deprecated\n * @callback ThreeDSecure~removeFrameCallback\n * @description **Deprecated** The callback used for options.removeFrame in 3DS 1.0's {@link ThreeDSecure#verifyCard|verifyCard}.\n * @returns {void}\n */\n\n/**\n * @deprecated\n * @typedef {object} ThreeDSecure~verifyCardCustomerObject\n * @property {string} [customer.mobilePhoneNumber] The mobile phone number used for verification. Only numbers; remove dashes, parenthesis and other characters.\n * @property {string} [customer.email] The email used for verification.\n * @property {string} [customer.shippingMethod] The 2-digit string indicating the shipping method chosen for the transaction.\n * @property {string} [customer.billingAddress.firstName] The first name associated with the address.\n * @property {string} [customer.billingAddress.lastName] The last name associated with the address.\n * @property {string} [customer.billingAddress.streetAddress] Line 1 of the Address (eg. number, street, etc).\n * @property {string} [customer.billingAddress.extendedAddress] Line 2 of the Address (eg. suite, apt #, etc.).\n * @property {string} [customer.billingAddress.locality] The locality (city) name associated with the address.\n * @property {string} [customer.billingAddress.region] The 2 letter code for US states or an ISO-3166-2 country subdivision code of up to three letters.\n * @property {string} [customer.billingAddress.postalCode] The zip code or equivalent for countries that have them.\n * @property {string} [customer.billingAddress.countryCodeAlpha2] The 2 character country code.\n * @property {string} [customer.billingAddress.phoneNumber] The phone number associated with the address. Only numbers; remove dashes, parenthesis and other characters.\n * @description **Deprecated** Optional customer information to be passed to 3DS 1.0 for verification.\n */\n\n/**\n * @typedef {object} ThreeDSecure~verifyPayload\n * @property {string} nonce The new payment method nonce produced by the 3D Secure lookup. The original nonce passed into {@link ThreeDSecure#verifyCard|verifyCard} was consumed. This new nonce should be used to transact on your server.\n * @property {string} type The payment method type.\n * @property {object} details Additional account details.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {string} description A human-readable description.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n * @property {boolean} liabilityShiftPossible *Deprecated:* Use `threeDSecureInfo.liabilityShiftPossible` instead.\n * @property {boolean} liabilityShifted *Deprecated:* Use `threeDSecureInfo.liabilityShifted` instead.\n * @property {object} threeDSecureInfo 3DS information about the card. Note: This information should be verified on the server by using the [payment method nonce find method](https://developer.paypal.com/braintree/docs/reference/request/payment-method-nonce/find). The values provided here are merely for convenience. Only values looked up on the server should determine the logic about how to process a transaction.\n * @property {string} threeDSecureInfo.acsTransactionId The transaction identifier from the issuing bank.\n * @property {string} threeDSecureInfo.cavv Cardholder authentication verification value or CAVV. The main encrypted message issuers and card networks use to verify authentication has occurred. Mastercard uses an AVV message and American Express uses an AEVV message, each of which should also be passed in the cavv parameter.\n * @property {string} threeDSecureInfo.dsTransactionId Transaction identifier resulting from 3D Secure 2 authentication.\n * @property {string} threeDSecureInfo.eciFlag The value of the electronic commerce indicator (ECI) flag, which indicates the outcome of the 3DS authentication. This will be a two-digit value.\n * @property {boolean} threeDSecureInfo.enrolled Indicates the status of 3D Secure authentication eligibility with the card issuer.\n * @property {boolean} threeDSecureInfo.liabilityShifted Indicates whether the liability for fraud has been shifted away from the merchant.\n * @property {boolean} threeDSecureInfo.liabilityShiftPossible Indicates whether liability shift is still possible on a retry.\n * @property {string} threeDSecureInfo.paresStatus Transaction status result identifier.\n * @property {string} threeDSecureInfo.status Indicates the outcome of the 3D Secure event.\n * @property {string} threeDSecureInfo.threeDSecureAuthenticationId ID of the 3D Secure authentication performed for this transaction. Do not provide this field as a transaction sale parameter if you are using the returned payment method nonce from the payload.\n * @property {string} threeDSecureInfo.threeDSecureServerTransactionId Transaction identifier provided by the issuing bank who recieved the 3D Secure event.\n * @property {string} threeDSecureInfo.threeDSecureVersion The version of 3D Secure authentication used for the transaction.\n * @property {string} threeDSecureInfo.xid Transaction identifier resulting from 3D Secure authentication. Uniquely identifies the transaction and sometimes required in the authorization message. This is a base64-encoded value. This field will no longer be used in 3D Secure 2 authentications for Visa and Mastercard, however it will be supported by American Express.\n * @property {string} threeDSecureInfo.lookup.transStatus Error code returned from the 3D Secure MPI provider.\n * @property {string} threeDSecureInfo.lookup.transStatusReason Description correlating to the transStatus error code.\n * @property {string} threeDSecureInfo.authentication.transStatus Error code returned from the 3D Secure MPI provider.\n * @property {string} threeDSecureInfo.authentication.transStatusReason Description correlating to the transStatus error code.\n * @property {object} rawCardinalSDKVerificationData The response back from the Cardinal SDK after verification has completed. See [Cardinal's Documentation](https://cardinaldocs.atlassian.net/wiki/spaces/CC/pages/98315/Response+Objects) for more information. If the customer was not required to do a 3D Secure challenge, this object will not be available.\n */\n\n/**\n * @typedef {string} ThreeDSecure~prepareLookupPayload The client data to pass on when doing a server side lookup call.\n */\n\n/**\n * @typedef {object} ThreeDSecure~verificationData\n * @property {boolean} requiresUserAuthentication When `true`, the user will be presented with a 3D Secure challenge when calling `next` in the {@link ThreeDSecure#event:lookup-complete|`lookup-complete` event}.\n * @property {object} threeDSecureInfo Contains liability shift details.\n * @property {boolean} threeDSecureInfo.liabilityShiftPossible Indicates whether the card was eligible for 3D Secure.\n * @property {boolean} threeDSecureInfo.liabilityShifted Indicates whether the liability for fraud has been shifted away from the merchant.\n * @property {object} paymentMethod A {@link ThreeDSecure~verifyPayload|verifyPayload} object.\n * @property {object} lookup Details about the 3D Secure lookup.\n * @property {string} lookup.threeDSecureVersion The version of 3D Secure that will be used for the 3D Secure challenge.\n */\n\n/**\n * @typedef {object} ThreeDSecure~billingAddress\n * @property {string} [givenName] The first name associated with the billing address. (maximum length 50, ASCII characters)\n * @property {string} [surname] The last name associated with the billing address. (maximum length 50, ASCII characters)\n * @property {string} [phoneNumber] The phone number associated with the billing address. Only numbers; remove dashes, parenthesis and other characters.\n * @property {string} [streetAddress] Line 1 of the billing address (eg. number, street, etc). (maximum length 50)\n * @property {string} [extendedAddress] Line 2 of the billing address (eg. suite, apt #, etc.). (maximum length 50)\n * @property {string} [line3] Line 3 of the billing address if needed (eg. suite, apt #, etc). (maximum length 50)\n * @property {string} [locality] The locality (city) name associated with the billing address.\n * @property {string} [region] This field expects an ISO3166-2 subdivision code. The subdivision code is what follows the hyphen separator in the full ISO 3166-2 code. For example, the state of Ohio in the United States we expect \"OH\" as opposed to the full ISO 3166-2 code \"US-OH\".\n * @property {string} [postalCode] The zip code or equivalent for countries that have them.\n * @property {string} [countryCodeAlpha2] The 2 character country code.\n */\n\n/**\n * @typedef {object} ThreeDSecure~additionalInformation\n * @property {string} [workPhoneNumber] The work phone number used for verification. Only numbers; remove dashes, parenthesis and other characters. (maximum length 25)\n * @property {string} [shippingGivenName] The first name associated with the shipping address. (maximum length 50, ASCII characters)\n * @property {string} [shippingSurname] The last name associated with the shipping address. (maximum length 50, ASCII characters)\n * @property {object} [shippingAddress]\n * @property {string} [shippingAddress.streetAddress] Line 1 of the shipping address (eg. number, street, etc). (maximum length 50)\n * @property {string} [shippingAddress.extendedAddress] Line 2 of the shipping address (eg. suite, apt #, etc.). (maximum length 50)\n * @property {string} [shippingAddress.line3] Line 3 of the shipping address if needed (eg. suite, apt #, etc). (maximum length 50)\n * @property {string} [shippingAddress.locality] The locality (city) name associated with the shipping address. (maximum length 50)\n * @property {string} [shippingAddress.region] This field expects an ISO3166-2 subdivision code. The subdivision code is what follows the hyphen separator in the full ISO 3166-2 code. For example, the state of Ohio in the United States we expect \"OH\" as opposed to the full ISO 3166-2 code \"US-OH\".\n * @property {string} [shippingAddress.postalCode] The zip code or equivalent for countries that have them. (maximum length 10)\n * @property {string} [shippingAddress.countryCodeAlpha2] The 2 character country code. (maximum length 2)\n * @property {string} [shippingPhone] The phone number associated with the shipping address. Only numbers; remove dashes, parenthesis and other characters. (maximum length 20)\n * @property {string} [shippingMethod] The 2-digit string indicating the name of the shipping method chosen for the transaction. (maximum length 50) Possible values:\n * - `01` Same Day\n * - `02` Overnight / Expedited\n * - `03` Priority (2-3 Days)\n * - `04` Ground\n * - `05` Electronic Delivery\n * - `06` Ship to Store\n * @property {string} [shippingMethodIndicator] The 2-digit string indicating the shipping method chosen for the transaction Possible values.\n * - `01` Ship to cardholder billing address\n * - `02` Ship to another verified address on file with merchant\n * - `03` Ship to address that is different from billing address\n * - `04` Ship to store (store address should be populated on request)\n * - `05` Digital goods\n * - `06` Travel and event tickets, not shipped\n * - `07` Other\n * @property {string} [productCode] The 3-letter string representing the merchant product code. Possible values:\n * - `AIR` Airline\n * - `GEN` General Retail\n * - `DIG` Digital Goods\n * - `SVC` Services\n * - `RES` Restaurant\n * - `TRA` Travel\n * - `DSP` Cash Dispensing\n * - `REN` Car Rental\n * - `GAS` Fuel\n * - `LUX` Luxury Retail\n * - `ACC` Accommodation Retail\n * - `TBD` Other\n * @property {string} [deliveryTimeframe] The 2-digit number indicating the delivery time frame. Possible values:\n * - `01` Electronic delivery\n * - `02` Same day shipping\n * - `03` Overnight shipping\n * - `04` Two or more day shipping\n * @property {string} [deliveryEmail] For electronic delivery, email address to which the merchandise was delivered. (maximum length 254)\n * @property {string} [reorderindicator] The 2-digit number indicating whether the cardholder is reordering previously purchased merchandise. possible values:\n * - `01` First time ordered\n * - `02` Reordered\n * @property {string} [preorderIndicator] The 2-digit number indicating whether cardholder is placing an order with a future availability or release date. possible values:\n * - `01` Merchandise available\n * - `02` Future availability\n * @property {string} [preorderDate] The 8-digit number (format: YYYYMMDD) indicating expected date that a pre-ordered purchase will be available.\n * @property {string} [giftCardAmount] The purchase amount total for prepaid gift cards in major units. (maximum length 15)\n * @property {string} [giftCardCurrencyCode] ISO 4217 currency code for the gift card purchased. (maximum length 3)\n * @property {string} [giftCardCount] Total count of individual prepaid gift cards purchased. (maximum length 2)\n * @property {string} [accountAgeIndicator] The 2-digit value representing the length of time cardholder has had account. Possible values:\n * - `01` No Account\n * - `02` Created during transaction\n * - `03` Less than 30 days\n * - `04` 30-60 days\n * - `05` More than 60 days\n * @property {string} [accountCreateDate] The 8-digit number (format: YYYYMMDD) indicating the date the cardholder opened the account.\n * @property {string} [accountChangeIndicator] The 2-digit value representing the length of time since the last change to the cardholder account. This includes shipping address, new payment account or new user added. Possible values:\n * - `01` Changed during transaction\n * - `02` Less than 30 days\n * - `03` 30-60 days\n * - `04` More than 60 days\n * @property {string} [accountChangeDate] The 8-digit number (format: YYYYMMDD) indicating the date the cardholder's account was last changed. This includes changes to the billing or shipping address, new payment accounts or new users added.\n * @property {string} [accountPwdChangeIndicator] The 2-digit value representing the length of time since the cardholder changed or reset the password on the account. Possible values:\n * - `01` No change\n * - `02` Changed during transaction\n * - `03` Less than 30 days\n * - `04` 30-60 days\n * - `05` More than 60 days\n * @property {string} [accountPwdChangeDate] The 8-digit number (format: YYYYMMDD) indicating the date the cardholder last changed or reset password on account.\n * @property {string} [shippingAddressUsageIndicator] The 2-digit value indicating when the shipping address used for transaction was first used. Possible values:\n * - `01` This transaction\n * - `02` Less than 30 days\n * - `03` 30-60 days\n * - `04` More than 60 days\n * @property {string} [shippingAddressUsageDate] The 8-digit number (format: YYYYMMDD) indicating the date when the shipping address used for this transaction was first used.\n * @property {string} [transactionCountDay] Number of transactions (successful or abandoned) for this cardholder account within the last 24 hours. (maximum length 3)\n * @property {string} [transactionCountYear] Number of transactions (successful or abandoned) for this cardholder account within the last year. (maximum length 3)\n * @property {string} [addCardAttempts] Number of add card attempts in the last 24 hours. (maximum length 3)\n * @property {string} [accountPurchases] Number of purchases with this cardholder account during the previous six months.\n * @property {string} [fraudActivity] The 2-digit value indicating whether the merchant experienced suspicious activity (including previous fraud) on the account. Possible values:\n * - `01` No suspicious activity\n * - `02` Suspicious activity observed\n * @property {string} [shippingNameIndicator] The 2-digit value indicating if the cardholder name on the account is identical to the shipping name used for the transaction. Possible values:\n * - `01` Account and shipping name identical\n * - `02` Account and shipping name differ\n * @property {string} [paymentAccountIndicator] The 2-digit value indicating the length of time that the payment account was enrolled in the merchant account. Possible values:\n * - `01` No account (guest checkout)\n * - `02` During the transaction\n * - `03` Less than 30 days\n * - `04` 30-60 days\n * - `05` More than 60 days\n * @property {string} [paymentAccountAge] The 8-digit number (format: YYYYMMDD) indicating the date the payment account was added to the cardholder account.\n * @property {string} [acsWindowSize] The 2-digit number to set the challenge window size to display to the end cardholder. The ACS will reply with content that is formatted appropriately to this window size to allow for the best user experience. The sizes are width x height in pixels of the window displayed in the cardholder browser window. Possible values:\n * - `01` 250x400\n * - `02` 390x400\n * - `03` 500x600\n * - `04` 600x400\n * - `05` Full page\n * @property {string} [sdkMaxTimeout] The 2-digit number of minutes (minimum 05) to set the maximum amount of time for all 3DS 2.0 messages to be communicated between all components.\n * @property {string} [addressMatch] The 1-character value (Y/N) indicating whether cardholder billing and shipping addresses match.\n * @property {string} [accountId] Additional cardholder account information. (maximum length 64)\n * @property {string} [ipAddress] The IP address of the consumer. IPv4 and IPv6 are supported.\n * - only one IP address supported\n * - only numbers, letters, period '.' chars, or colons ':' are acceptable\n * @property {string} [orderDescription] Brief description of items purchased. (maximum length 256)\n * @property {string} [taxAmount] Unformatted tax amount without any decimalization (ie. $123.67 = 12367). (maximum length 20)\n * @property {string} [userAgent] The exact content of the HTTP user agent header. (maximum length 500)\n * @property {string} [authenticationIndicator] The 2-digit number indicating the type of authentication request. Possible values:\n * - `01` Payment\n * - `02` Recurring transaction\n * - `03` Installment\n * - `04` Add card\n * - `05` Maintain card\n * - `06` Cardholder verification as part of EMV token ID&V\n * @property {string} [installment] An integer value greater than 1 indicating the maximum number of permitted authorizations for installment payments. (maximum length 3)\n * @property {string} [purchaseDate] The 14-digit number (format: YYYYMMDDHHMMSS) indicating the date in UTC of original purchase.\n * @property {string} [recurringEnd] The 8-digit number (format: YYYYMMDD) indicating the date after which no further recurring authorizations should be performed.\n * @property {string} [recurringFrequency] Integer value indicating the minimum number of days between recurring authorizations. A frequency of monthly is indicated by the value 28. Multiple of 28 days will be used to indicate months (ex. 6 months = 168). (maximum length 3)\n */\n\n/**\n * @name ThreeDSecure#on\n * @function\n * @param {string} event The name of the event to which you are subscribing.\n * @param {function} handler A callback to handle the event.\n * @description Subscribes a handler function to a named event. The following events are available:\n * * {@link ThreeDSecure#event:lookup-complete|lookup-complete}\n * * {@link ThreeDSecure#event:customer-canceled|customer-canceled}\n * * {@link ThreeDSecure#event:authentication-iframe-available|authentication-iframe-available}\n * * {@link ThreeDSecure#event:authentication-modal-render|authentication-modal-render}\n * * {@link ThreeDSecure#event:authentication-modal-close|authentication-modal-close}\n * @example\n * <caption>Listening to a 3D Secure event</caption>\n * braintree.threeDSecure.create({ ... }, function (createErr, threeDSecureInstance) {\n * threeDSecureInstance.on('lookup-complete', function (data, next) {\n * console.log('data from the lookup', data);\n * next();\n * });\n * threeDSecureInstance.on('customer-canceled', function () {\n * console.log('log that the customer canceled');\n * });\n * });\n * @returns {void}\n */\n\n/**\n * @name ThreeDSecure#off\n * @function\n * @param {string} event The name of the event to which you are unsubscribing.\n * @param {function} handler The callback for the event you are unsubscribing from.\n * @description Unsubscribes the handler function to a named event.\n * @example\n * <caption>Subscribing and then unsubscribing from a 3D Secure eld event</caption>\n * braintree.threeDSecure.create({ ... }, function (createErr, threeDSecureInstance) {\n * var lookupCallback = function (data, next) {\n * console.log(data);\n * next();\n * };\n * var cancelCallback = function () {\n * // log the cancelation\n * // or update UI\n * };\n *\n * threeDSecureInstance.on('lookup-complete', lookupCallback);\n * threeDSecureInstance.on('customer-canceled', cancelCallback);\n *\n * // later on\n * threeDSecureInstance.off('lookup-complete', lookupCallback);\n * threeDSecureInstance.off('customer-canceled', cancelCallback);\n * });\n * @returns {void}\n */\n\n/**\n * This event is emitted when the `2-inline-iframe` version is specified when creating the 3D Secure instance and the authentication iframe becomes available.\n * @event ThreeDSecure#authentication-iframe-available\n * @example\n * <caption>Listening for the authentication iframe to be available</caption>\n * threeDSecureInstance.on('authentication-iframe-available', function (event, next) {\n * document.body.appendChild(event.element); // add iframe element to page\n *\n * next(); // let the SDK know the iframe is ready\n * });\n * });\n */\n\n/**\n * This event is emitted when using the 3D Secure 2.0 flow and the initial lookup request completes. If this is not used, a `onLookupComplete` callback must be passed into the `verifyCard` method.\n * @event ThreeDSecure#lookup-complete\n * @example\n * <caption>Listening for when the lookup request is complete</caption>\n * braintree.threeDSecure.create({\n * client: clientInstance,\n * version: '2'\n * }, function (createErr, threeDSecureInstance) {\n * threeDSecureInstance.on('lookup-complete', function (data, next) {\n * // inspect the data\n *\n * // call next when ready to proceed with the challenge\n * next();\n * });\n * });\n */\n\n/**\n * This event is emitted when using the 3D Secure 2.0 flow and the customer cancels the 3D Secure challenge.\n * @event ThreeDSecure#customer-canceled\n * @example\n * <caption>Listening for when the customer cancels the 3D Secure challenge</caption>\n * braintree.threeDSecure.create({\n * client: clientInstance,\n * version: '2'\n * }, function (createErr, threeDSecureInstance) {\n * threeDSecureInstance.on('customer-canceled', function () {\n * // the customer canceled the 3D Secure challenge\n * });\n * });\n */\n\n/**\n * This event is emitted when using the 3D Secure 2.0 flow and the authentication modal closes, either because the authentication was completed or because the customer canceled the process.\n * @event ThreeDSecure#authentication-modal-close\n * @example\n * braintree.threeDSecure.create({\n * client: clientInstance,\n * version: '2'\n * }, function (createErr, threeDSecureInstance) {\n * threeDSecureInstance.on('authentication-modal-close', function () {\n * // the modal was closed\n * });\n * });\n */\n\n/**\n * This event is emitted when using the 3D Secure 2.0 flow and the authentication modal is rendered.\n * @event ThreeDSecure#authentication-modal-render\n * @example\n * braintree.threeDSecure.create({\n * client: clientInstance,\n * version: '2'\n * }, function (createErr, threeDSecureInstance) {\n * threeDSecureInstance.on('authentication-modal-render', function () {\n * // the modal was rendered, presenting the authentication form to the customer\n * });\n * });\n */\n\n/**\n * @class\n * @param {object} options 3D Secure {@link module:braintree-web/three-d-secure.create create} options\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/three-d-secure.create|braintree.threeDSecure.create} instead.</strong>\n * @classdesc This class represents a ThreeDSecure component produced by {@link module:braintree-web/three-d-secure.create|braintree.threeDSecure.create}. Instances of this class have a method for launching a 3D Secure authentication flow.\n *\n * If you use the Braintree SDK from within an iframe, you must not use the `sandbox` attribute on your iframe or the 3D Secure modal will not function correctly.\n *\n * **Note**: 3D Secure 2.0 is documented below and will become the default integration method in a future version of Braintree-web. Until then, version 1.0 will continue to be supported. To view 3D Secure 1.0 documentation, look at Braintree-web documentation from version [3.40.0](https://braintree.github.io/braintree-web/3.40.0/ThreeDSecure.html) and earlier, or upgrade your integration by referring to the [3D Secure 2.0 adoption guide](https://developer.paypal.com/braintree/docs/guides/3d-secure/migration/javascript/v3).\n */\nfunction ThreeDSecure(options) {\n var self = this;\n var Framework = FRAMEWORKS[options.framework];\n\n EventEmitter.call(this);\n\n this._framework = new Framework(options);\n this._framework.setUpEventListeners(function () {\n self._emit.apply(self, arguments);\n });\n}\n\nEventEmitter.createChild(ThreeDSecure);\n// NEXT_MAJOR_VERSION remove exemptionRequested entirely in favor of `requestedExemptionType`\n/**\n * Launch the 3D Secure login flow, returning a nonce payload.\n *\n * @public\n * @param {object} options Options for card verification.\n * @param {string} options.nonce The nonce representing the card from a tokenization payload. For example, this can be a {@link HostedFields~tokenizePayload|tokenizePayload} returned by Hosted Fields under `payload.nonce`.\n * @param {string} options.bin The numeric Bank Identification Number (bin) of the card from a tokenization payload. For example, this can be a {@link HostedFields~tokenizePayload|tokenizePayload} returned by Hosted Fields under `payload.details.bin`.\n * @param {string} options.amount The amount of the transaction in the current merchant account's currency. This must be expressed in numbers with an optional decimal (using `.`) and precision up to the hundredths place. For example, if you're processing a transaction for 1.234,56 \u20AC then `amount` should be `1234.56`.\n * @param {string} [options.accountType] The account type for the card (if known). Accepted values: `credit` or `debit`.\n * @param {boolean} [options.cardAddChallengeRequested] If set to `true`, a card-add challenge will be requested from the issuer. If set to `false`, a card-add challenge will not be requested. If the param is missing, a card-add challenge will only be requested for $0 amount. An authentication created using this flag should only be used for vaulting operations (creation of customers' credit cards or payment methods) and not for creating transactions.\n * @param {boolean} [options.cardAdd] *Deprecated:* Use `cardAddChallengeRequested` instead.\n * @param {boolean} [options.challengeRequested] If set to true, an authentication challenge will be forced if possible.\n * @param {boolean} [options.dataOnlyRequested] Indicates whether to use the data only flow. In this flow, frictionless 3DS is ensured for Mastercard cardholders as the card scheme provides a risk score for the issuer to determine whether to approve. If data only is not supported by the processor, a validation error will be raised. Non-Mastercard cardholders will fallback to a normal 3DS flow.\n * @param {boolean} [options.exemptionRequested] *Deprecated:* Use `requestedExemptionType` instead.\n * @param {boolean} [options.requestVisaDAF] Request to use VISA Digital Authentication Framework. If set to true, a Visa DAF authenticated payment credential will be created and/or used for authentication if the merchant is eligible.\n * @param {string} [options.merchantName] Allows to override the merchant name that is shown in the challenge.\n * @param {string} [options.requestedExemptionType] If an exemption is requested and the exemption's conditions are satisfied, then it will be applied. The following supported exemptions are defined as per PSD2 regulation: `low_value`, `transaction_risk_analysis`\n * @param {object} [options.customFields] Object where each key is the name of a custom field which has been configured in the Control Panel. In the Control Panel you can configure 3D Secure Rules which trigger on certain values.\n * @param {function} [options.onLookupComplete] *Deprecated:* Use {@link ThreeDSecure#event:lookup-complete|`threeDSecureInstance.on('lookup-complete')`} instead. Function to execute when lookup completes. The first argument, `data`, is a {@link ThreeDSecure~verificationData|verificationData} object, and the second argument, `next`, is a callback. `next` must be called to continue.\n * @param {string} [options.email] The email used for verification. (maximum length 255)\n * @param {string} [options.mobilePhoneNumber] The mobile phone number used for verification. Only numbers; remove dashes, parenthesis and other characters. (maximum length 25)\n * @param {object} [options.billingAddress] An {@link ThreeDSecure~billingAddress|billingAddress} object for verification.\n * @param {object} [options.additionalInformation] An {@link ThreeDSecure~additionalInformation|additionalInformation} object for verification.\n * @param {object} [options.collectDeviceData] If set to `true`, device data such as browser screen dimensions, language and time zone is submitted with lookup data.\n * @param {object} [options.customer] **Deprecated** Customer information for use in 3DS 1.0 verifications. Can contain any subset of a {@link ThreeDSecure~verifyCardCustomerObject|verifyCardCustomerObject}. Only to be used for 3DS 1.0 integrations.\n * @param {callback} options.addFrame **Deprecated** This {@link ThreeDSecure~addFrameCallback|addFrameCallback} will be called when the bank frame needs to be added to your page. Only to be used for 3DS 1.0 integrations.\n * @param {callback} options.removeFrame **Deprecated** For use in 3DS 1.0 Flows. This {@link ThreeDSecure~removeFrameCallback|removeFrameCallback} will be called when the bank frame needs to be removed from your page. Only to be used in 3DS 1.0 integrations.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link ThreeDSecure~verifyPayload|verifyPayload}. If no callback is provided, it will return a promise that resolves {@link ThreeDSecure~verifyPayload|verifyPayload}.\n\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * <caption>Verifying a payment method nonce with 3DS 2.0</caption>\n * var my3DSContainer;\n *\n * // set up listener after initialization\n * threeDSecure.on(('lookup-complete', function (data, next) {\n * // use `data` here, then call `next()`\n * next();\n * });\n *\n * // call verifyCard after tokenizing a card\n * threeDSecure.verifyCard({\n * amount: '123.45',\n * nonce: hostedFieldsTokenizationPayload.nonce,\n * bin: hostedFieldsTokenizationPayload.details.bin,\n * email: 'test@example.com'\n * billingAddress: {\n * givenName: 'Jill',\n * surname: 'Doe',\n * phoneNumber: '8101234567',\n * streetAddress: '555 Smith St.',\n * extendedAddress: '#5',\n * locality: 'Oakland',\n * region: 'CA',\n * postalCode: '12345',\n * countryCodeAlpha2: 'US'\n * },\n * additionalInformation: {\n * workPhoneNumber: '5555555555',\n * shippingGivenName: 'Jill',\n * shippingSurname: 'Doe',\n * shippingAddress: {\n * streetAddress: '555 Smith st',\n * extendedAddress: '#5',\n * locality: 'Oakland',\n * region: 'CA',\n * postalCode: '12345',\n * countryCodeAlpha2: 'US'\n * }\n * shippingPhone: '8101234567'\n * }\n * }, function (err, payload) {\n * if (err) {\n * console.error(err);\n * return;\n * }\n *\n * if (payload.liabilityShifted) {\n * // Liability has shifted\n * submitNonceToServer(payload.nonce);\n * } else if (payload.liabilityShiftPossible) {\n * // Liability may still be shifted\n * // Decide if you want to submit the nonce\n * } else {\n * // Liability has not shifted and will not shift\n * // Decide if you want to submit the nonce\n * }\n * });\n * @example\n * <caption>Verifying a payment method nonce with 3DS 2.0 with onLookupComplete callback</caption>\n * var my3DSContainer;\n *\n * threeDSecure.verifyCard({\n * amount: '123.45',\n * nonce: hostedFieldsTokenizationPayload.nonce,\n * bin: hostedFieldsTokenizationPayload.details.bin,\n * email: 'test@example.com'\n * billingAddress: {\n * givenName: 'Jill',\n * surname: 'Doe',\n * phoneNumber: '8101234567',\n * streetAddress: '555 Smith St.',\n * extendedAddress: '#5',\n * locality: 'Oakland',\n * region: 'CA',\n * postalCode: '12345',\n * countryCodeAlpha2: 'US'\n * },\n * additionalInformation: {\n * workPhoneNumber: '5555555555',\n * shippingGivenName: 'Jill',\n * shippingSurname: 'Doe',\n * shippingAddress: {\n * streetAddress: '555 Smith st',\n * extendedAddress: '#5',\n * locality: 'Oakland',\n * region: 'CA',\n * postalCode: '12345',\n * countryCodeAlpha2: 'US'\n * }\n * shippingPhone: '8101234567'\n * },\n * onLookupComplete: function (data, next) {\n * // use `data` here, then call `next()`\n * next();\n * }\n * }, function (err, payload) {\n * if (err) {\n * console.error(err);\n * return;\n * }\n *\n * if (payload.liabilityShifted) {\n * // Liability has shifted\n * submitNonceToServer(payload.nonce);\n * } else if (payload.liabilityShiftPossible) {\n * // Liability may still be shifted\n * // Decide if you want to submit the nonce\n * } else {\n * // Liability has not shifted and will not shift\n * // Decide if you want to submit the nonce\n * }\n * });\n * @example\n * <caption>Handling 3DS lookup errors</caption>\n * var my3DSContainer;\n *\n * // set up listener after initialization\n * threeDSecure.on(('lookup-complete', function (data, next) {\n * // use `data` here, then call `next()`\n * next();\n * });\n *\n * // call verifyCard after tokenizing a card\n * threeDSecure.verifyCard({\n * amount: '123.45',\n * nonce: hostedFieldsTokenizationPayload.nonce,\n * bin: hostedFieldsTokenizationPayload.details.bin,\n * email: 'test@example.com',\n * billingAddress: billingAddressFromCustomer,\n * additionalInformation: additionalInfoFromCustomer\n * }, function (err, payload) {\n * if (err) {\n * if (err.code.indexOf('THREEDS_LOOKUP') === 0) {\n * // an error occurred during the initial lookup request\n *\n * if (err.code === 'THREEDS_LOOKUP_TOKENIZED_CARD_NOT_FOUND_ERROR') {\n * // either the passed payment method nonce does not exist\n * // or it was already consumed before the lookup call was made\n * } else if (err.code.indexOf('THREEDS_LOOKUP_VALIDATION') === 0) {\n * // a validation error occurred\n * // likely some non-ascii characters were included in the billing\n * // address given name or surname fields, or the cardholdername field\n *\n * // Instruct your user to check their data and try again\n * } else {\n * // an unknown lookup error occurred\n * }\n * } else {\n * // some other kind of error\n * }\n * return;\n * }\n *\n * // handle success\n * });\n */\nThreeDSecure.prototype.verifyCard = function (options) {\n var privateOptions;\n\n if (this.hasListener(\"lookup-complete\")) {\n privateOptions = {\n ignoreOnLookupCompleteRequirement: true,\n };\n }\n\n return this._framework.verifyCard(options, privateOptions);\n};\n\n/* eslint-disable-next-line valid-jsdoc */\n/**\n * Launch the iframe challenge using a 3D Secure lookup response from a server side lookup.\n *\n * @public\n * @param {(object|string)} lookupResponse The lookup response from the server side call to lookup the 3D Secure information. The raw string or a parsed object can be passed.\n * @returns {Promise} Returns a promise.\n * @example\n * var my3DSContainer;\n *\n * threeDSecure.initializeChallengeWithLookupResponse(lookupResponseFromServer).then(function (payload) {\n * if (payload.liabilityShifted) {\n * // Liability has shifted\n * submitNonceToServer(payload.nonce);\n * } else if (payload.liabilityShiftPossible) {\n * // Liability may still be shifted\n * // Decide if you want to submit the nonce\n * } else {\n * // Liability has not shifted and will not shift\n * // Decide if you want to submit the nonce\n * }\n * });\n */\nThreeDSecure.prototype.initializeChallengeWithLookupResponse = function (\n lookupResponse\n) {\n if (typeof lookupResponse === \"string\") {\n lookupResponse = JSON.parse(lookupResponse);\n }\n\n return this._framework.initializeChallengeWithLookupResponse(lookupResponse);\n};\n\n/**\n * Gather the data needed for a 3D Secure lookup call.\n *\n * @public\n * @param {object} options Options for 3D Secure lookup.\n * @param {string} options.nonce The nonce representing the card from a tokenization payload. For example, this can be a {@link HostedFields~tokenizePayload|tokenizePayload} returned by Hosted Fields under `payload.nonce`.\n * @param {string} options.bin The numeric Bank Identification Number (bin) of the card from a tokenization payload. For example, this can be a {@link HostedFields~tokenizePayload|tokenizePayload} returned by Hosted Fields under `payload.details.bin`.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link ThreeDSecure~prepareLookupPayload|prepareLookupPayload}. If no callback is provided, it will return a promise that resolves {@link ThreeDSecure~prepareLookupPayload|prepareLookupPayload}.\n\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * <caption>Preparing data for a 3D Secure lookup</caption>\n * threeDSecure.prepareLookup({\n * nonce: hostedFieldsTokenizationPayload.nonce,\n * bin: hostedFieldsTokenizationPayload.details.bin\n * }, function (err, payload) {\n * if (err) {\n * console.error(err);\n * return;\n * }\n *\n * // send payload to server to do server side lookup\n * });\n */\nThreeDSecure.prototype.prepareLookup = function (options) {\n return this._framework.prepareLookup(options).then(function (data) {\n return JSON.stringify(data);\n });\n};\n\n/**\n * Cancel the 3DS flow and return the verification payload if available. If using 3D Secure version 2, this will not close the UI of the authentication modal. It is recommended that this method only be used in the {@link ThreeDSecure#event:lookup-complete|`lookup-complete`} event or the `onLookupComplete` callback.\n * @public\n * @param {callback} [callback] The second argument is a {@link ThreeDSecure~verifyPayload|verifyPayload}. If there is no verifyPayload (the initial lookup did not complete), an error will be returned. If no callback is passed, `cancelVerifyCard` will return a promise.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example <caption>Cancel the verification in `lookup-complete` event</caption>\n * // set up listener after instantiation\n * threeDSecure.on('lookup-complete', function (data, next) {\n * // determine if you want to call next to start the challenge,\n * // if not, call cancelVerifyCard\n * threeDSecure.cancelVerifyCard(function (err, verifyPayload) {\n * if (err) {\n * // Handle error\n * console.log(err.message); // No verification payload available\n * return;\n * }\n *\n * verifyPayload.nonce; // The nonce returned from the 3ds lookup call\n * verifyPayload.liabilityShifted; // boolean\n * verifyPayload.liabilityShiftPossible; // boolean\n * });\n * });\n *\n * // after tokenizing a credit card\n * threeDSecure.verifyCard({\n * amount: '100.00',\n * nonce: nonceFromTokenizationPayload,\n * bin: binFromTokenizationPayload\n * // other fields such as billing address\n * }, function (verifyError, payload) {\n * if (verifyError) {\n * if (verifyError.code === 'THREEDS_VERIFY_CARD_CANCELED_BY_MERCHANT ') {\n * // flow was canceled by merchant, 3ds info can be found in the payload\n * // for cancelVerifyCard\n * }\n * }\n * });\n * @example <caption>Cancel the verification in onLookupComplete callback</caption>\n * threeDSecure.verifyCard({\n * amount: '100.00',\n * nonce: nonceFromTokenizationPayload,\n * bin: binFromTokenizationPayload,\n * // other fields such as billing address\n * onLookupComplete: function (data, next) {\n * // determine if you want to call next to start the challenge,\n * // if not, call cancelVerifyCard\n * threeDSecure.cancelVerifyCard(function (err, verifyPayload) {\n * if (err) {\n * // Handle error\n * console.log(err.message); // No verification payload available\n * return;\n * }\n *\n * verifyPayload.nonce; // The nonce returned from the 3ds lookup call\n * verifyPayload.liabilityShifted; // boolean\n * verifyPayload.liabilityShiftPossible; // boolean\n * });\n * }\n * }, function (verifyError, payload) {\n * if (verifyError) {\n * if (verifyError.code === 'THREEDS_VERIFY_CARD_CANCELED_BY_MERCHANT ') {\n * // flow was canceled by merchant, 3ds info can be found in the payload\n * // for cancelVerifyCard\n * }\n * }\n * });\n * @example <caption>Cancel the verification in 3D Secure version 1</caption>\n * // unlike with v2, this will not cause `verifyCard` to error, it will simply\n * // never call the callback\n * threeDSecure.cancelVerifyCard(function (err, verifyPayload) {\n * if (err) {\n * // Handle error\n * console.log(err.message); // No verification payload available\n * return;\n * }\n *\n * verifyPayload.nonce; // The nonce returned from the 3ds lookup call\n * verifyPayload.liabilityShifted; // boolean\n * verifyPayload.liabilityShiftPossible; // boolean\n * });\n */\nThreeDSecure.prototype.cancelVerifyCard = function () {\n return this._framework.cancelVerifyCard();\n};\n\n/**\n * Cleanly remove anything set up by {@link module:braintree-web/three-d-secure.create|create}, with the exception that the Cardinal SDK, on window.Cardinal, will remain.\n * @public\n * @param {callback} [callback] Called on completion. If no callback is passed, `teardown` will return a promise.\n * @example\n * threeDSecure.teardown();\n * @example <caption>With callback</caption>\n * threeDSecure.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nThreeDSecure.prototype.teardown = function () {\n var methodNames = methods(ThreeDSecure.prototype).concat(\n methods(EventEmitter.prototype)\n );\n\n convertMethodsToError(this, methodNames);\n\n return this._framework.teardown();\n};\n\nmodule.exports = wrapPromise.wrapPrototype(ThreeDSecure);\n\n},{\"../../lib/convert-methods-to-error\":140,\"../../lib/methods\":168,\"./frameworks\":206,\"@braintree/event-emitter\":30,\"@braintree/wrap-promise\":40}],211:[function(_dereq_,module,exports){\n\"use strict\";\n/** @module braintree-web/three-d-secure */\n\nvar ThreeDSecure = _dereq_(\"./external/three-d-secure\");\nvar isHTTPS = _dereq_(\"../lib/is-https\").isHTTPS;\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar analytics = _dereq_(\"../lib/analytics\");\nvar errors = _dereq_(\"./shared/errors\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {object} [options.cardinalSDKConfig] A config for the underlying Cardinal SDK.\n * @param {object} [options.cardinalSDKConfig.logging] The logging configuration for the Cardinal SDK. See [Cardinal's documentation for the logging object](https://cardinaldocs.atlassian.net/wiki/spaces/CC/pages/1409568/Configurations#Configurations-Logging) for more information.\n * @param {number} [options.cardinalSDKConfig.timeout] The time in milliseconds to wait before a request to Cardinal's API times out. See [Cardinal's documentation for root level configuration](https://cardinaldocs.atlassian.net/wiki/spaces/CC/pages/1409568/Configurations#Configurations-RootLevelConfiguration) for more information.\n * @param {number} [options.cardinalSDKConfig.maxRequestRetries] How many times a request should be re-attempted to Cardinal's API before giving up as a failure. See [Cardinal's documentation for root level configuration](https://cardinaldocs.atlassian.net/wiki/spaces/CC/pages/1409568/Configurations#Configurations-RootLevelConfiguration) for more information.\n * @param {object} [options.cardinalSDKConfig.payment] An object to describe how you want the user interactions to behave. Only a subset of the [Cardinal SDK payment configuration object](https://cardinaldocs.atlassian.net/wiki/spaces/CC/pages/1409568/Configurations#Configurations-Payment) are supported: `displayLoading` and `displayExitButton`.\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {(number|string)} [options.version=1] The version of 3D Secure to use. Possible options:\n * * 1 - The legacy 3D Secure v1.0 integration.\n * * 2 - A 3D Secure v2.0 integration that uses a modal to host the 3D Secure iframe.\n * * 2-bootstrap3-modal - A 3D Secure v2.0 integration that uses a modal styled with Bootstrap 3 styles to host the 3D Secure iframe. Requires having the Bootstrap 3 script files and stylesheets on your page.\n * * 2-inline-iframe - A 3D Secure v2.0 integration that provides the authentication iframe directly to the merchant.\n * @param {callback} [callback] The second argument, `data`, is the {@link ThreeDSecure} instance. If no callback is provided, it returns a promise that resolves the {@link ThreeDSecure} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n@example\n * <caption>Creating a v2 3D Secure component using 2 version (Cardinal modal)</caption>\n * braintree.threeDSecure.create({\n * client: clientInstance,\n * version: '2'\n * }, function (createError, threeDSecure) {\n * // set up lookup-complete listener\n * threeDSecure.on('lookup-complete', function (data, next) {\n * // check lookup data\n *\n * next();\n * });\n *\n * // using Hosted Fields, use `tokenize` to get back a credit card nonce\n *\n * threeDSecure.verifyCard({\n * nonce: nonceFromTokenizationPayload,,\n * bin: binFromTokenizationPayload,\n * amount: '100.00'\n * }, function (verifyError, payload) {\n * // inspect payload\n * // send payload.nonce to your server\n * });\n * });\n * @example\n * <caption>Creating a v2 3D Secure component using 2-bootstrap3-modal version</caption>\n * // must have the boostrap js, css and jquery files on your page\n * braintree.threeDSecure.create({\n * client: clientInstance,\n * version: '2-bootstrap3-modal'\n * }, function (createError, threeDSecure) {\n * // set up lookup-complete listener\n * threeDSecure.on('lookup-complete', function (data, next) {\n * // check lookup data\n *\n * next();\n * });\n *\n * // using Hosted Fields, use `tokenize` to get back a credit card nonce\n *\n * // challenge will be presented in a bootstrap 3 modal\n * threeDSecure.verifyCard({\n * nonce: nonceFromTokenizationPayload,\n * bin: binFromTokenizationPayload,\n * amount: '100.00'\n * }, function (verifyError, payload) {\n * // inspect payload\n * // send payload.nonce to your server\n * });\n * });\n * @example\n * <caption>Creating a v2 3D Secure component using 2-inline-iframe version</caption>\n * braintree.threeDSecure.create({\n * client: clientInstance,\n * version: '2-inline-iframe'\n * }, function (createError, threeDSecure) {\n * // set up lookup-complete listener\n * threeDSecure.on('lookup-complete', function (data, next) {\n * // check lookup data\n *\n * next();\n * });\n * // set up iframe listener\n * threeDSecure.on('authentication-iframe-available', function (event, next) {\n * var element = event.element; // an html element that contains the iframe\n *\n * document.body.appendChild(element); // put it on your page\n *\n * next(); // let the sdk know the element has been added to the page\n * });\n *\n * // using Hosted Fields, use `tokenize` to get back a credit card nonce\n *\n * threeDSecure.verifyCard({\n * nonce: nonceFromTokenizationPayload,,\n * bin: binFromTokenizationPayload,\n * amount: '100.00'\n * }, function (verifyError, payload) {\n * // inspect payload\n * // send payload.nonce to your server\n * });\n * });\n */\nfunction create(options) {\n var name = \"3D Secure\";\n var framework = getFramework(options);\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n var assetsUrl = createAssetsUrl.create(options.authorization);\n var createPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: assetsUrl,\n name: name,\n })\n .then(function (client) {\n var error, isProduction;\n var config = client.getConfiguration();\n var gwConfig = config.gatewayConfiguration;\n\n options.client = client;\n\n if (!gwConfig.threeDSecureEnabled) {\n error = errors.THREEDS_NOT_ENABLED;\n }\n\n if (config.authorizationType === \"TOKENIZATION_KEY\") {\n error = errors.THREEDS_CAN_NOT_USE_TOKENIZATION_KEY;\n }\n\n isProduction = gwConfig.environment === \"production\";\n\n if (isProduction && !isHTTPS()) {\n error = errors.THREEDS_HTTPS_REQUIRED;\n }\n\n if (\n framework !== \"legacy\" &&\n !(\n gwConfig.threeDSecure &&\n gwConfig.threeDSecure.cardinalAuthenticationJWT\n )\n ) {\n analytics.sendEvent(\n options.client,\n \"three-d-secure.initialization.failed.missing-cardinalAuthenticationJWT\"\n );\n error = errors.THREEDS_NOT_ENABLED_FOR_V2;\n }\n\n if (error) {\n return Promise.reject(new BraintreeError(error));\n }\n\n analytics.sendEvent(options.client, \"three-d-secure.initialized\");\n\n return client;\n });\n var instance = new ThreeDSecure({\n client: options.client,\n assetsUrl: assetsUrl,\n createPromise: createPromise,\n loggingEnabled: options.loggingEnabled,\n cardinalSDKConfig: options.cardinalSDKConfig,\n framework: framework,\n });\n\n if (options.client) {\n return createPromise.then(function () {\n return instance;\n });\n }\n\n return instance;\n });\n}\n\nfunction getFramework(options) {\n var version = String(options.version || \"\");\n\n if (!version || version === \"1\") {\n throw new BraintreeError({\n code: errors.THREEDS_UNSUPPORTED_VERSION.code,\n type: errors.THREEDS_UNSUPPORTED_VERSION.type,\n message: errors.THREEDS_UNSUPPORTED_VERSION.message,\n });\n }\n\n switch (version) {\n case \"2\":\n case \"2-cardinal-modal\":\n return \"cardinal-modal\";\n case \"2-bootstrap3-modal\":\n return \"bootstrap3-modal\";\n case \"2-inline-iframe\":\n return \"inline-iframe\";\n default:\n throw new BraintreeError({\n code: errors.THREEDS_UNRECOGNIZED_VERSION.code,\n type: errors.THREEDS_UNRECOGNIZED_VERSION.type,\n message:\n \"Version `\" +\n options.version +\n \"` is not a recognized version. You may need to update the version of your Braintree SDK to support this version.\",\n });\n }\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/analytics\":132,\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"../lib/is-https\":165,\"./external/three-d-secure\":210,\"./shared/errors\":213,\"@braintree/wrap-promise\":40}],212:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n LANDING_FRAME_NAME: \"braintreethreedsecurelanding\",\n CARDINAL_SCRIPT_SOURCE: {\n production: \"https://songbird.cardinalcommerce.com/edge/v1/songbird.js\",\n sandbox: \"https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js\",\n },\n};\n\n},{}],213:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.3D Secure - Creation Error Codes\n * @description Errors that occur when [creating the 3D Secure component](./module-braintree-web_three-d-secure.html#.create).\n * @property {MERCHANT} THREEDS_NOT_ENABLED Occurs when 3D Secure is not enabled in the Braintree control panel.\n * @property {MERCHANT} THREEDS_CAN_NOT_USE_TOKENIZATION_KEY Occurs when 3D Secure component is created without a Client Token.\n * @property {MERCHANT} THREEDS_HTTPS_REQUIRED Occurs when 3D Secure component is created in production over HTTPS.\n * @property {MERCHANT} THREEDS_NOT_ENABLED_FOR_V2 Occurs when 3D Secure component is created with version 2 parameter, but merchant is not enabled to use version 2.\n * @property {MERCHANT} THREEDS_UNRECOGNIZED_VERSION Occurs when unrecognized version enum is passed into the create call.\n * @property {UNKNOWN} THREEDS_CARDINAL_SDK_SETUP_FAILED Occurs when Cardinal's Songbird.js library fails to setup for an unknown reason.\n * @property {NETWORK} THREEDS_CARDINAL_SDK_SCRIPT_LOAD_FAILED Occurs when using version 2 and Cardinal's Songbird.js script could not be loaded.\n * @property {UNKNOWN} THREEDS_CARDINAL_SDK_SETUP_TIMEDOUT Occurs when Cardinal's Songbird.js library takes longer than 60 seconds to set up.\n * @property {UNKNOWN} THREEDS_CARDINAL_SDK_RESPONSE_TIMEDOUT Occurs when Cardinal sends a response indicating a timeout on /Validate, /Confirm, or /Continue.\n * @property {MERCHANT} THREEDS_CARDINAL_SDK_BAD_CONFIG Occurs when there is no JWT in the request. Also when there's some other malformed aspect of config.\n * @property {MERCHANT} THREEDS_CARDINAL_SDK_BAD_JWT Occurs when a malformed config causes a either a missing response JWT or a malformed Cardinal response.\n * @property {UNKNOWN} THREEDS_CARDINAL_SDK_ERROR Occurs when a \"general error\" or a Cardinal hosted fields error happens. Description contains more details.\n * @property {CUSTOMER} THREEDS_CARDINAL_SDK_CANCELED Occurs when customer cancels the transaction mid-flow, usually with alt-pays that have their own cancel buttons.\n * @property {MERCHANT} THREEDS_UNSUPPORTED_VERSION Occurs when 3D Secure component is created with version 1 (or default version) parameter.\n */\n\n/**\n * @name BraintreeError.3D Secure - verifyCard Error Codes\n * @description Errors that occur when using the [`verifyCard` method](./ThreeDSecure.html#verifyCard).\n * @property {MERCHANT} THREEDS_AUTHENTICATION_IN_PROGRESS Occurs when another verification is already in progress.\n * @property {MERCHANT} THREEDS_MISSING_VERIFY_CARD_OPTION Occurs when a required option is missing.\n * @property {UNKNOWN} THREEDS_JWT_AUTHENTICATION_FAILED Occurs when something went wrong authenticating the JWT from the Cardinal SDK.\n * @property {MERCHANT} THREEDS_LOOKUP_TOKENIZED_CARD_NOT_FOUND_ERROR Occurs when the supplied payment method nonce does not exist or the payment method nonce has already been consumed.\n * @property {CUSTOMER} THREEDS_LOOKUP_VALIDATION_ERROR Occurs when a validation error occurs during the 3D Secure lookup.\n * @property {UNKNOWN} THREEDS_LOOKUP_ERROR An unknown error occurred while attempting the 3D Secure lookup.\n * @property {MERCHANT} THREEDS_VERIFY_CARD_CANCELED_BY_MERCHANT Occurs when the 3D Secure flow is canceled by the merchant using `cancelVerifyCard` (3D Secure v2 flows only).\n * @property {UNKNOWN} THREEDS_INLINE_IFRAME_DETAILS_INCORRECT An unknown error occurred while attempting to use the inline iframe framework.\n * @property {MERCHANT} THREEDS_REQUESTED_EXEMPTION_TYPE_INVALID Occurs when unrecognized exemption enum value is passed into verifyCard.\n */\n\n/**\n * @name BraintreeError.3D Secure - cancelVerifyCard Error Codes\n * @description Errors that occur when using the [`cancelVerifyCard` method](./ThreeDSecure.html#cancelVerifyCard).\n * @property {MERCHANT} THREEDS_NO_VERIFICATION_PAYLOAD Occurs when the 3D Secure flow is canceled, but there is no 3D Secure information available.\n */\n\n/**\n * @name BraintreeError.3D Secure - Internal Error Codes\n * @ignore\n * @description Errors that occur internally\n * @property {INTERNAL} THREEDS_TERM_URL_REQUIRES_BRAINTREE_DOMAIN Occurs when iframe is initialized on a non-verified domain.\n * @property {INTERNAL} THREEDS_FRAMEWORK_METHOD_NOT_IMPLEMENTED Occurs when a 3D Secure framework method is not implemented.\n */\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nmodule.exports = {\n THREEDS_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_NOT_ENABLED\",\n message: \"3D Secure is not enabled for this merchant.\",\n },\n THREEDS_CAN_NOT_USE_TOKENIZATION_KEY: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_CAN_NOT_USE_TOKENIZATION_KEY\",\n message: \"3D Secure can not use a tokenization key for authorization.\",\n },\n THREEDS_HTTPS_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_HTTPS_REQUIRED\",\n message: \"3D Secure requires HTTPS.\",\n },\n THREEDS_NOT_ENABLED_FOR_V2: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_NOT_ENABLED_FOR_V2\",\n message:\n \"3D Secure version 2 is not enabled for this merchant. Contact Braintree Support for assistance at https://help.braintreepayments.com/\",\n },\n THREEDS_UNRECOGNIZED_VERSION: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_UNRECOGNIZED_VERSION\",\n },\n THREEDS_CARDINAL_SDK_SETUP_FAILED: {\n type: BraintreeError.types.UNKNOWN,\n code: \"THREEDS_CARDINAL_SDK_SETUP_FAILED\",\n message: \"Something went wrong setting up Cardinal's Songbird.js library.\",\n },\n THREEDS_CARDINAL_SDK_SCRIPT_LOAD_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"THREEDS_CARDINAL_SDK_SCRIPT_LOAD_FAILED\",\n message: \"Cardinal's Songbird.js library could not be loaded.\",\n },\n THREEDS_CARDINAL_SDK_SETUP_TIMEDOUT: {\n type: BraintreeError.types.UNKNOWN,\n code: \"THREEDS_CARDINAL_SDK_SETUP_TIMEDOUT\",\n message: \"Cardinal's Songbird.js took too long to setup.\",\n },\n THREEDS_CARDINAL_SDK_RESPONSE_TIMEDOUT: {\n type: BraintreeError.types.UNKNOWN,\n code: \"THREEDS_CARDINAL_SDK_RESPONSE_TIMEDOUT\",\n message: \"Cardinal's API took too long to respond.\",\n },\n THREEDS_CARDINAL_SDK_BAD_CONFIG: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_CARDINAL_SDK_BAD_CONFIG\",\n message:\n \"JWT or other required field missing. Please check your setup configuration.\",\n },\n THREEDS_CARDINAL_SDK_BAD_JWT: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_CARDINAL_SDK_BAD_JWT\",\n message:\n \"Cardinal JWT missing or malformed. Please check your setup configuration.\",\n },\n THREEDS_CARDINAL_SDK_ERROR: {\n type: BraintreeError.types.UNKNOWN,\n code: \"THREEDS_CARDINAL_SDK_ERROR\",\n message:\n \"A general error has occurred with Cardinal. See description for more information.\",\n },\n THREEDS_CARDINAL_SDK_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"THREEDS_CARDINAL_SDK_CANCELED\",\n message: \"Canceled by user.\",\n },\n THREEDS_VERIFY_CARD_CANCELED_BY_MERCHANT: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_VERIFY_CARD_CANCELED_BY_MERCHANT\",\n message: \"3D Secure verfication canceled by merchant.\",\n },\n THREEDS_AUTHENTICATION_IN_PROGRESS: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_AUTHENTICATION_IN_PROGRESS\",\n message:\n \"Cannot call verifyCard while existing authentication is in progress.\",\n },\n THREEDS_MISSING_VERIFY_CARD_OPTION: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_MISSING_VERIFY_CARD_OPTION\",\n },\n THREEDS_JWT_AUTHENTICATION_FAILED: {\n type: BraintreeError.types.UNKNOWN,\n code: \"THREEDS_JWT_AUTHENTICATION_FAILED\",\n message: \"Something went wrong authenticating the JWT from Cardinal\",\n },\n THREEDS_LOOKUP_TOKENIZED_CARD_NOT_FOUND_ERROR: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_LOOKUP_TOKENIZED_CARD_NOT_FOUND_ERROR\",\n message:\n \"Either the payment method nonce passed to `verifyCard` does not exist, or it was already consumed\",\n },\n THREEDS_LOOKUP_VALIDATION_ERROR: {\n type: BraintreeError.types.CUSTOMER,\n code: \"THREEDS_LOOKUP_VALIDATION_ERROR\",\n message:\n \"The data passed in `verifyCard` did not pass validation checks. See details for more info\",\n },\n THREEDS_LOOKUP_ERROR: {\n type: BraintreeError.types.UNKNOWN,\n code: \"THREEDS_LOOKUP_ERROR\",\n message: \"Something went wrong during the 3D Secure lookup\",\n },\n THREEDS_INLINE_IFRAME_DETAILS_INCORRECT: {\n type: BraintreeError.types.UNKNOWN,\n code: \"THREEDS_INLINE_IFRAME_DETAILS_INCORRECT\",\n message:\n \"Something went wrong when attempting to add the authentication iframe to the page.\",\n },\n THREEDS_NO_VERIFICATION_PAYLOAD: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_NO_VERIFICATION_PAYLOAD\",\n message: \"No verification payload available.\",\n },\n THREEDS_TERM_URL_REQUIRES_BRAINTREE_DOMAIN: {\n type: BraintreeError.types.INTERNAL,\n code: \"THREEDS_TERM_URL_REQUIRES_BRAINTREE_DOMAIN\",\n message: \"Term Url must be on a Braintree domain.\",\n },\n THREEDS_FRAMEWORK_METHOD_NOT_IMPLEMENTED: {\n type: BraintreeError.types.INTERNAL,\n code: \"THREEDS_FRAMEWORK_METHOD_NOT_IMPLEMENTED\",\n message: \"Method not implemented for this framework.\",\n },\n THREEDS_REQUESTED_EXEMPTION_TYPE_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_REQUESTED_EXEMPTION_TYPE_INVALID\",\n message: \"Requested Exemption Type is invalid.\",\n },\n THREEDS_UNSUPPORTED_VERSION: {\n type: BraintreeError.types.MERCHANT,\n code: \"THREEDS_UNSUPPORTED_VERSION\",\n message:\n \"3D Secure `1` is deprecated and no longer supported. See available versions at https://braintree.github.io/braintree-web/current/module-braintree-web_three-d-secure.html#.create\",\n },\n};\n\n},{\"../../lib/braintree-error\":137}],214:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"../../lib/enumerate\");\n\nmodule.exports = enumerate([\"AUTHENTICATION_COMPLETE\"], \"threedsecure:\");\n\n},{\"../../lib/enumerate\":147}],215:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/unionpay\n * @description This module allows you to accept UnionPay payments. *It is currently in beta and is subject to change.*\n */\n\nvar UnionPay = _dereq_(\"./shared/unionpay\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar analytics = _dereq_(\"../lib/analytics\");\nvar errors = _dereq_(\"./shared/errors\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {callback} [callback] The second argument, `data`, is the {@link UnionPay} instance. If no callback is provided, `create` returns a promise that resolves with the {@link UnionPay} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * braintree.unionpay.create({ client: clientInstance }, function (createErr, unionpayInstance) {\n * if (createErr) {\n * console.error(createErr);\n * return;\n * }\n * // ...\n * });\n */\nfunction create(options) {\n var name = \"UnionPay\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n return createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n });\n })\n .then(function (client) {\n var config = client.getConfiguration();\n\n options.client = client;\n\n if (\n !config.gatewayConfiguration.unionPay ||\n config.gatewayConfiguration.unionPay.enabled !== true\n ) {\n return Promise.reject(new BraintreeError(errors.UNIONPAY_NOT_ENABLED));\n }\n\n analytics.sendEvent(options.client, \"unionpay.initialized\");\n\n return new UnionPay(options);\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/analytics\":132,\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./shared/errors\":217,\"./shared/unionpay\":218,\"@braintree/wrap-promise\":40}],216:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar enumerate = _dereq_(\"../../lib/enumerate\");\n\nmodule.exports = {\n events: enumerate(\n [\n \"HOSTED_FIELDS_FETCH_CAPABILITIES\",\n \"HOSTED_FIELDS_ENROLL\",\n \"HOSTED_FIELDS_TOKENIZE\",\n ],\n \"union-pay:\"\n ),\n HOSTED_FIELDS_FRAME_NAME: \"braintreeunionpayhostedfields\",\n};\n\n},{\"../../lib/enumerate\":147}],217:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Union Pay - Creation Error Codes\n * @description Errors that occur when [creating the Union Pay component](./module-braintree-web_union-pay.html#.create).\n * @property {MERCHANT} UNIONPAY_NOT_ENABLED Occurs when Union Pay is not enabled on the Braintree control panel.\n */\n\n/**\n * @name BraintreeError.Union Pay - Shared Error Codes\n * @description Errors that occur when starting the Union Pay Flow\n * @property {MERCHANT} UNIONPAY_CARD_AND_HOSTED_FIELDS_INSTANCES Occurs when a method is used with both card details and a Hosted Fields instance.\n * @property {MERCHANT} UNIONPAY_HOSTED_FIELDS_INSTANCE_INVALID Occurs when Hosted Fields instance used is not a valid Hosted Fields instance.\n * @property {MERCHANT} UNIONPAY_CARD_OR_HOSTED_FIELDS_INSTANCE_REQUIRED Occurs when neither card details or Hosted Fields are used.\n * @property {MERCHANT} UNIONPAY_HOSTED_FIELDS_INSTANCE_REQUIRED Occurs when Hosted Fields cannot be found on the page.\n */\n\n/**\n * @name BraintreeError.Union Pay - fetchCapabilities Error Codes\n * @description Errors that occur when using the [`fetchCapabilities` method](./UnionPay.html#fetchCapabilities).\n * @property {NETWORK} UNIONPAY_FETCH_CAPABILITIES_NETWORK_ERROR Occurs when there is an error looking up the Union Pay capabilities.\n */\n\n/**\n * @name BraintreeError.Union Pay - enroll Error Codes\n * @description Errors that occur when using the [`enroll` method](./UnionPay.html#enroll).\n * @property {MERCHANT} UNIONPAY_MISSING_MOBILE_PHONE_DATA Occurs when no mobile phone data is provided.\n * @property {MERCHANT} UNIONPAY_EXPIRATION_DATE_INCOMPLETE Occurs when expiration date is incomplete.\n * @property {CUSTOMER} UNIONPAY_ENROLLMENT_CUSTOMER_INPUT_INVALID Occurs when customer enrollment input is invalid.\n * @property {NETWORK} UNIONPAY_ENROLLMENT_NETWORK_ERROR Occurs when there is an error during enrollment.\n */\n\n/**\n * @name BraintreeError.Union Pay - tokenize Error Codes\n * @description Errors that occur when using the [`tokenize` method](./UnionPay.html#tokenize).\n * @property {CUSTOMER} UNIONPAY_FAILED_TOKENIZATION Occurs when data cannot be tokenized.\n * @property {NETWORK} UNIONPAY_TOKENIZATION_NETWORK_ERROR Occurs when the Braintree gateway cannot be reached.\n */\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nmodule.exports = {\n UNIONPAY_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"UNIONPAY_NOT_ENABLED\",\n message: \"UnionPay is not enabled for this merchant.\",\n },\n UNIONPAY_HOSTED_FIELDS_INSTANCE_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"UNIONPAY_HOSTED_FIELDS_INSTANCE_INVALID\",\n message:\n \"Found an invalid Hosted Fields instance. Please use a valid Hosted Fields instance.\",\n },\n UNIONPAY_HOSTED_FIELDS_INSTANCE_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"UNIONPAY_HOSTED_FIELDS_INSTANCE_REQUIRED\",\n message: \"Could not find the Hosted Fields instance.\",\n },\n UNIONPAY_CARD_OR_HOSTED_FIELDS_INSTANCE_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"UNIONPAY_CARD_OR_HOSTED_FIELDS_INSTANCE_REQUIRED\",\n message:\n \"A card or a Hosted Fields instance is required. Please supply a card or a Hosted Fields instance.\",\n },\n UNIONPAY_CARD_AND_HOSTED_FIELDS_INSTANCES: {\n type: BraintreeError.types.MERCHANT,\n code: \"UNIONPAY_CARD_AND_HOSTED_FIELDS_INSTANCES\",\n message:\n \"Please supply either a card or a Hosted Fields instance, not both.\",\n },\n UNIONPAY_EXPIRATION_DATE_INCOMPLETE: {\n type: BraintreeError.types.MERCHANT,\n code: \"UNIONPAY_EXPIRATION_DATE_INCOMPLETE\",\n message: \"You must supply expiration month and year or neither.\",\n },\n UNIONPAY_ENROLLMENT_CUSTOMER_INPUT_INVALID: {\n type: BraintreeError.types.CUSTOMER,\n code: \"UNIONPAY_ENROLLMENT_CUSTOMER_INPUT_INVALID\",\n message: \"Enrollment failed due to user input error.\",\n },\n UNIONPAY_ENROLLMENT_NETWORK_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"UNIONPAY_ENROLLMENT_NETWORK_ERROR\",\n message: \"Could not enroll UnionPay card.\",\n },\n UNIONPAY_FETCH_CAPABILITIES_NETWORK_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"UNIONPAY_FETCH_CAPABILITIES_NETWORK_ERROR\",\n message: \"Could not fetch card capabilities.\",\n },\n UNIONPAY_TOKENIZATION_NETWORK_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"UNIONPAY_TOKENIZATION_NETWORK_ERROR\",\n message: \"A tokenization network error occurred.\",\n },\n UNIONPAY_MISSING_MOBILE_PHONE_DATA: {\n type: BraintreeError.types.MERCHANT,\n code: \"UNIONPAY_MISSING_MOBILE_PHONE_DATA\",\n message: \"A `mobile` with `countryCode` and `number` is required.\",\n },\n UNIONPAY_FAILED_TOKENIZATION: {\n type: BraintreeError.types.CUSTOMER,\n code: \"UNIONPAY_FAILED_TOKENIZATION\",\n message: \"The supplied card data failed tokenization.\",\n },\n};\n\n},{\"../../lib/braintree-error\":137}],218:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar analytics = _dereq_(\"../../lib/analytics\");\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\nvar Bus = _dereq_(\"framebus\");\nvar constants = _dereq_(\"./constants\");\nvar isVerifiedDomain = _dereq_(\"../../lib/is-verified-domain\");\nvar useMin = _dereq_(\"../../lib/use-min\");\nvar convertMethodsToError = _dereq_(\"../../lib/convert-methods-to-error\");\nvar errors = _dereq_(\"./errors\");\nvar events = constants.events;\nvar iFramer = _dereq_(\"@braintree/iframer\");\nvar methods = _dereq_(\"../../lib/methods\");\nvar VERSION = \"3.103.0\";\nvar uuid = _dereq_(\"@braintree/uuid\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar BUS_CONFIGURATION_REQUEST_EVENT =\n _dereq_(\"../../lib/constants\").BUS_CONFIGURATION_REQUEST_EVENT;\n\n/**\n * @class\n * @param {object} options See {@link module:braintree-web/unionpay.create|unionpay.create}.\n * @description <strong>You cannot use this constructor directly. Use {@link module:braintree-web/unionpay.create|braintree-web.unionpay.create} instead.</strong>\n * @classdesc This class represents a UnionPay component. Instances of this class have methods for {@link UnionPay#fetchCapabilities fetching capabilities} of UnionPay cards, {@link UnionPay#enroll enrolling} a UnionPay card, and {@link UnionPay#tokenize tokenizing} a UnionPay card.\n */\nfunction UnionPay(options) {\n this._options = options;\n}\n\n/**\n * @typedef {object} UnionPay~fetchCapabilitiesPayload\n * @property {boolean} isUnionPay Determines if this card is a UnionPay card.\n * @property {boolean} isDebit Determines if this card is a debit card. This property is only present if `isUnionPay` is `true`.\n * @property {object} unionPay UnionPay specific properties. This property is only present if `isUnionPay` is `true`.\n * @property {boolean} unionPay.supportsTwoStepAuthAndCapture Determines if the card allows for an authorization, but settling the transaction later.\n * @property {boolean} unionPay.isSupported Determines if Braintree can process this UnionPay card. When false, Braintree cannot process this card and the user should use a different card.\n */\n\n/**\n * Fetches the capabilities of a card, including whether or not the SMS enrollment process is required.\n * @public\n * @param {object} options UnionPay {@link UnionPay#fetchCapabilities fetchCapabilities} options\n * @param {object} [options.card] The card from which to fetch capabilities. Note that this will only have one property, `number`. Required if you are not using the `hostedFields` option.\n * @param {string} options.card.number Card number.\n * @param {HostedFields} [options.hostedFields] The Hosted Fields instance used to collect card data. Required if you are not using the `card` option.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link UnionPay#fetchCapabilitiesPayload fetchCapabilitiesPayload}. If no callback is provided, `fetchCapabilities` returns a promise that resolves with a {@link UnionPay#fetchCapabilitiesPayload fetchCapabilitiesPayload}.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nUnionPay.prototype.fetchCapabilities = function (options) {\n var self = this;\n var client = this._options.client;\n var cardNumber = options.card ? options.card.number : null;\n var hostedFields = options.hostedFields;\n\n if (cardNumber && hostedFields) {\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_CARD_AND_HOSTED_FIELDS_INSTANCES)\n );\n } else if (cardNumber) {\n return client\n .request({\n method: \"get\",\n endpoint: \"payment_methods/credit_cards/capabilities\",\n data: {\n _meta: { source: \"unionpay\" },\n creditCard: {\n number: cardNumber,\n },\n },\n })\n .then(function (response) {\n analytics.sendEvent(client, \"unionpay.capabilities-received\");\n\n return response;\n })\n .catch(function (err) {\n var status = err.details && err.details.httpStatus;\n\n analytics.sendEvent(client, \"unionpay.capabilities-failed\");\n\n if (status === 403) {\n return Promise.reject(err);\n }\n\n return Promise.reject(\n new BraintreeError({\n type: errors.UNIONPAY_FETCH_CAPABILITIES_NETWORK_ERROR.type,\n code: errors.UNIONPAY_FETCH_CAPABILITIES_NETWORK_ERROR.code,\n message: errors.UNIONPAY_FETCH_CAPABILITIES_NETWORK_ERROR.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n } else if (hostedFields) {\n if (!hostedFields._bus) {\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_HOSTED_FIELDS_INSTANCE_INVALID)\n );\n }\n\n return self._initializeHostedFields().then(function () {\n return new Promise(function (resolve, reject) {\n self._bus.emit(\n events.HOSTED_FIELDS_FETCH_CAPABILITIES,\n { hostedFields: hostedFields },\n function (response) {\n if (response.err) {\n reject(new BraintreeError(response.err));\n\n return;\n }\n\n resolve(response.payload);\n }\n );\n });\n });\n }\n\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_CARD_OR_HOSTED_FIELDS_INSTANCE_REQUIRED)\n );\n};\n\n/**\n * @typedef {object} UnionPay~enrollPayload\n * @property {string} enrollmentId UnionPay enrollment ID. This value should be passed to `tokenize`.\n * @property {boolean} smsCodeRequired UnionPay `smsCodeRequired` flag.\n * </p><b>true</b> - the user will receive an SMS code that needs to be supplied for tokenization.\n * </p><b>false</b> - the card can be immediately tokenized.\n */\n\n/**\n * Enrolls a UnionPay card. Use {@link UnionPay#fetchCapabilities|fetchCapabilities} to determine if the SMS enrollment process is required.\n * @public\n * @param {object} options UnionPay enrollment options:\n * @param {object} [options.card] The card to enroll. Required if you are not using the `hostedFields` option.\n * @param {string} options.card.number The card number.\n * @param {string} [options.card.expirationDate] The card's expiration date. May be in the form `MM/YY` or `MM/YYYY`. When defined `expirationMonth` and `expirationYear` are ignored.\n * @param {string} [options.card.expirationMonth] The card's expiration month. This should be used with the `expirationYear` parameter. When `expirationDate` is defined this parameter is ignored.\n * @param {string} [options.card.expirationYear] The card's expiration year. This should be used with the `expirationMonth` parameter. When `expirationDate` is defined this parameter is ignored.\n * @param {HostedFields} [options.hostedFields] The Hosted Fields instance used to collect card data. Required if you are not using the `card` option.\n * @param {object} options.mobile The mobile information collected from the customer.\n * @param {string} options.mobile.countryCode The country code of the customer's mobile phone number.\n * @param {string} options.mobile.number The customer's mobile phone number.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link UnionPay~enrollPayload|enrollPayload}. If no callback is provided, `enroll` returns a promise that resolves with {@link UnionPay~enrollPayload|enrollPayload}.\n * @returns {void}\n */\nUnionPay.prototype.enroll = function (options) {\n var self = this;\n var client = this._options.client;\n var card = options.card;\n var mobile = options.mobile;\n var hostedFields = options.hostedFields;\n var data;\n\n if (!mobile) {\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_MISSING_MOBILE_PHONE_DATA)\n );\n }\n\n if (hostedFields) {\n if (!hostedFields._bus) {\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_HOSTED_FIELDS_INSTANCE_INVALID)\n );\n } else if (card) {\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_CARD_AND_HOSTED_FIELDS_INSTANCES)\n );\n }\n\n return new Promise(function (resolve, reject) {\n self._initializeHostedFields().then(function () {\n self._bus.emit(\n events.HOSTED_FIELDS_ENROLL,\n { hostedFields: hostedFields, mobile: mobile },\n function (response) {\n if (response.err) {\n reject(new BraintreeError(response.err));\n\n return;\n }\n\n resolve(response.payload);\n }\n );\n });\n });\n } else if (card && card.number) {\n data = {\n _meta: { source: \"unionpay\" },\n unionPayEnrollment: {\n number: card.number,\n mobileCountryCode: mobile.countryCode,\n mobileNumber: mobile.number,\n },\n };\n\n if (card.expirationDate) {\n data.unionPayEnrollment.expirationDate = card.expirationDate;\n } else if (card.expirationMonth || card.expirationYear) {\n if (card.expirationMonth && card.expirationYear) {\n data.unionPayEnrollment.expirationYear = card.expirationYear;\n data.unionPayEnrollment.expirationMonth = card.expirationMonth;\n } else {\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_EXPIRATION_DATE_INCOMPLETE)\n );\n }\n }\n\n return client\n .request({\n method: \"post\",\n endpoint: \"union_pay_enrollments\",\n data: data,\n })\n .then(function (response) {\n analytics.sendEvent(client, \"unionpay.enrollment-succeeded\");\n\n return {\n enrollmentId: response.unionPayEnrollmentId,\n smsCodeRequired: response.smsCodeRequired,\n };\n })\n .catch(function (err) {\n var error;\n var status = err.details && err.details.httpStatus;\n\n if (status === 403) {\n error = err;\n } else if (status < 500) {\n error = new BraintreeError(\n errors.UNIONPAY_ENROLLMENT_CUSTOMER_INPUT_INVALID\n );\n error.details = { originalError: err };\n } else {\n error = new BraintreeError(errors.UNIONPAY_ENROLLMENT_NETWORK_ERROR);\n error.details = { originalError: err };\n }\n\n analytics.sendEvent(client, \"unionpay.enrollment-failed\");\n\n return Promise.reject(error);\n });\n }\n\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_CARD_OR_HOSTED_FIELDS_INSTANCE_REQUIRED)\n );\n};\n\n/**\n * @typedef {object} UnionPay~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {string} type Always <code>CreditCard</code>.\n * @property {object} details Additional account details:\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {string} description A human-readable description.\n */\n\n/**\n * Tokenizes a UnionPay card and returns a nonce payload.\n * @public\n * @param {object} options UnionPay tokenization options:\n * @param {object} [options.card] The card to enroll. Required if you are not using the `hostedFields` option.\n * @param {string} options.card.number The card number.\n * @param {string} [options.card.expirationDate] The card's expiration date. May be in the form `MM/YY` or `MM/YYYY`. When defined `expirationMonth` and `expirationYear` are ignored.\n * @param {string} [options.card.expirationMonth] The card's expiration month. This should be used with the `expirationYear` parameter. When `expirationDate` is defined this parameter is ignored.\n * @param {string} [options.card.expirationYear] The card's expiration year. This should be used with the `expirationMonth` parameter. When `expirationDate` is defined this parameter is ignored.\n * @param {string} [options.card.cvv] The card's security number.\n * @param {HostedFields} [options.hostedFields] The Hosted Fields instance used to collect card data. Required if you are not using the `card` option.\n * @param {string} options.enrollmentId The enrollment ID from {@link UnionPay#enroll}.\n * @param {string} [options.smsCode] The SMS code received from the user if {@link UnionPay#enroll} payload have `smsCodeRequired`. if `smsCodeRequired` is false, smsCode should not be passed.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link UnionPay~tokenizePayload|tokenizePayload}. If no callback is provided, `tokenize` returns a promise that resolves with a {@link UnionPay~tokenizePayload|tokenizePayload}.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nUnionPay.prototype.tokenize = function (options) {\n var data;\n var self = this;\n var client = this._options.client;\n var card = options.card;\n var hostedFields = options.hostedFields;\n\n if (card && hostedFields) {\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_CARD_AND_HOSTED_FIELDS_INSTANCES)\n );\n } else if (card) {\n data = {\n _meta: { source: \"unionpay\" },\n creditCard: {\n number: options.card.number,\n options: {\n unionPayEnrollment: {\n id: options.enrollmentId,\n },\n },\n },\n };\n\n if (options.smsCode) {\n data.creditCard.options.unionPayEnrollment.smsCode = options.smsCode;\n }\n\n if (card.expirationDate) {\n data.creditCard.expirationDate = card.expirationDate;\n } else if (card.expirationMonth && card.expirationYear) {\n data.creditCard.expirationYear = card.expirationYear;\n data.creditCard.expirationMonth = card.expirationMonth;\n }\n\n if (options.card.cvv) {\n data.creditCard.cvv = options.card.cvv;\n }\n\n return client\n .request({\n method: \"post\",\n endpoint: \"payment_methods/credit_cards\",\n data: data,\n })\n .then(function (response) {\n var tokenizedCard = response.creditCards[0];\n\n delete tokenizedCard.consumed;\n delete tokenizedCard.threeDSecureInfo;\n\n analytics.sendEvent(client, \"unionpay.nonce-received\");\n\n return tokenizedCard;\n })\n .catch(function (err) {\n var error;\n var status = err.details && err.details.httpStatus;\n\n analytics.sendEvent(client, \"unionpay.nonce-failed\");\n\n if (status === 403) {\n error = err;\n } else if (status < 500) {\n error = new BraintreeError(errors.UNIONPAY_FAILED_TOKENIZATION);\n error.details = { originalError: err };\n } else {\n error = new BraintreeError(\n errors.UNIONPAY_TOKENIZATION_NETWORK_ERROR\n );\n error.details = { originalError: err };\n }\n\n return Promise.reject(error);\n });\n } else if (hostedFields) {\n if (!hostedFields._bus) {\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_HOSTED_FIELDS_INSTANCE_INVALID)\n );\n }\n\n return new Promise(function (resolve, reject) {\n self._initializeHostedFields().then(function () {\n self._bus.emit(\n events.HOSTED_FIELDS_TOKENIZE,\n options,\n function (response) {\n if (response.err) {\n reject(new BraintreeError(response.err));\n\n return;\n }\n\n resolve(response.payload);\n }\n );\n });\n });\n }\n\n return Promise.reject(\n new BraintreeError(errors.UNIONPAY_CARD_OR_HOSTED_FIELDS_INSTANCE_REQUIRED)\n );\n};\n\n/**\n * Cleanly remove anything set up by {@link module:braintree-web/unionpay.create|create}. This only needs to be called when using UnionPay with Hosted Fields.\n * @public\n * @param {callback} [callback] Called on completion. If no callback is provided, returns a promise.\n * @example\n * unionpayInstance.teardown();\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nUnionPay.prototype.teardown = function () {\n if (this._bus) {\n this._hostedFieldsFrame.parentNode.removeChild(this._hostedFieldsFrame);\n this._bus.teardown();\n }\n\n convertMethodsToError(this, methods(UnionPay.prototype));\n\n return Promise.resolve();\n};\n\nUnionPay.prototype._initializeHostedFields = function () {\n var assetsUrl, isDebug;\n var componentId = uuid();\n var self = this;\n\n if (this._hostedFieldsInitializePromise) {\n return this._hostedFieldsInitializePromise;\n }\n\n this._hostedFieldsInitializePromise = new Promise(function (resolve) {\n assetsUrl =\n self._options.client.getConfiguration().gatewayConfiguration.assetsUrl;\n isDebug = self._options.client.getConfiguration().isDebug;\n\n self._bus = new Bus({\n channel: componentId,\n verifyDomain: isVerifiedDomain,\n });\n self._hostedFieldsFrame = iFramer({\n name: constants.HOSTED_FIELDS_FRAME_NAME + \"_\" + componentId,\n src:\n assetsUrl +\n \"/web/\" +\n VERSION +\n \"/html/unionpay-hosted-fields-frame\" +\n useMin(isDebug) +\n \".html\",\n height: 0,\n width: 0,\n });\n\n self._bus.on(BUS_CONFIGURATION_REQUEST_EVENT, function (reply) {\n reply(self._options.client);\n\n resolve();\n });\n\n document.body.appendChild(self._hostedFieldsFrame);\n });\n\n return this._hostedFieldsInitializePromise;\n};\n\nmodule.exports = wrapPromise.wrapPrototype(UnionPay);\n\n},{\"../../lib/analytics\":132,\"../../lib/braintree-error\":137,\"../../lib/constants\":139,\"../../lib/convert-methods-to-error\":140,\"../../lib/is-verified-domain\":166,\"../../lib/methods\":168,\"../../lib/use-min\":173,\"./constants\":216,\"./errors\":217,\"@braintree/iframer\":32,\"@braintree/uuid\":36,\"@braintree/wrap-promise\":40,\"framebus\":49}],219:[function(_dereq_,module,exports){\n\"use strict\";\n\nmodule.exports = {\n PLAID_LINK_JS: \"https://cdn.plaid.com/link/v2/stable/link-initialize.js\",\n};\n\n},{}],220:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Us Bank Account - Creation Error Codes\n * @description Errors that occur when [creating the Us Bank Account component](./module-braintree-web_us-bank-account.html#.create).\n * @property {MERCHANT} US_BANK_ACCOUNT_NOT_ENABLED Occurs when US Bank Account is not enabled in the Braintree control panel.\n */\n\n/**\n * @name BraintreeError.Us Bank Account - tokenize Error Codes\n * @description Errors that occur when using the [`tokenize` method](./UsBankAccount.html#tokenize).\n * @property {MERCHANT} US_BANK_ACCOUNT_OPTION_REQUIRED Occurs when a required option is not passed.\n * @property {MERCHANT} US_BANK_ACCOUNT_MUTUALLY_EXCLUSIVE_OPTIONS Occurs when 1 or more incompatible options are passed.\n * @property {NETWORK} US_BANK_ACCOUNT_LOGIN_LOAD_FAILED Occurs when bank login flow fails.\n * @property {CUSTOMER} US_BANK_ACCOUNT_LOGIN_CLOSED Occurs when bank login window is closed.\n * @property {MERCHANT} US_BANK_ACCOUNT_LOGIN_REQUEST_ACTIVE Occurs when a bank login flow is already active.\n * @property {NETWORK} US_BANK_ACCOUNT_TOKENIZATION_NETWORK_ERROR Occurs when payment details could not be tokenized.\n * @property {CUSTOMER} US_BANK_ACCOUNT_FAILED_TOKENIZATION Occurs when payment details failed to be tokenized.\n * @property {MERCHANT} US_BANK_ACCOUNT_BANK_LOGIN_NOT_ENABLED Occurs when bank login flow is not enabled in the Braintree control panel.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n US_BANK_ACCOUNT_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"US_BANK_ACCOUNT_OPTION_REQUIRED\",\n },\n US_BANK_ACCOUNT_MUTUALLY_EXCLUSIVE_OPTIONS: {\n type: BraintreeError.types.MERCHANT,\n code: \"US_BANK_ACCOUNT_MUTUALLY_EXCLUSIVE_OPTIONS\",\n },\n US_BANK_ACCOUNT_LOGIN_LOAD_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"US_BANK_ACCOUNT_LOGIN_LOAD_FAILED\",\n message: \"Bank login flow failed to load.\",\n },\n US_BANK_ACCOUNT_LOGIN_CLOSED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"US_BANK_ACCOUNT_LOGIN_CLOSED\",\n message: \"Customer closed bank login flow before authorizing.\",\n },\n US_BANK_ACCOUNT_LOGIN_REQUEST_ACTIVE: {\n type: BraintreeError.types.MERCHANT,\n code: \"US_BANK_ACCOUNT_LOGIN_REQUEST_ACTIVE\",\n message: \"Another bank login tokenization request is active.\",\n },\n US_BANK_ACCOUNT_TOKENIZATION_NETWORK_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"US_BANK_ACCOUNT_TOKENIZATION_NETWORK_ERROR\",\n message: \"A tokenization network error occurred.\",\n },\n US_BANK_ACCOUNT_FAILED_TOKENIZATION: {\n type: BraintreeError.types.CUSTOMER,\n code: \"US_BANK_ACCOUNT_FAILED_TOKENIZATION\",\n message: \"The supplied data failed tokenization.\",\n },\n US_BANK_ACCOUNT_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"US_BANK_ACCOUNT_NOT_ENABLED\",\n message: \"US bank account is not enabled.\",\n },\n US_BANK_ACCOUNT_BANK_LOGIN_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"US_BANK_ACCOUNT_BANK_LOGIN_NOT_ENABLED\",\n message: \"Bank login is not enabled.\",\n },\n};\n\n},{\"../lib/braintree-error\":137}],221:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/us-bank-account\n * @description This module is for accepting payments of US bank accounts.\n */\n\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar errors = _dereq_(\"./errors\");\nvar USBankAccount = _dereq_(\"./us-bank-account\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {callback} [callback] The second argument, `data`, is the {@link USBankAccount} instance. If no callback is provided, `create` returns a promise that resolves with the {@link USBankAccount} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"US Bank Account\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n return createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n });\n })\n .then(function (client) {\n var usBankAccount;\n\n options.client = client;\n\n usBankAccount =\n options.client.getConfiguration().gatewayConfiguration.usBankAccount;\n if (!usBankAccount) {\n return Promise.reject(\n new BraintreeError(errors.US_BANK_ACCOUNT_NOT_ENABLED)\n );\n }\n\n return new USBankAccount(options);\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./errors\":220,\"./us-bank-account\":222,\"@braintree/wrap-promise\":40}],222:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar constants = _dereq_(\"./constants\");\nvar errors = _dereq_(\"./errors\");\nvar sharedErrors = _dereq_(\"../lib/errors\");\nvar analytics = _dereq_(\"../lib/analytics\");\nvar once = _dereq_(\"../lib/once\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar methods = _dereq_(\"../lib/methods\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\nvar TOKENIZE_BANK_DETAILS_MUTATION = createGraphQLMutation(\"UsBankAccount\");\nvar TOKENIZE_BANK_LOGIN_MUTATION = createGraphQLMutation(\"UsBankLogin\");\n\n/**\n * @typedef {object} USBankAccount~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {string} type The payment method type, always `us_bank_account`.\n * @property {object} details Additional account details. Currently empty.\n */\n\n/**\n * @class\n * @param {object} options See {@link module:braintree-web/us-bank-account.create|us-bank-account.create}.\n * @classdesc This class represents a US Bank Account component. Instances of this class can tokenize raw bank details or present a bank login. <strong>You cannot use this constructor directly. Use {@link module:braintree-web/us-bank-account.create|braintree.us-bank-account.create} instead.</strong>\n */\nfunction USBankAccount(options) {\n this._client = options.client;\n\n this._isTokenizingBankLogin = false;\n\n analytics.sendEvent(this._client, \"usbankaccount.initialized\");\n}\n\n/**\n * Tokenizes bank information to return a payment method nonce. You can tokenize bank details by providing information like account and routing numbers. You can also tokenize with a bank login UI that prompts the customer to log into their bank account.\n * @public\n * @param {object} options All tokenization options for the US Bank Account component.\n * @param {string} options.mandateText A string for proof of customer authorization. For example, `'I authorize Braintree to debit my bank account on behalf of My Online Store.'`.\n * @param {object} [options.bankDetails] Bank detail information (such as account and routing numbers). `bankDetails` or `bankLogin` option must be provided.\n * @param {string} options.bankDetails.routingNumber The customer's bank routing number, such as `'307075259'`.\n * @param {string} options.bankDetails.accountNumber The customer's bank account number, such as `'999999999'`.\n * @param {string} options.bankDetails.accountType The customer's bank account type. Must be `'checking'` or `'savings'`.\n * @param {string} options.bankDetails.ownershipType The customer's bank account ownership type. Must be `'personal'` or `'business'`.\n * @param {string} [options.bankDetails.firstName] The customer's first name. Required when account ownership type is `personal`.\n * @param {string} [options.bankDetails.lastName] The customer's last name. Required when account ownership type is `personal`.\n * @param {string} [options.bankDetails.businessName] The customer's business name. Required when account ownership type is `business`.\n * @param {object} options.bankDetails.billingAddress The customer's billing address.\n * @param {string} options.bankDetails.billingAddress.streetAddress The street address for the customer's billing address, such as `'123 Fake St'`.\n * @param {string} [options.bankDetails.billingAddress.extendedAddress] The extended street address for the customer's billing address, such as `'Apartment B'`.\n * @param {string} options.bankDetails.billingAddress.locality The locality for the customer's billing address. This is typically a city, such as `'San Francisco'`.\n * @param {string} options.bankDetails.billingAddress.region The region for the customer's billing address. This is typically a state, such as `'CA'`.\n * @param {string} options.bankDetails.billingAddress.postalCode The postal code for the customer's billing address. This is typically a ZIP code, such as `'94119'`.\n * @param {object} [options.bankLogin] Bank login information. `bankLogin` or `bankDetails` option must be provided.\n * @param {string} options.bankLogin.displayName Display name for the bank login UI, such as `'My Store'`.\n * @param {string} options.bankLogin.ownershipType The customer's bank account ownership type. Must be `'personal'` or `'business'`.\n * @param {string} [options.bankLogin.firstName] The customer's first name. Required when account ownership type is `personal`.\n * @param {string} [options.bankLogin.lastName] The customer's last name. Required when account ownership type is `personal`.\n * @param {string} [options.bankLogin.businessName] The customer's business name. Required when account ownership type is `business`.\n * @param {object} options.bankLogin.billingAddress The customer's billing address.\n * @param {string} options.bankLogin.billingAddress.streetAddress The street address for the customer's billing address, such as `'123 Fake St'`.\n * @param {string} [options.bankLogin.billingAddress.extendedAddress] The extended street address for the customer's billing address, such as `'Apartment B'`.\n * @param {string} options.bankLogin.billingAddress.locality The locality for the customer's billing address. This is typically a city, such as `'San Francisco'`.\n * @param {string} options.bankLogin.billingAddress.region The region for the customer's billing address. This is typically a state, such as `'CA'`.\n * @param {string} options.bankLogin.billingAddress.postalCode The postal code for the customer's billing address. This is typically a ZIP code, such as `'94119'`.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link USBankAccount~tokenizePayload|tokenizePayload}. If no callback is provided, `tokenize` returns a promise that resolves with {@link USBankAccount~tokenizePayload|tokenizePayload}.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * <caption>Tokenizing raw bank details</caption>\n * var routingNumberInput = document.querySelector('input[name=\"routing-number\"]');\n * var accountNumberInput = document.querySelector('input[name=\"account-number\"]');\n * var accountTypeInput = document.querySelector('input[name=\"account-type\"]:checked');\n * var ownershipTypeInput = document.querySelector('input[name=\"ownership-type\"]:checked');\n * var firstNameInput = document.querySelector('input[name=\"first-name\"]');\n * var lastNameInput = document.querySelector('input[name=\"last-name\"]');\n * var businessNameInput = document.querySelector('input[name=\"business-name\"]');\n * var billingAddressStreetInput = document.querySelector('input[name=\"street-address\"]');\n * var billingAddressExtendedInput = document.querySelector('input[name=\"extended-address\"]');\n * var billingAddressLocalityInput = document.querySelector('input[name=\"locality\"]');\n * var billingAddressRegionSelect = document.querySelector('select[name=\"region\"]');\n * var billingAddressPostalInput = document.querySelector('input[name=\"postal-code\"]');\n *\n * submitButton.addEventListener('click', function (event) {\n * var bankDetails = {\n * routingNumber: routingNumberInput.value,\n * accountNumber: accountNumberInput.value,\n * accountType: accountTypeInput.value,\n * ownershipType: ownershipTypeInput.value,\n * billingAddress: {\n * streetAddress: billingAddressStreetInput.value,\n * extendedAddress: billingAddressExtendedInput.value,\n * locality: billingAddressLocalityInput.value,\n * region: billingAddressRegionSelect.value,\n * postalCode: billingAddressPostalInput.value\n * }\n * };\n *\n * if (bankDetails.ownershipType === 'personal') {\n * bankDetails.firstName = firstNameInput.value;\n * bankDetails.lastName = lastNameInput.value;\n * } else {\n * bankDetails.businessName = businessNameInput.value;\n * }\n *\n * event.preventDefault();\n *\n * usBankAccountInstance.tokenize({\n * bankDetails: bankDetails,\n * mandateText: 'I authorize Braintree to debit my bank account on behalf of My Online Store.'\n * }, function (tokenizeErr, tokenizedPayload) {\n * if (tokenizeErr) {\n * console.error('There was an error tokenizing the bank details.');\n * return;\n * }\n *\n * // Send tokenizePayload.nonce to your server here!\n * });\n * });\n * @example\n * <caption>Tokenizing with bank login UI</caption>\n * var ownershipTypeInput = document.querySelector('input[name=\"ownership-type\"]:checked');\n * var firstNameInput = document.querySelector('input[name=\"first-name\"]');\n * var lastNameInput = document.querySelector('input[name=\"last-name\"]');\n * var businessNameInput = document.querySelector('input[name=\"business-name\"]');\n * var billingAddressStreetInput = document.querySelector('input[name=\"street-address\"]');\n * var billingAddressExtendedInput = document.querySelector('input[name=\"extended-address\"]');\n * var billingAddressLocalityInput = document.querySelector('input[name=\"locality\"]');\n * var billingAddressRegionSelect = document.querySelector('select[name=\"region\"]');\n * var billingAddressPostalInput = document.querySelector('input[name=\"postal-code\"]');\n *\n * bankLoginButton.addEventListener('click', function (event) {\n * var bankLogin = {\n * displayName: 'My Online Store',\n * ownershipType: ownershipTypeInput.value,\n * billingAddress: {\n * streetAddress: billingAddressStreetInput.value,\n * extendedAddress: billingAddressExtendedInput.value,\n * locality: billingAddressLocalityInput.value,\n * region: billingAddressRegionSelect.value,\n * postalCode: billingAddressPostalInput.value\n * }\n * }\n * event.preventDefault();\n *\n * if (bankLogin.ownershipType === 'personal') {\n * bankLogin.firstName = firstNameInput.value;\n * bankLogin.lastName = lastNameInput.value;\n * } else {\n * bankLogin.businessName = businessNameInput.value;\n * }\n *\n * usBankAccountInstance.tokenize({\n * bankLogin: bankLogin,\n * mandateText: 'I authorize Braintree to debit my bank account on behalf of My Online Store.'\n * }, function (tokenizeErr, tokenizedPayload) {\n * if (tokenizeErr) {\n * console.error('There was an error tokenizing the bank details.');\n * return;\n * }\n *\n * // Send tokenizePayload.nonce to your server here!\n * });\n * });\n */\nUSBankAccount.prototype.tokenize = function (options) {\n options = options || {};\n\n if (!options.mandateText) {\n return Promise.reject(\n new BraintreeError({\n type: errors.US_BANK_ACCOUNT_OPTION_REQUIRED.type,\n code: errors.US_BANK_ACCOUNT_OPTION_REQUIRED.code,\n message: \"mandateText property is required.\",\n })\n );\n }\n\n if (options.bankDetails && options.bankLogin) {\n return Promise.reject(\n new BraintreeError({\n type: errors.US_BANK_ACCOUNT_MUTUALLY_EXCLUSIVE_OPTIONS.type,\n code: errors.US_BANK_ACCOUNT_MUTUALLY_EXCLUSIVE_OPTIONS.code,\n message:\n \"tokenize must be called with bankDetails or bankLogin, not both.\",\n })\n );\n } else if (options.bankDetails) {\n return this._tokenizeBankDetails(options);\n } else if (options.bankLogin) {\n return this._tokenizeBankLogin(options);\n }\n\n return Promise.reject(\n new BraintreeError({\n type: errors.US_BANK_ACCOUNT_OPTION_REQUIRED.type,\n code: errors.US_BANK_ACCOUNT_OPTION_REQUIRED.code,\n message: \"tokenize must be called with bankDetails or bankLogin.\",\n })\n );\n};\n\nUSBankAccount.prototype._tokenizeBankDetails = function (options) {\n var client = this._client;\n var bankDetails = options.bankDetails;\n var data = {\n achMandate: options.mandateText,\n routingNumber: bankDetails.routingNumber,\n accountNumber: bankDetails.accountNumber,\n accountType: bankDetails.accountType.toUpperCase(),\n billingAddress: formatBillingAddressForGraphQL(\n bankDetails.billingAddress || {}\n ),\n };\n\n formatDataForOwnershipType(data, bankDetails);\n\n return client\n .request({\n api: \"graphQLApi\",\n data: {\n query: TOKENIZE_BANK_DETAILS_MUTATION,\n variables: {\n input: {\n usBankAccount: data,\n },\n },\n },\n })\n .then(function (response) {\n analytics.sendEvent(\n client,\n \"usbankaccount.bankdetails.tokenization.succeeded\"\n );\n\n return Promise.resolve(\n formatTokenizeResponseFromGraphQL(response, \"tokenizeUsBankAccount\")\n );\n })\n .catch(function (err) {\n var error = errorFrom(err);\n\n analytics.sendEvent(\n client,\n \"usbankaccount.bankdetails.tokenization.failed\"\n );\n\n return Promise.reject(error);\n });\n};\n\nUSBankAccount.prototype._tokenizeBankLogin = function (options) {\n var self = this;\n var client = this._client;\n var gatewayConfiguration = client.getConfiguration().gatewayConfiguration;\n var isProduction = gatewayConfiguration.environment === \"production\";\n var plaidConfig = gatewayConfiguration.usBankAccount.plaid;\n\n if (!options.bankLogin.displayName) {\n return Promise.reject(\n new BraintreeError({\n type: errors.US_BANK_ACCOUNT_OPTION_REQUIRED.type,\n code: errors.US_BANK_ACCOUNT_OPTION_REQUIRED.code,\n message: \"displayName property is required when using bankLogin.\",\n })\n );\n }\n\n if (!plaidConfig) {\n return Promise.reject(\n new BraintreeError(errors.US_BANK_ACCOUNT_BANK_LOGIN_NOT_ENABLED)\n );\n }\n\n if (this._isTokenizingBankLogin) {\n return Promise.reject(\n new BraintreeError(errors.US_BANK_ACCOUNT_LOGIN_REQUEST_ACTIVE)\n );\n }\n this._isTokenizingBankLogin = true;\n\n return new Promise(function (resolve, reject) {\n self._loadPlaid(function (plaidLoadErr, plaid) {\n if (plaidLoadErr) {\n reject(plaidLoadErr);\n\n return;\n }\n\n plaid\n .create({\n clientName: options.bankLogin.displayName,\n apiVersion: \"v2\",\n env: isProduction ? \"production\" : \"sandbox\",\n key: plaidConfig.publicKey,\n product: \"auth\",\n selectAccount: true,\n onExit: function () {\n self._isTokenizingBankLogin = false;\n\n analytics.sendEvent(\n client,\n \"usbankaccount.banklogin.tokenization.closed.by-user\"\n );\n\n reject(new BraintreeError(errors.US_BANK_ACCOUNT_LOGIN_CLOSED));\n },\n onSuccess: function (publicToken, metadata) {\n var bankLogin = options.bankLogin;\n var data = {\n publicToken: publicToken,\n accountId: isProduction\n ? metadata.account_id\n : \"plaid_account_id\",\n accountType: metadata.account.subtype.toUpperCase(),\n achMandate: options.mandateText,\n billingAddress: formatBillingAddressForGraphQL(\n bankLogin.billingAddress || {}\n ),\n };\n\n formatDataForOwnershipType(data, bankLogin);\n\n client\n .request({\n api: \"graphQLApi\",\n data: {\n query: TOKENIZE_BANK_LOGIN_MUTATION,\n variables: {\n input: {\n usBankLogin: data,\n },\n },\n },\n })\n .then(function (response) {\n self._isTokenizingBankLogin = false;\n\n analytics.sendEvent(\n client,\n \"usbankaccount.banklogin.tokenization.succeeded\"\n );\n\n resolve(\n formatTokenizeResponseFromGraphQL(\n response,\n \"tokenizeUsBankLogin\"\n )\n );\n })\n .catch(function (tokenizeErr) {\n var error;\n\n self._isTokenizingBankLogin = false;\n error = errorFrom(tokenizeErr);\n\n analytics.sendEvent(\n client,\n \"usbankaccount.banklogin.tokenization.failed\"\n );\n\n reject(error);\n });\n },\n })\n .open();\n\n analytics.sendEvent(\n client,\n \"usbankaccount.banklogin.tokenization.started\"\n );\n });\n });\n};\n\nfunction errorFrom(err) {\n var error;\n var status = err.details && err.details.httpStatus;\n\n if (status === 401) {\n error = new BraintreeError(sharedErrors.BRAINTREE_API_ACCESS_RESTRICTED);\n } else if (status < 500) {\n error = new BraintreeError(errors.US_BANK_ACCOUNT_FAILED_TOKENIZATION);\n } else {\n error = new BraintreeError(\n errors.US_BANK_ACCOUNT_TOKENIZATION_NETWORK_ERROR\n );\n }\n error.details = { originalError: err };\n\n return error;\n}\n\nfunction formatTokenizeResponseFromGraphQL(response, type) {\n var data = response.data[type].paymentMethod;\n var last4 = data.details.last4;\n var description = \"US bank account ending in - \" + last4;\n\n return {\n nonce: data.id,\n details: {},\n description: description,\n type: \"us_bank_account\",\n };\n}\n\nUSBankAccount.prototype._loadPlaid = function (callback) {\n var existingScript, script;\n\n callback = once(callback);\n\n if (window.Plaid) {\n callback(null, window.Plaid);\n\n return;\n }\n\n existingScript = document.querySelector(\n 'script[src=\"' + constants.PLAID_LINK_JS + '\"]'\n );\n\n if (existingScript) {\n addLoadListeners(existingScript, callback);\n } else {\n script = document.createElement(\"script\");\n\n script.src = constants.PLAID_LINK_JS;\n script.async = true;\n\n addLoadListeners(script, callback);\n\n document.body.appendChild(script);\n\n this._plaidScript = script;\n }\n};\n\nfunction addLoadListeners(script, callback) {\n function loadHandler() {\n var readyState = this.readyState; // eslint-disable-line no-invalid-this\n\n if (!readyState || readyState === \"loaded\" || readyState === \"complete\") {\n removeLoadListeners();\n callback(null, window.Plaid);\n }\n }\n\n function errorHandler() {\n script.parentNode.removeChild(script);\n\n callback(new BraintreeError(errors.US_BANK_ACCOUNT_LOGIN_LOAD_FAILED));\n }\n\n function removeLoadListeners() {\n script.removeEventListener(\"error\", errorHandler);\n script.removeEventListener(\"load\", loadHandler);\n script.removeEventListener(\"readystatechange\", loadHandler);\n }\n\n script.addEventListener(\"error\", errorHandler);\n script.addEventListener(\"load\", loadHandler);\n script.addEventListener(\"readystatechange\", loadHandler);\n}\n\nfunction formatBillingAddressForGraphQL(address) {\n return {\n streetAddress: address.streetAddress,\n extendedAddress: address.extendedAddress,\n city: address.locality,\n state: address.region,\n zipCode: address.postalCode,\n };\n}\n\nfunction formatDataForOwnershipType(data, details) {\n if (details.ownershipType === \"personal\") {\n data.individualOwner = {\n firstName: details.firstName,\n lastName: details.lastName,\n };\n } else if (details.ownershipType === \"business\") {\n data.businessOwner = {\n businessName: details.businessName,\n };\n }\n}\n\nfunction createGraphQLMutation(type) {\n return (\n \"\" +\n \"mutation Tokenize\" +\n type +\n \"($input: Tokenize\" +\n type +\n \"Input!) {\" +\n \" tokenize\" +\n type +\n \"(input: $input) {\" +\n \" paymentMethod {\" +\n \" id\" +\n \" details {\" +\n \" ... on UsBankAccountDetails {\" +\n \" last4\" +\n \" }\" +\n \" }\" +\n \" }\" +\n \" }\" +\n \"}\"\n );\n}\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/us-bank-account.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * usBankAccountInstance.teardown();\n * @example <caption>With callback</caption>\n * usBankAccountInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nUSBankAccount.prototype.teardown = function () {\n if (this._plaidScript) {\n document.body.removeChild(this._plaidScript);\n }\n\n convertMethodsToError(this, methods(USBankAccount.prototype));\n\n return Promise.resolve();\n};\n\nmodule.exports = wrapPromise.wrapPrototype(USBankAccount);\n\n},{\"../lib/analytics\":132,\"../lib/braintree-error\":137,\"../lib/convert-methods-to-error\":140,\"../lib/errors\":148,\"../lib/methods\":168,\"../lib/once\":169,\"./constants\":219,\"./errors\":220,\"@braintree/wrap-promise\":40}],223:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Vault Manager - deletePaymentMethod Error Codes\n * @description Errors that occur when using the [`deletePaymentMethod` method](./VaultManager.html#deletePaymentMethod).\n * @property {MERCHANT} VAULT_MANAGER_DELETE_PAYMENT_METHOD_NONCE_REQUIRES_CLIENT_TOKEN Occurs when vault manager is initialized with a tokenization key instead of a Client Token.\n * @property {MERCHANT} VAULT_MANAGER_PAYMENT_METHOD_NONCE_NOT_FOUND Occurs when the specified payment method can not be found.\n * @property {UNKNOWN} VAULT_MANAGER_DELETE_PAYMENT_METHOD_UNKNOWN_ERROR Occurs when there is an error attempting to delete the payment method.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n VAULT_MANAGER_DELETE_PAYMENT_METHOD_NONCE_REQUIRES_CLIENT_TOKEN: {\n type: BraintreeError.types.MERCHANT,\n code: \"VAULT_MANAGER_DELETE_PAYMENT_METHOD_NONCE_REQUIRES_CLIENT_TOKEN\",\n message:\n \"A client token with a customer id must be used to delete a payment method nonce.\",\n },\n VAULT_MANAGER_PAYMENT_METHOD_NONCE_NOT_FOUND: {\n type: BraintreeError.types.MERCHANT,\n code: \"VAULT_MANAGER_PAYMENT_METHOD_NONCE_NOT_FOUND\",\n },\n VAULT_MANAGER_DELETE_PAYMENT_METHOD_UNKNOWN_ERROR: {\n type: BraintreeError.types.UNKNOWN,\n code: \"VAULT_MANAGER_DELETE_PAYMENT_METHOD_UNKNOWN_ERROR\",\n },\n};\n\n},{\"../lib/braintree-error\":137}],224:[function(_dereq_,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/vault-manager\n * @description Manages customer's payment methods.\n */\n\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar VaultManager = _dereq_(\"./vault-manager\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {callback} callback The second argument, `data`, is the {@link VaultManager} instance.\n * @returns {void}\n */\nfunction create(options) {\n var name = \"Vault Manager\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n return new VaultManager({\n createPromise: createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n }),\n });\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":135,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./vault-manager\":225,\"@braintree/wrap-promise\":40}],225:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar analytics = _dereq_(\"../lib/analytics\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar errors = _dereq_(\"./errors\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar methods = _dereq_(\"../lib/methods\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\nvar DELETE_PAYMENT_METHOD_MUTATION =\n \"mutation DeletePaymentMethodFromSingleUseToken($input: DeletePaymentMethodFromSingleUseTokenInput!) {\" +\n \" deletePaymentMethodFromSingleUseToken(input: $input) {\" +\n \" clientMutationId\" +\n \" }\" +\n \"}\";\n\n/**\n * @typedef {array} VaultManager~fetchPaymentMethodsPayload The customer's payment methods.\n * @property {object} paymentMethod The payment method object.\n * @property {string} paymentMethod.nonce A nonce that can be sent to your server to transact on the payment method.\n * @property {boolean} paymentMethod.default Whether or not this is the default payment method for the customer.\n * @property {object} paymentMethod.details Any additional details about the payment method. Varies depending on the type of payment method.\n * @property {string} paymentMethod.type A constant indicating the type of payment method.\n * @property {?string} paymentMethod.description Additional description about the payment method.\n * @property {?object} paymentMethod.binData Bin data about the payment method.\n *\n */\n\n/**\n * @class\n * @param {object} options Options\n * @description <strong>You cannot use this constructor directly. Use {@link module:braintree-web/vault-manager.create|braintree.vault-manager.create} instead.</strong>\n * @classdesc This class allows you to manage a customer's payment methods on the client.\n */\nfunction VaultManager(options) {\n this._createPromise = options.createPromise;\n}\n\n/**\n * Fetches payment methods owned by the customer whose id was used to generate the client token used to create the {@link module:braintree-web/client|client}.\n * @public\n * @param {object} [options] Options for fetching payment methods.\n * @param {boolean} [options.defaultFirst = false] If `true`, the payment methods will be returned with the default payment method for the customer first. Otherwise, order is not guaranteed.\n * @param {callback} [callback] The second argument is a {@link VaultManager~fetchPaymentMethodsPayload|fetchPaymentMethodsPayload}. This is also what is resolved by the promise if no callback is provided.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * vaultManagerInstance.fetchPaymentMethods(function (err, paymentMethods) {\n * paymentMethods.forEach(function (paymentMethod) {\n * // add payment method to UI\n * // paymentMethod.nonce <- transactable nonce associated with payment method\n * // paymentMethod.details <- object with additional information about payment method\n * // paymentMethod.type <- a constant signifying the type\n * });\n * });\n */\nVaultManager.prototype.fetchPaymentMethods = function (options) {\n var defaultFirst;\n\n options = options || {};\n\n defaultFirst = options.defaultFirst === true ? 1 : 0;\n\n return this._createPromise\n .then(function (client) {\n return client.request({\n endpoint: \"payment_methods\",\n method: \"get\",\n data: {\n defaultFirst: defaultFirst,\n },\n });\n })\n .then(\n function (paymentMethodsPayload) {\n analytics.sendEvent(\n this._createPromise,\n \"vault-manager.fetch-payment-methods.succeeded\"\n );\n\n return paymentMethodsPayload.paymentMethods.map(\n formatPaymentMethodPayload\n );\n }.bind(this)\n );\n};\n\n/**\n * Deletes a payment method owned by the customer whose id was used to generate the client token used to create the {@link module:braintree-web/client|client}.\n * @public\n * @param {string} paymentMethodNonce The payment method nonce that references a vaulted payment method.\n * @param {callback} [callback] No data is returned if the operation is successful.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * vaultManagerInstance.deletePaymentMethod('nonce-to-delete', function (err) {\n * // handle err if it exists\n * });\n */\nVaultManager.prototype.deletePaymentMethod = function (paymentMethodNonce) {\n return this._createPromise.then(function (client) {\n var usesClientToken =\n client.getConfiguration().authorizationType === \"CLIENT_TOKEN\";\n\n if (!usesClientToken) {\n return Promise.reject(\n new BraintreeError(\n errors.VAULT_MANAGER_DELETE_PAYMENT_METHOD_NONCE_REQUIRES_CLIENT_TOKEN\n )\n );\n }\n\n return client\n .request({\n api: \"graphQLApi\",\n data: {\n query: DELETE_PAYMENT_METHOD_MUTATION,\n variables: {\n input: {\n singleUseTokenId: paymentMethodNonce,\n },\n },\n operationName: \"DeletePaymentMethodFromSingleUseToken\",\n },\n })\n .then(function () {\n analytics.sendEvent(\n client,\n \"vault-manager.delete-payment-method.succeeded\"\n );\n\n // noop to prevent sending back the raw graphql data\n })\n .catch(function (error) {\n var originalError = error.details.originalError;\n var formattedError;\n\n analytics.sendEvent(\n client,\n \"vault-manager.delete-payment-method.failed\"\n );\n\n if (\n originalError[0] &&\n originalError[0].extensions.errorClass === \"NOT_FOUND\"\n ) {\n formattedError = new BraintreeError({\n type: errors.VAULT_MANAGER_PAYMENT_METHOD_NONCE_NOT_FOUND.type,\n code: errors.VAULT_MANAGER_PAYMENT_METHOD_NONCE_NOT_FOUND.code,\n message:\n \"A payment method for payment method nonce `\" +\n paymentMethodNonce +\n \"` could not be found.\",\n details: {\n originalError: originalError,\n },\n });\n }\n\n if (!formattedError) {\n formattedError = new BraintreeError({\n type: errors.VAULT_MANAGER_DELETE_PAYMENT_METHOD_UNKNOWN_ERROR.type,\n code: errors.VAULT_MANAGER_DELETE_PAYMENT_METHOD_UNKNOWN_ERROR.code,\n message:\n \"An unknown error occured when attempting to delete the payment method assocaited with the payment method nonce `\" +\n paymentMethodNonce +\n \"`.\",\n details: {\n originalError: originalError,\n },\n });\n }\n\n return Promise.reject(formattedError);\n });\n });\n};\n\nfunction formatPaymentMethodPayload(paymentMethod) {\n var formattedPaymentMethod = {\n nonce: paymentMethod.nonce,\n default: paymentMethod.default,\n details: paymentMethod.details,\n hasSubscription: paymentMethod.hasSubscription,\n type: paymentMethod.type,\n };\n\n if (paymentMethod.description) {\n formattedPaymentMethod.description = paymentMethod.description;\n }\n\n if (paymentMethod.binData) {\n formattedPaymentMethod.binData = paymentMethod.binData;\n }\n\n return formattedPaymentMethod;\n}\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/vault-manager.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * vaultManagerInstance.teardown();\n * @example <caption>With callback</caption>\n * vaultManagerInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nVaultManager.prototype.teardown = function () {\n convertMethodsToError(this, methods(VaultManager.prototype));\n\n return Promise.resolve();\n};\n\nmodule.exports = wrapPromise.wrapPrototype(VaultManager);\n\n},{\"../lib/analytics\":132,\"../lib/braintree-error\":137,\"../lib/convert-methods-to-error\":140,\"../lib/methods\":168,\"./errors\":223,\"@braintree/wrap-promise\":40}],226:[function(_dereq_,module,exports){\n\"use strict\";\nvar __importDefault =\n (this && this.__importDefault) ||\n function (mod) {\n return mod && mod.__esModule ? mod : { default: mod };\n };\nvar venmo_desktop_1 = __importDefault(_dereq_(\"./venmo-desktop\"));\nmodule.exports = function createVenmoDesktop(options) {\n var instance = new venmo_desktop_1.default(options);\n return instance.initialize();\n};\n\n},{\"./venmo-desktop\":228}],227:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VENMO_PAYMENT_CONTEXT_STATUS_QUERY =\n exports.LEGACY_VENMO_PAYMENT_CONTEXT_STATUS_QUERY =\n exports.UPDATE_PAYMENT_CONTEXT_QUERY =\n exports.LEGACY_UPDATE_PAYMENT_CONTEXT_QUERY =\n exports.CREATE_PAYMENT_CONTEXT_QUERY =\n exports.LEGACY_CREATE_PAYMENT_CONTEXT_QUERY =\n void 0;\nexports.LEGACY_CREATE_PAYMENT_CONTEXT_QUERY =\n \"mutation CreateVenmoQRCodePaymentContext($input: CreateVenmoQRCodePaymentContextInput!) {\\n createVenmoQRCodePaymentContext(input: $input) {\\n clientMutationId\\n venmoQRCodePaymentContext {\\n id\\n merchantId\\n createdAt\\n expiresAt\\n }\\n }\\n}\";\nexports.CREATE_PAYMENT_CONTEXT_QUERY =\n \"mutation CreateVenmoPaymentContext($input: CreateVenmoPaymentContextInput!) {\\n createVenmoPaymentContext(input: $input) {\\n clientMutationId\\n venmoPaymentContext {\\n id\\n merchantId\\n createdAt\\n expiresAt\\n }\\n }\\n}\";\nexports.LEGACY_UPDATE_PAYMENT_CONTEXT_QUERY =\n \"mutation UpdateVenmoQRCodePaymentContext($input: UpdateVenmoQRCodePaymentContextInput!) {\\n updateVenmoQRCodePaymentContext(input: $input) {\\n clientMutationId\\n }\\n}\";\nexports.UPDATE_PAYMENT_CONTEXT_QUERY =\n \"mutation UpdateVenmoPaymentContextStatus($input: UpdateVenmoPaymentContextStatusInput!) {\\n updateVenmoPaymentContextStatus(input: $input) {\\n clientMutationId\\n }\\n}\";\nexports.LEGACY_VENMO_PAYMENT_CONTEXT_STATUS_QUERY =\n \"query PaymentContext($id: ID!) {\\n node(id: $id) {\\n ... on VenmoQRCodePaymentContext {\\n status\\n paymentMethodId\\n userName\\n }\\n }\\n}\";\nexports.VENMO_PAYMENT_CONTEXT_STATUS_QUERY =\n \"query PaymentContext($id: ID!) {\\n node(id: $id) {\\n ... on VenmoPaymentContext {\\n status\\n paymentMethodId\\n userName\\n payerInfo {\\n firstName\\n lastName\\n phoneNumber\\n email\\n externalId\\n userName\\n billingAddress {\\n fullName\\n addressLine1\\n addressLine2\\n adminArea1\\n adminArea2\\n postalCode\\n countryCode\\n }\\n shippingAddress {\\n fullName\\n addressLine1\\n addressLine2\\n adminArea1\\n adminArea2\\n postalCode\\n countryCode\\n }\\n }\\n }\\n }\\n}\";\n\n},{}],228:[function(_dereq_,module,exports){\n\"use strict\";\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s)\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nvar __importDefault =\n (this && this.__importDefault) ||\n function (mod) {\n return mod && mod.__esModule ? mod : { default: mod };\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar framebus_1 = __importDefault(_dereq_(\"framebus\"));\nvar iframer_1 = __importDefault(_dereq_(\"@braintree/iframer\"));\nvar uuid_1 = __importDefault(_dereq_(\"@braintree/uuid\"));\nvar events_1 = _dereq_(\"../shared/events\");\nvar queries_1 = _dereq_(\"./queries\");\nvar VENMO_DESKTOP_POLLING_INTERVAL = 1000; // 1 second\nvar VISUAL_DELAY_BEFORE_SIGNALLING_COMPLETION = 2000; // 2 seconds\nvar VenmoDesktop = /** @class */ (function () {\n function VenmoDesktop(options) {\n this.isHidden = true;\n this.env = options.environment;\n this.id = uuid_1.default();\n this.profileId = options.profileId;\n this.displayName = options.displayName;\n this.paymentMethodUsage = options.paymentMethodUsage;\n this.shouldUseLegacyQRCodeMutation = !this.paymentMethodUsage;\n var frameUrl = options.url + \"#\" + this.env + \"_\" + this.id;\n this.bus = new framebus_1.default({\n channel: this.id,\n verifyDomain: options.verifyDomain,\n targetFrames: [],\n });\n this.apiRequest = options.apiRequest;\n this.sendEvent = options.sendEvent;\n this.Promise = options.Promise;\n this.alertBox = document.createElement(\"div\");\n this.alertBox.setAttribute(\"data-venmo-desktop-id\", this.id);\n this.alertBox.setAttribute(\"role\", \"alert\");\n this.alertBox.style.position = \"fixed\";\n this.alertBox.style.display = \"none\";\n this.alertBox.style.height = \"1px\";\n this.alertBox.style.width = \"1px\";\n this.alertBox.style.overflow = \"hidden\";\n this.alertBox.style.zIndex = \"0\";\n this.iframe = iframer_1.default({\n src: frameUrl,\n name: \"venmo-desktop-iframe\",\n style: {\n display: \"none\",\n position: \"fixed\",\n top: \"0\",\n bottom: \"0\",\n right: \"0\",\n left: \"0\",\n height: \"100%\",\n width: \"100%\",\n zIndex: \"9999999\",\n },\n title: \"Venmo Desktop\",\n });\n this.bus.addTargetFrame(this.iframe);\n }\n VenmoDesktop.prototype.initialize = function () {\n var _this = this;\n return new this.Promise(function (resolve) {\n _this.bus.on(events_1.VENMO_DESKTOP_IFRAME_READY, function () {\n resolve(_this);\n });\n _this.bus.on(events_1.VENMO_DESKTOP_REQUEST_NEW_QR_CODE, function () {\n _this.sendEvent(\"venmo.tokenize.desktop.restarted-from-error-view\");\n _this.startPolling();\n });\n document.body.appendChild(_this.iframe);\n document.body.appendChild(_this.alertBox);\n });\n };\n VenmoDesktop.prototype.launchDesktopFlow = function () {\n var _this = this;\n this.isHidden = false;\n var promise = new this.Promise(function (resolve, reject) {\n _this.launchDesktopPromiseRejectFunction = reject;\n var removeListeners = function () {\n /* eslint-disable @typescript-eslint/no-use-before-define */\n _this.bus.off(\n events_1.VENMO_DESKTOP_CUSTOMER_CANCELED,\n customerCancelledHandler\n );\n _this.bus.off(\n events_1.VENMO_DESKTOP_UNKNOWN_ERROR,\n unknownErrorHandler\n );\n /* eslint-enable @typescript-eslint/no-use-before-define */\n };\n var unknownErrorHandler = function (err) {\n removeListeners();\n _this.sendEvent(\"venmo.tokenize.desktop.unknown-error\");\n reject({\n allowUIToHandleError: false,\n reason: \"UNKNOWN_ERROR\",\n err: err,\n });\n };\n var customerCancelledHandler = function () {\n removeListeners();\n _this.updateVenmoDesktopPaymentContext(\"CANCELED\");\n _this.sendEvent(\n \"venmo.tokenize.desktop.status-change.canceled-from-modal\"\n );\n reject({\n allowUIToHandleError: false,\n reason: \"CUSTOMER_CANCELED\",\n });\n };\n _this.completedHandler = function (payload) {\n removeListeners();\n resolve(payload);\n };\n _this.bus.on(\n events_1.VENMO_DESKTOP_CUSTOMER_CANCELED,\n customerCancelledHandler\n );\n _this.bus.on(events_1.VENMO_DESKTOP_UNKNOWN_ERROR, unknownErrorHandler);\n });\n this.iframe.style.display = \"block\";\n this.setAlert(\"Generating a QR code, get your Venmo app ready\");\n this.iframe.focus();\n this.startPolling();\n return promise\n .then(function (result) {\n delete _this.venmoContextId;\n delete _this.launchDesktopPromiseRejectFunction;\n return result;\n })\n .catch(function (err) {\n delete _this.venmoContextId;\n delete _this.launchDesktopPromiseRejectFunction;\n return _this.Promise.reject(err);\n });\n };\n VenmoDesktop.prototype.triggerCompleted = function (result) {\n var _this = this;\n if (this.isHidden) {\n return;\n }\n setTimeout(function () {\n if (_this.completedHandler) {\n _this.completedHandler(result);\n }\n delete _this.completedHandler;\n }, VISUAL_DELAY_BEFORE_SIGNALLING_COMPLETION);\n };\n VenmoDesktop.prototype.triggerRejected = function (err) {\n if (this.launchDesktopPromiseRejectFunction) {\n this.launchDesktopPromiseRejectFunction(err);\n }\n };\n VenmoDesktop.prototype.hideDesktopFlow = function () {\n this.setAlert(\"\");\n this.iframe.style.display = \"none\";\n this.bus.emit(events_1.VENMO_DESKTOP_CLOSED_FROM_PARENT);\n this.isHidden = true;\n };\n VenmoDesktop.prototype.displayError = function (message) {\n if (this.isHidden) {\n return;\n }\n this.bus.emit(events_1.VENMO_DESKTOP_DISPLAY_ERROR, {\n message: message,\n });\n this.setAlert(message);\n };\n VenmoDesktop.prototype.displayQRCode = function (id, merchantId) {\n if (this.isHidden) {\n return;\n }\n this.bus.emit(events_1.VENMO_DESKTOP_DISPLAY_QR_CODE, {\n id: id,\n merchantId: merchantId,\n });\n this.setAlert(\"To scan the QR code, open your Venmo app\");\n };\n VenmoDesktop.prototype.authorize = function () {\n if (this.isHidden) {\n return;\n }\n this.bus.emit(events_1.VENMO_DESKTOP_AUTHORIZE);\n this.setAlert(\"Venmo account authorized\");\n };\n VenmoDesktop.prototype.authorizing = function () {\n if (this.isHidden) {\n return;\n }\n this.bus.emit(events_1.VENMO_DESKTOP_AUTHORIZING);\n this.setAlert(\"Authorize on your Venmo app\");\n };\n VenmoDesktop.prototype.startPolling = function () {\n var _this = this;\n return this.createVenmoDesktopPaymentContext()\n .then(function (result) {\n var expiresIn =\n new Date(result.expiresAt).getTime() -\n new Date(result.createdAt).getTime();\n var expiredTime = Date.now() + expiresIn;\n _this.displayQRCode(result.id, result.merchantId);\n return _this.pollForStatusChange(result.status, expiredTime);\n })\n .then(function (result) {\n if (!result) {\n return;\n }\n // since we are manually adding a prepended @ sign\n // we want to make sure that the username does not\n // start giving us the @ sign up front in the future\n var username = result.userName || \"\";\n username = \"@\" + username.replace(\"@\", \"\");\n _this.triggerCompleted({\n paymentMethodNonce: result.paymentMethodId,\n username: username,\n payerInfo: result.payerInfo,\n id: _this.venmoContextId || \"\",\n });\n })\n .catch(function (err) {\n if (err.allowUIToHandleError) {\n // noop here and let the UI handle the customer error\n return;\n }\n _this.sendEvent(\"venmo.tokenize.desktop.unhandled-error\");\n _this.triggerRejected(err);\n });\n };\n VenmoDesktop.prototype.pollForStatusChange = function (status, expiredTime) {\n var _this = this;\n if (!this.venmoContextId) {\n return this.Promise.resolve();\n }\n if (Date.now() > expiredTime) {\n return this.updateVenmoDesktopPaymentContext(\"EXPIRED\").then(function () {\n _this.displayError(\"Something went wrong\");\n _this.sendEvent(\"venmo.tokenize.desktop.status-change.sdk-timeout\");\n return _this.Promise.reject({\n allowUIToHandleError: true,\n reason: \"TIMEOUT\",\n });\n });\n }\n return this.lookupVenmoDesktopPaymentContext().then(function (response) {\n if (!_this.venmoContextId || !response) {\n return _this.Promise.resolve();\n }\n var newStatus = response.status;\n if (newStatus !== status) {\n status = newStatus;\n _this.sendEvent(\n \"venmo.tokenize.desktop.status-change.\" + status.toLowerCase()\n );\n switch (status) {\n case \"CREATED\":\n // noop, no need to do anything here\n // should never be able to get to this point\n // but we'll keep it in to enumerate the statuses\n break;\n case \"EXPIRED\":\n case \"FAILED\":\n case \"CANCELED\":\n var message =\n status === \"CANCELED\"\n ? \"The authorization was canceled\"\n : \"Something went wrong\";\n _this.displayError(message);\n // these are all terminal states, so we end it here\n return _this.Promise.reject({\n allowUIToHandleError: true,\n reason: status,\n });\n case \"SCANNED\":\n _this.authorizing();\n break;\n case \"APPROVED\":\n _this.authorize();\n return _this.Promise.resolve(response);\n default:\n // any other statuses are irrelevant to the polling\n // and can just be ignored\n }\n }\n return new _this.Promise(function (resolve, reject) {\n setTimeout(function () {\n _this\n .pollForStatusChange(status, expiredTime)\n .then(resolve)\n .catch(reject);\n }, VENMO_DESKTOP_POLLING_INTERVAL);\n });\n });\n };\n VenmoDesktop.prototype.teardown = function () {\n this.bus.teardown();\n if (this.iframe.parentNode) {\n this.iframe.parentNode.removeChild(this.iframe);\n }\n if (this.alertBox.parentNode) {\n this.alertBox.parentNode.removeChild(this.alertBox);\n }\n };\n VenmoDesktop.prototype.setAlert = function (message) {\n this.alertBox.style.display = message ? \"block\" : \"none\";\n this.alertBox.textContent = message;\n };\n VenmoDesktop.prototype.createPaymentContextFromGraphqlLegacyQRCodeMutation =\n function (intent) {\n return this.apiRequest(queries_1.LEGACY_CREATE_PAYMENT_CONTEXT_QUERY, {\n input: {\n environment: this.env,\n intent: intent,\n },\n }).then(function (response) {\n return response\n .createVenmoQRCodePaymentContext.venmoQRCodePaymentContext;\n });\n };\n VenmoDesktop.prototype.createPaymentContextFromGraphQL = function (intent) {\n var input = {\n intent: intent,\n paymentMethodUsage: this.paymentMethodUsage,\n customerClient: \"DESKTOP\",\n };\n if (this.profileId) {\n input.merchantProfileId = this.profileId;\n }\n if (this.displayName) {\n input.displayName = this.displayName;\n }\n return this.apiRequest(queries_1.CREATE_PAYMENT_CONTEXT_QUERY, {\n input: input,\n }).then(function (response) {\n return response.createVenmoPaymentContext.venmoPaymentContext;\n });\n };\n VenmoDesktop.prototype.createVenmoDesktopPaymentContext = function () {\n var _this = this;\n var contextPromise = this.shouldUseLegacyQRCodeMutation\n ? this.createPaymentContextFromGraphqlLegacyQRCodeMutation(\"PAY_FROM_APP\")\n : this.createPaymentContextFromGraphQL(\"PAY_FROM_APP\");\n return contextPromise.then(function (context) {\n _this.venmoContextId = context.id;\n var merchantId = _this.profileId || context.merchantId;\n return {\n id: context.id,\n status: context.status,\n merchantId: merchantId,\n createdAt: context.createdAt,\n expiresAt: context.expiresAt,\n };\n });\n };\n VenmoDesktop.prototype.updateVenmoDesktopPaymentContext = function (\n status,\n additionalOptions\n ) {\n if (additionalOptions === void 0) {\n additionalOptions = {};\n }\n if (!this.venmoContextId) {\n return this.Promise.resolve();\n }\n var data = {\n input: __assign(\n { id: this.venmoContextId, status: status },\n additionalOptions\n ),\n };\n var query = this.shouldUseLegacyQRCodeMutation\n ? queries_1.LEGACY_UPDATE_PAYMENT_CONTEXT_QUERY\n : queries_1.UPDATE_PAYMENT_CONTEXT_QUERY;\n return this.apiRequest(query, data).then(function () {\n // noop so we can resolve without any data to match the type\n });\n };\n VenmoDesktop.prototype.lookupVenmoDesktopPaymentContext = function () {\n if (!this.venmoContextId) {\n return this.Promise.resolve();\n }\n var query = this.shouldUseLegacyQRCodeMutation\n ? queries_1.LEGACY_VENMO_PAYMENT_CONTEXT_STATUS_QUERY\n : queries_1.VENMO_PAYMENT_CONTEXT_STATUS_QUERY;\n return this.apiRequest(query, {\n id: this.venmoContextId,\n }).then(function (response) {\n return response.node;\n });\n };\n return VenmoDesktop;\n})();\nexports.default = VenmoDesktop;\n\n},{\"../shared/events\":233,\"./queries\":227,\"@braintree/iframer\":32,\"@braintree/uuid\":36,\"framebus\":49}],229:[function(_dereq_,module,exports){\n\"use strict\";\n/** @module braintree-web/venmo */\n\nvar analytics = _dereq_(\"../lib/analytics\");\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar errors = _dereq_(\"./shared/errors\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar Venmo = _dereq_(\"./venmo\");\nvar supportsVenmo = _dereq_(\"./shared/supports-venmo\");\nvar VERSION = \"3.103.0\";\n\n/**\n * @typedef {object} Venmo~lineItem\n * @property {number} quantity Number of units of the item purchased. This value must be a whole number and can't be negative or zero.\n * @property {string} unitAmount Per-unit price of the item. Can include up to 2 decimal places. This value can't be negative or zero.\n * @property {string} name Item name. Maximum 127 characters.\n * @property {string} kind Indicates whether the line item is a debit (sale) or credit (refund) to the customer. Accepted values: `debit` and `credit`.\n * @property {?string} unitTaxAmount Per-unit tax price of the item. Can include up to 2 decimal places. This value can't be negative or zero.\n * @property {?string} description Item description. Maximum 127 characters.\n * @property {?string} productCode Product or UPC code for the item. Maximum 127 characters.\n * @property {?string} url The URL to product information.\n */\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {boolean} [options.allowNewBrowserTab=true] This should be set to false if your payment flow requires returning to the same tab, e.g. single page applications. Doing so causes {@link Venmo#isBrowserSupported|isBrowserSupported} to return true only for mobile web browsers that support returning from the Venmo app to the same tab.\n * @param {boolean} [options.allowWebviews=true] This should be set to false if your payment flow does not occur from within a webview that you control. Doing so causes {@link Venmo#isBrowserSupported|isBrowserSupported} to return true only for mobile web browsers that are not webviews.\n * @param {boolean} [options.ignoreHistoryChanges=false] When the Venmo app returns to the website, it will modify the hash of the url to include data about the tokenization. By default, the SDK will put the state of the hash back to where it was before the change was made. Pass `true` to handle the hash change instead of the SDK.\n * @param {string} [options.profileId] The Venmo profile ID to be used during payment authorization. Customers will see the business name and logo associated with this Venmo profile, and it will show up in the Venmo app as a \"Connected Merchant\". Venmo profile IDs can be found in the Braintree Control Panel. Omitting this value will use the default Venmo profile.\n * @param {string} [options.deepLinkReturnUrl] An override for the URL that the Venmo iOS app opens to return from an app switch.\n * @param {boolean} [options.requireManualReturn=false] When `true`, the customer will have to manually switch back to the browser/webview that is presenting Venmo to complete the payment.\n * @param {boolean} [options.useRedirectForIOS=false] Normally, the Venmo flow is launched using `window.open` and the Venmo app intercepts that call and opens the Venmo app instead. If the customer does not have the Venmo app installed, it opens the Venmo website in a new window and instructs the customer to install the app.\n \n * In iOS webviews and Safari View Controllers (a webview-like environment which is indistinguishable from Safari for JavaScript environments), this call to `window.open` will always fail to app switch to Venmo, resulting instead in a white screen. Because of this, an alternate approach is required to launch the Venmo flow.\n *\n * When `useRedirectForIOS` is `true` and the Venmo flow is started in an iOS environment, the Venmo flow will be started by setting `window.location.href` to the Venmo website (which will still be intercepted by the Venmo app and should be the same behavior as if `window.open` was called). However, if the customer does not have the Venmo app installed, the merchant page will instead be replaced with the Venmo website and the customer will need to use the browser's back button to return to the merchant's website. Ensure that your customer's checkout information will not be lost if they are navigated away from the website and return using the browser back button.\n *\n * Due to a bug in iOS's implementation of `window.open` in iOS webviews and Safari View Controllers, if `useRedirectForIOS` is not set to `true` and the flow is launched from an iOS webview or Safari View Controller, the customer will be presented with a blank screen, halting the flow and leaving the customer unable to return to the merchant's website. Setting `useRedirectForIOS` to `true` will allow the flow to continue, but the Venmo app will be unable to return back to the webview/Safari View Controller. It will instead open the merchant's site in a new window in the customer's browser, which means the merchant site must be able to process the Venmo payment. If the SDK is configured with `allowNewBrowserTab = false`, it is unlikely that the website is set up to process the Venmo payment from a new window.\n *\n * If processing the payment from a new window is not possible, use this flag in conjunction with `requireManualReturn` so that the customer may start the flow from a webview/Safari View Controller or their Safari browser and manually return to the place that originated the flow once the Venmo app has authorized the payment and instructed them to do so.\n * @param {string} [options.paymentMethodUsage] The intended usage for the Venmo payment method nonce. Possible options are:\n * * single_use - intended as a one time transaction\n * * multi_use - intended to be vaulted and used for multiple transactions\n * @param {string} [options.displayName] The business name that will be displayed in the Venmo app payment approval screen. Only applicable when used with `paymentMethodUsage` and used by merchants onboarded as PayFast channel partners.\n * @param {boolean} [options.allowDesktop] Used to support desktop users. When enabled, the default mode is to render a scannable QR-code customers scan with their phone's to approve via the mobile app.\n * @param {boolean} [options.allowDesktopWebLogin=false] When `true`, the customer will authorize payment via a window popup that allows them to sign in to their Venmo account. This is used explicitly for customers operating from desktop browsers wanting to avoid the QR Code flow.\n * @param {boolean} [options.mobileWebFallBack] Use this option when you want to use a web-login experience, such as if on mobile and the Venmo app isn't installed.\n * @param {boolean} [options.allowAndroidRecreation=true] This flag is for when your integration uses the [Android PopupBridge](https://github.com/braintree/popup-bridge-android). Setting this flag to false will avoid a page refresh when returning to your page after payment authorization. If not specified, it defaults to true and the Android activity will be recreated, resulting in a page refresh.\n * @param {boolean} [options.collectCustomerBillingAddress] When `true`, the customer's billing address will be collected and displayed on the Venmo paysheet (provided the Enriched Customer Data checkbox is also enabled for the merchant account).\n * @param {boolean} [options.collectCustomerShippingAddress] When `true`, the customer's shipping address will be collected and displayed on the Venmo paysheet (provided the Enriched Customer Data checkbox is also enabled for the merchant account).\n * @param {boolean} [options.isFinalAmount=false] When `true`, it denotes that the purchase amount (`totalAmount`) is final and will not change.\n * @param {lineItem[]} [options.lineItems] The {@link Venmo~lineItem|line items} belonging to the transaction. It can include up to 249 line items.\n * @param {string} [options.subTotalAmount] The subtotal amount of the transaction, excluding taxes, discounts, and shipping.\n * @param {string} [options.discountAmount] The total discount amount applied on the transaction.\n * @param {string} [options.shippingAmount] Shipping amount to be charged for the transaction.\n * @param {string} [options.taxAmount] The total tax amount applied to the transaction. This value can't be negative or zero.\n * @param {string} [options.totalAmount] The grand total amount of the transaction.\n *\n * Note: This flow currently requires a full page redirect, which means to utilize this flow your page will need to be able to handle the checkout session across different pages.\n * @param {callback} [callback] The second argument, `data`, is the {@link Venmo} instance. If no callback is provided, `create` returns a promise that resolves with the {@link Venmo} instance.\n * @example\n * braintree.venmo.create({\n * client: clientInstance\n * }).then(function (venmoInstance) {\n * // venmoInstance is ready to be used.\n * }).catch(function (createErr) {\n * console.error('Error creating Venmo instance', createErr);\n * });\n * @example <caption>Allow desktop flow to be used</caption>\n * braintree.venmo.create({\n * client: clientInstance,\n * allowDesktop: true\n * }).then(function (venmoInstance) {\n * // venmoInstance is ready to be used.\n * }).catch(function (createErr) {\n * console.error('Error creating Venmo instance', createErr);\n * });\n * @returns {(Promise|void)} Returns the Venmo instance.\n */\nfunction create(options) {\n var name = \"Venmo\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n var createPromise, instance;\n\n if (options.profileId && typeof options.profileId !== \"string\") {\n return Promise.reject(\n new BraintreeError(errors.VENMO_INVALID_PROFILE_ID)\n );\n }\n\n if (\n options.deepLinkReturnUrl &&\n typeof options.deepLinkReturnUrl !== \"string\"\n ) {\n return Promise.reject(\n new BraintreeError(errors.VENMO_INVALID_DEEP_LINK_RETURN_URL)\n );\n }\n\n createPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n })\n .then(function (client) {\n var configuration = client.getConfiguration();\n\n options.client = client;\n\n if (!configuration.gatewayConfiguration.payWithVenmo) {\n return Promise.reject(new BraintreeError(errors.VENMO_NOT_ENABLED));\n }\n\n return client;\n });\n\n options.createPromise = createPromise;\n instance = new Venmo(options);\n\n analytics.sendEvent(createPromise, \"venmo.initialized\");\n\n return createPromise.then(function () {\n return instance;\n });\n });\n}\n\n/**\n * @static\n * @function isBrowserSupported\n * @param {object} [options] browser support options:\n * @param {boolean} [options.allowNewBrowserTab=true] This should be set to false if your payment flow requires returning to the same tab, e.g. single page applications.\n * @param {boolean} [options.allowWebviews=true] This should be set to false if your payment flow does not occur from within a webview that you control.\n * @example\n * if (braintree.venmo.isBrowserSupported()) {\n * // set up Venmo\n * }\n * @example <caption>Explicitly require browser support returning to the same tab</caption>\n * if (braintree.venmo.isBrowserSupported({\n * allowNewBrowserTab: false\n * })) {\n * // set up Venmo\n * }\n * @example <caption>Explicitly set webviews as disallowed browsers</caption>\n * if (braintree.venmo.isBrowserSupported({\n * allowWebviews: false\n * })) {\n * // set up Venmo\n * }\n * @returns {boolean} Whether or not the browser supports Venmo.\n */\nfunction isBrowserSupported(options) {\n return supportsVenmo.isBrowserSupported(options);\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n isBrowserSupported: isBrowserSupported,\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/analytics\":132,\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./shared/errors\":232,\"./shared/supports-venmo\":235,\"./venmo\":237,\"@braintree/wrap-promise\":40}],230:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar isAndroid = _dereq_(\"@braintree/browser-detection/is-android\");\nvar isChrome = _dereq_(\"@braintree/browser-detection/is-chrome\");\nvar isIos = _dereq_(\"@braintree/browser-detection/is-ios\");\nvar isIosSafari = _dereq_(\"@braintree/browser-detection/is-ios-safari\");\nvar isIosWebview = _dereq_(\"@braintree/browser-detection/is-ios-webview\");\nvar isSamsung = _dereq_(\"@braintree/browser-detection/is-samsung\");\n\nfunction isAndroidWebview() {\n return (\n isAndroid() && window.navigator.userAgent.toLowerCase().indexOf(\"wv\") > -1\n );\n}\n\nfunction doesNotSupportWindowOpenInIos() {\n if (!isIos()) {\n return false;\n }\n\n return isIosWebview() || !isIosSafari();\n}\n\nfunction isFacebookOwnedBrowserOnAndroid() {\n var ua = window.navigator.userAgent.toLowerCase();\n\n // Huawei's Facebook useragent does not include Android\n if (ua.indexOf(\"huawei\") > -1 && ua.indexOf(\"fban\") > -1) {\n return true;\n }\n\n if (!isAndroid()) {\n return false;\n }\n\n return ua.indexOf(\"fb_iab\") > -1 || ua.indexOf(\"instagram\") > -1;\n}\n\nfunction isIosChrome() {\n return isIos() && isChrome();\n}\n\nmodule.exports = {\n isAndroid: isAndroid,\n isAndroidWebview: isAndroidWebview,\n isChrome: isChrome,\n isIos: isIos,\n isIosChrome: isIosChrome,\n isSamsung: isSamsung,\n isIosSafari: isIosSafari,\n isIosWebview: isIosWebview,\n isFacebookOwnedBrowserOnAndroid: isFacebookOwnedBrowserOnAndroid,\n doesNotSupportWindowOpenInIos: doesNotSupportWindowOpenInIos,\n};\n\n},{\"@braintree/browser-detection/is-android\":20,\"@braintree/browser-detection/is-chrome\":22,\"@braintree/browser-detection/is-ios\":27,\"@braintree/browser-detection/is-ios-safari\":24,\"@braintree/browser-detection/is-ios-webview\":25,\"@braintree/browser-detection/is-samsung\":28}],231:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * Venmo shared constants\n * @typedef {object} Venmo~venmoConstants\n * @ignore\n * @property {string} VENMO_APP_OR_MOBILE_AUTH_URL A deep-linked url that will open the Venmo app if installed, or navigate to a Venmo web-login experience if the Venmo app is not present.\n * @property {string} VENMO_MOBILE_APP_AUTH_ONLY_URL A deep-linked url that leads to a Venmo dead-end page if the Venmo app is not installed (page asks customer to download the app).\n * @property {string} VENMO_WEB_LOGIN_URL A non-deeplinked url that leads to a Venmo login page. For use when explicitly wanting to avoid using the Venmo mobile app via a deep-linked url.\n */\nmodule.exports = {\n DOCUMENT_VISIBILITY_CHANGE_EVENT_DELAY: 500,\n DEFAULT_PROCESS_RESULTS_DELAY: 1000,\n VENMO_APP_OR_MOBILE_AUTH_URL: \"https://venmo.com/go/checkout\",\n VENMO_MOBILE_APP_AUTH_ONLY_URL: \"https://venmo.com/braintree/checkout\",\n VENMO_WEB_LOGIN_URL: \"https://account.venmo.com/go/web\",\n};\n\n},{}],232:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Venmo - Creation Error Codes\n * @description Errors that occur when [creating the Venmo component](./module-braintree-web_venmo.html#.create).\n * @property {MERCHANT} VENMO_NOT_ENABLED Occurs when Venmo is not enabled on the Braintree control panel.\n * @property {MERCHANT} VENMO_INVALID_PROFILE_ID Occurs when Venmo is initialized with a profile id, but it is invalid.\n * @property {UNKNOWN} VENMO_MOBILE_POLLING_SETUP_FAILED __Deprecated__ No longer returned. Use `VENMO_MOBILE_PAYMENT_CONTEXT_SETUP_FAILED` instead.\n * @property {UNKNOWN} VENMO_MOBILE_PAYMENT_CONTEXT_SETUP_FAILED Occurs when the request to set up a Venmo Payment Context object fails.\n */\n\n/**\n * @name BraintreeError.Venmo - tokenize Error Codes\n * @description Errors that occur when using the [`tokenize` method](./Venmo.html#tokenize).\n * @property {CUSTOMER} VENMO_APP_CANCELED Occurs when customer cancels flow from the Venmo app.\n * @property {UNKNOWN} VENMO_APP_FAILED Occurs when tokenization fails.\n * @property {CUSTOMER} VENMO_CANCELED Occurs when customer cancels the flow or Venmo app is not available.\n * @property {CUSTOMER} VENMO_CUSTOMER_CANCELED Occurs when customer cancels the flow.\n * @property {CUSTOMER} VENMO_DESKTOP_CANCELED Occurs when customer cancels the Venmo Desktop flow by closing the modal.\n * @property {UNKNOWN} VENMO_DESKTOP_UNKNOWN_ERROR Occurs when an unknown error causes the Venmo Desktop flow to fail.\n * @property {UNKNOWN} VENMO_MOBILE_POLLING_TOKENIZATION_NETWORK_ERROR Occurs when an unknown network error causes the mobile polling process to fail.\n * @property {CUSTOMER} VENMO_MOBILE_POLLING_TOKENIZATION_EXPIRED Occurs when the polling has expired and the payment cannot be completed.\n * @property {CUSTOMER} VENMO_MOBILE_POLLING_TOKENIZATION_CANCELED Occurs when the polling operation is canceled by the customer.\n * @property {CUSTOMER} VENMO_MOBILE_POLLING_TOKENIZATION_TIMEOUT Occurs when customer takes too long to complete payment.\n * @property {UNKNOWN} VENMO_MOBILE_POLLING_TOKENIZATION_FAILED Occurs if there is an unknown error during the mobile polling process.\n * @property {NETWORK} VENMO_NETWORK_ERROR Occurs when a network error causes a request to fail.\n * @property {MERCHANT} VENMO_TOKENIZATION_CANCELED_BY_MERCHANT Occurs when `cancelTokenization` is called while tokenization is in progress.\n * @property {UNKNOWN} VENMO_TOKENIZATION_FAILED Occurs when there is an unknown error during the web login experience.\n * @property {MERCHANT} VENMO_TOKENIZATION_REQUEST_ACTIVE Occurs when `tokenize` is called when the flow is already in progress.\n * @property {MERCHANT} VENMO_TOKENIZATION_REQUEST_NOT_ACTIVE Occurs when `cancelTokenization` is called when the flow is not in progress.\n * @property {MERCHANT} VENMO_ECD_DISABLED Occurs when the merchant tries to access customer details without enabling Enriched Customer Data.\n */\n\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nmodule.exports = {\n VENMO_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"VENMO_NOT_ENABLED\",\n message: \"Venmo is not enabled for this merchant.\",\n },\n VENMO_TOKENIZATION_REQUEST_ACTIVE: {\n type: BraintreeError.types.MERCHANT,\n code: \"VENMO_TOKENIZATION_REQUEST_ACTIVE\",\n message: \"Another tokenization request is active.\",\n },\n VENMO_TOKENIZATION_REQUEST_NOT_ACTIVE: {\n type: BraintreeError.types.MERCHANT,\n code: \"VENMO_TOKENIZATION_REQUEST_NOT_ACTIVE\",\n message: \"No tokenization in progress.\",\n },\n VENMO_APP_FAILED: {\n type: BraintreeError.types.UNKNOWN,\n code: \"VENMO_APP_FAILED\",\n message: \"Venmo app encountered a problem.\",\n },\n VENMO_APP_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"VENMO_APP_CANCELED\",\n message: \"Venmo app authorization was canceled.\",\n },\n VENMO_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"VENMO_CANCELED\",\n message:\n \"User canceled Venmo authorization, or Venmo app is not available.\",\n },\n VENMO_CUSTOMER_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"VENMO_CUSTOMER_CANCELED\",\n message: \"User canceled Venmo authorization.\",\n },\n VENMO_NETWORK_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"VENMO_NETWORK_ERROR\",\n message: \"Something went wrong making the request\",\n },\n VENMO_DESKTOP_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"VENMO_DESKTOP_CANCELED\",\n message:\n \"User canceled Venmo authorization by closing the Venmo Desktop modal.\",\n },\n VENMO_TOKENIZATION_CANCELED_BY_MERCHANT: {\n type: BraintreeError.types.MERCHANT,\n code: \"VENMO_TOKENIZATION_CANCELED_BY_MERCHANT\",\n message: \"The Venmo tokenization was canceled by the merchant.\",\n },\n VENMO_DESKTOP_UNKNOWN_ERROR: {\n type: BraintreeError.types.UNKNOWN,\n code: \"VENMO_DESKTOP_UNKNOWN_ERROR\",\n message: \"Something went wrong with the Venmo Desktop flow.\",\n },\n VENMO_MOBILE_PAYMENT_CONTEXT_SETUP_FAILED: {\n type: BraintreeError.types.NETWORK,\n code: \"VENMO_MOBILE_PAYMENT_CONTEXT_SETUP_FAILED\",\n message: \"Something went wrong creating the Venmo Payment Context.\",\n },\n VENMO_MOBILE_POLLING_TOKENIZATION_NETWORK_ERROR: {\n type: BraintreeError.types.UNKNOWN,\n code: \"VENMO_MOBILE_POLLING_TOKENIZATION_NETWORK_ERROR\",\n message: \"Something went wrong during mobile polling.\",\n },\n VENMO_MOBILE_POLLING_TOKENIZATION_EXPIRED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"VENMO_MOBILE_POLLING_TOKENIZATION_EXPIRED\",\n message: \"The Venmo authorization request is expired.\",\n },\n VENMO_MOBILE_POLLING_TOKENIZATION_CANCELED: {\n type: BraintreeError.types.CUSTOMER,\n code: \"VENMO_MOBILE_POLLING_TOKENIZATION_CANCELED\",\n message: \"The Venmo authorization was canceled\",\n },\n VENMO_MOBILE_POLLING_TOKENIZATION_TIMEOUT: {\n type: BraintreeError.types.CUSTOMER,\n code: \"VENMO_MOBILE_POLLING_TOKENIZATION_TIMEOUT\",\n message: \"Customer took too long to authorize Venmo payment.\",\n },\n VENMO_MOBILE_POLLING_TOKENIZATION_FAILED: {\n type: BraintreeError.types.UNKNOWN,\n code: \"VENMO_MOBILE_POLLING_TOKENIZATION_FAILED\",\n message: \"The Venmo authorization failed.\",\n },\n VENMO_INVALID_PROFILE_ID: {\n type: BraintreeError.types.MERCHANT,\n code: \"VENMO_INVALID_PROFILE_ID\",\n message: \"Venmo profile ID is invalid.\",\n },\n VENMO_INVALID_DEEP_LINK_RETURN_URL: {\n type: BraintreeError.types.MERCHANT,\n code: \"VENMO_INVALID_DEEP_LINK_RETURN_URL\",\n message: \"Venmo deep link return URL is invalid.\",\n },\n VENMO_TOKENIZATION_FAILED: {\n type: BraintreeError.types.UNKNOWN,\n code: \"VENMO_TOKENIZATION_FAILED\",\n message: \"Venmo encountered a problem\",\n },\n VENMO_ECD_DISABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"ECD_DISABLED\",\n message:\n \"Cannot collect customer data when ECD is disabled. Enable this feature in the Control Panel to collect this data.\",\n },\n};\n\n},{\"../../lib/braintree-error\":137}],233:[function(_dereq_,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VENMO_DESKTOP_UNKNOWN_ERROR =\n exports.VENMO_DESKTOP_REQUEST_NEW_QR_CODE =\n exports.VENMO_DESKTOP_CLOSED_FROM_PARENT =\n exports.VENMO_DESKTOP_IFRAME_READY =\n exports.VENMO_DESKTOP_DISPLAY_QR_CODE =\n exports.VENMO_DESKTOP_DISPLAY_ERROR =\n exports.VENMO_DESKTOP_CUSTOMER_CANCELED =\n exports.VENMO_DESKTOP_AUTHORIZING =\n exports.VENMO_DESKTOP_AUTHORIZE =\n exports.VENMO_DESKTOP_AUTHORIZATION_TIMED_OUT =\n void 0;\nexports.VENMO_DESKTOP_AUTHORIZATION_TIMED_OUT =\n \"VENMO_DESKTOP_AUTHORIZATION_TIMED_OUT\";\nexports.VENMO_DESKTOP_AUTHORIZE = \"VENMO_DESKTOP_AUTHORIZE\";\nexports.VENMO_DESKTOP_AUTHORIZING = \"VENMO_DESKTOP_AUTHORIZING\";\nexports.VENMO_DESKTOP_CUSTOMER_CANCELED = \"VENMO_DESKTOP_CUSTOMER_CANCELED\";\nexports.VENMO_DESKTOP_DISPLAY_ERROR = \"VENMO_DESKTOP_DISPLAY_ERROR\";\nexports.VENMO_DESKTOP_DISPLAY_QR_CODE = \"VENMO_DESKTOP_DISPLAY_QR_CODE\";\nexports.VENMO_DESKTOP_IFRAME_READY = \"VENMO_DESKTOP_IFRAME_READY\";\nexports.VENMO_DESKTOP_CLOSED_FROM_PARENT = \"VENMO_DESKTOP_CLOSED_FROM_PARENT\";\nexports.VENMO_DESKTOP_REQUEST_NEW_QR_CODE = \"VENMO_DESKTOP_REQUEST_NEW_QR_CODE\";\nexports.VENMO_DESKTOP_UNKNOWN_ERROR = \"VENMO_DESKTOP_UNKNOWN_ERROR\";\n\n},{}],234:[function(_dereq_,module,exports){\n\"use strict\";\nvar venmoConstants = _dereq_(\"./constants\");\n\nfunction getVenmoUrl(options) {\n if (options.useAllowDesktopWebLogin)\n return venmoConstants.VENMO_WEB_LOGIN_URL;\n\n if (options.mobileWebFallBack)\n return venmoConstants.VENMO_APP_OR_MOBILE_AUTH_URL;\n\n return venmoConstants.VENMO_MOBILE_APP_AUTH_ONLY_URL;\n}\n\nmodule.exports = getVenmoUrl;\n\n},{\"./constants\":231}],235:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar browserDetection = _dereq_(\"./browser-detection\");\nvar inIframe = _dereq_(\"../../lib/in-iframe\");\n\nfunction isBrowserSupported(options) {\n var isKnownUnsupportedMobileBrowser,\n merchantAllowsDesktopBrowsers,\n merchantAllowsIosChrome,\n merchantAllowsReturningToNewBrowserTab,\n merchantAllowsWebviews;\n var isAndroid = browserDetection.isAndroid();\n var isMobileDevice = isAndroid || browserDetection.isIos();\n var isAndroidChrome = isAndroid && browserDetection.isChrome();\n var isMobileDeviceThatSupportsReturnToSameTab =\n browserDetection.isIosSafari() || isAndroidChrome;\n\n options = options || {};\n // NEXT_MAJOR_VERSION allowDesktop will default to true, but can be opted out\n merchantAllowsDesktopBrowsers =\n (options.allowDesktopWebLogin || options.allowDesktop) === true;\n merchantAllowsReturningToNewBrowserTab = options.hasOwnProperty(\n \"allowNewBrowserTab\"\n )\n ? options.allowNewBrowserTab\n : true;\n // NEXT_MAJOR_VERSION webviews are not supported, except for the case where\n // the merchant themselves is presenting venmo in a webview using the deep\n // link url to get back to their app. For the next major version, we should\n // just not have this option and instead require the merchant to determine\n // if the venmo button should be displayed when presenting it in the\n // merchant's app via a webview.\n merchantAllowsWebviews = options.hasOwnProperty(\"allowWebviews\")\n ? options.allowWebviews\n : true;\n // Venmo only works on iOS Chrome when the\n // button is not rendered in an iFrame and\n // allowNewBrowserTab is set to true\n merchantAllowsIosChrome =\n merchantAllowsReturningToNewBrowserTab && !inIframe();\n\n isKnownUnsupportedMobileBrowser =\n (!merchantAllowsIosChrome && browserDetection.isIosChrome()) ||\n browserDetection.isFacebookOwnedBrowserOnAndroid() ||\n browserDetection.isSamsung();\n\n if (isKnownUnsupportedMobileBrowser) {\n return false;\n }\n\n if (\n !merchantAllowsWebviews &&\n (browserDetection.isAndroidWebview() || browserDetection.isIosWebview())\n ) {\n return false;\n }\n\n if (!isMobileDevice) {\n return merchantAllowsDesktopBrowsers;\n }\n\n if (!merchantAllowsReturningToNewBrowserTab) {\n return isMobileDeviceThatSupportsReturnToSameTab;\n }\n\n return isMobileDevice;\n}\n\nmodule.exports = {\n isBrowserSupported: isBrowserSupported,\n};\n\n},{\"../../lib/in-iframe\":163,\"./browser-detection\":230}],236:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar frameService = _dereq_(\"../../lib/frame-service/external\");\nvar useMin = _dereq_(\"../../lib/use-min\");\nvar ExtendedPromise = _dereq_(\"@braintree/extended-promise\");\nvar errors = _dereq_(\"../shared/errors\");\nvar BraintreeError = _dereq_(\"../../lib/braintree-error\");\n\nvar VERSION = \"3.103.0\";\nvar VENMO_LOGO_SVG =\n '<svg width=\"198\" height=\"58\" viewBox=\"0 0 198 58\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M43.0702 13.6572C44.1935 15.4585 44.6999 17.3139 44.6999 19.6576C44.6999 27.1328 38.1277 36.8436 32.7935 43.6625H20.6099L15.7236 15.2939L26.3917 14.3105L28.9751 34.4966C31.389 30.6783 34.3678 24.6779 34.3678 20.587C34.3678 18.3477 33.9727 16.8225 33.3553 15.5666L43.0702 13.6572Z\" fill=\"white\"/>\\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M56.8965 26.1491C58.8596 26.1491 63.8018 25.2772 63.8018 22.5499C63.8018 21.2402 62.8481 20.587 61.7242 20.587C59.7579 20.587 57.1776 22.8763 56.8965 26.1491ZM56.6715 31.5506C56.6715 34.8807 58.5787 36.1873 61.107 36.1873C63.8603 36.1873 66.4966 35.534 69.923 33.8433L68.6324 42.3523C66.2183 43.4976 62.4559 44.2617 58.8039 44.2617C49.5403 44.2617 46.2249 38.8071 46.2249 31.9879C46.2249 23.1496 51.6179 13.765 62.7365 13.765C68.858 13.765 72.2809 17.0949 72.2809 21.7317C72.2815 29.2066 62.4005 31.4965 56.6715 31.5506Z\" fill=\"white\"/>\\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M103.067 20.3142C103.067 21.4052 102.897 22.9875 102.727 24.0216L99.5262 43.6622H89.1385L92.0585 25.658C92.1139 25.1696 92.284 24.1865 92.284 23.6411C92.284 22.3314 91.4414 22.0047 90.4282 22.0047C89.0826 22.0047 87.7337 22.6042 86.8354 23.0418L83.5234 43.6625H73.0772L77.8495 14.257H86.8908L87.0052 16.6041C89.1382 15.2404 91.9469 13.7656 95.932 13.7656C101.212 13.765 103.067 16.3845 103.067 20.3142Z\" fill=\"white\"/>\\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M133.906 16.9841C136.881 14.9131 139.69 13.765 143.563 13.765C148.897 13.765 150.753 16.3845 150.753 20.3142C150.753 21.4052 150.583 22.9875 150.413 24.0216L147.216 43.6622H136.825L139.801 25.2774C139.855 24.786 139.971 24.1865 139.971 23.8063C139.971 22.3317 139.128 22.0047 138.115 22.0047C136.824 22.0047 135.535 22.5501 134.577 23.0418L131.266 43.6625H120.878L123.854 25.2777C123.908 24.7863 124.02 24.1868 124.02 23.8065C124.02 22.332 123.177 22.0049 122.167 22.0049C120.819 22.0049 119.473 22.6045 118.574 23.0421L115.26 43.6628H104.817L109.589 14.2573H118.52L118.8 16.7122C120.878 15.241 123.684 13.7662 127.446 13.7662C130.704 13.765 132.837 15.129 133.906 16.9841Z\" fill=\"white\"/>\\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M171.426 25.5502C171.426 23.1496 170.808 21.513 168.956 21.513C164.857 21.513 164.015 28.55 164.015 32.1498C164.015 34.8807 164.802 36.5709 166.653 36.5709C170.528 36.5709 171.426 29.1497 171.426 25.5502ZM153.458 31.7152C153.458 22.442 158.511 13.765 170.136 13.765C178.896 13.765 182.098 18.7854 182.098 25.7148C182.098 34.8805 177.099 44.3723 165.194 44.3723C156.378 44.3723 153.458 38.7525 153.458 31.7152Z\" fill=\"white\"/>\\n</svg>';\nvar CONTINUE_OR_CANCEL_INSTRUCTIONS =\n \"Tap cancel payment to cancel and return to the business. Continue payment will relaunch the payment window.\";\n\nvar POPUP_WIDTH = 400;\nvar POPUP_HEIGHT = 570;\nvar ELEMENT_IDS = {\n backdrop: \"venmo-desktop-web-backdrop\",\n backdropHidden: \"venmo-desktop-web-backdrop.hidden\",\n backdropContainer: \"venmo-backdrop-container\",\n cancelButton: \"venmo-popup-cancel-button\",\n continueButton: \"venmo-popup-continue-button\",\n message: \"venmo-message\",\n instructions: \"venmo-instructions\",\n venmoLogo: \"venmo-full-logo\",\n};\n\nExtendedPromise.suppressUnhandledPromiseMessage = true;\n\nfunction openPopup(options) {\n var frameServiceInstance = options.frameServiceInstance;\n var venmoUrl = options.venmoUrl;\n var checkForStatusChange = options.checkForStatusChange;\n var cancelTokenization = options.cancelTokenization;\n var checkPaymentContextStatus = options.checkPaymentContextStatus;\n var extendedPromise = new ExtendedPromise();\n\n document\n .getElementById(ELEMENT_IDS.continueButton)\n .addEventListener(\"click\", function () {\n frameServiceInstance.focus();\n });\n document\n .getElementById(ELEMENT_IDS.cancelButton)\n .addEventListener(\"click\", function () {\n frameServiceInstance.close();\n cancelTokenization();\n closeBackdrop();\n });\n frameServiceInstance.open({}, function (frameServiceErr) {\n var retryStartingCount = 1;\n\n if (frameServiceErr) {\n extendedPromise.reject(frameServiceErr);\n } else {\n checkForStatusChange(retryStartingCount)\n .then(function (data) {\n extendedPromise.resolve(data);\n })\n .catch(function (statusCheckError) {\n // We add this check here because at this point\n // the status should not be in CREATED status.\n // However, there is an edge case where if a buyer\n // cancels in the popup, the popup might close itself\n // before it can send the graphQL mutation to update its status.\n // In these cases, the status will be stuck in CREATED status, and\n // tokenization would fail, incorrectly throwing a tokenization error\n // instead of informing the merchant that the customer canceled.\n checkPaymentContextStatus().then(function (node) {\n if (node.status === \"CREATED\") {\n extendedPromise.reject(\n new BraintreeError(errors.VENMO_CUSTOMER_CANCELED)\n );\n } else {\n extendedPromise.reject(statusCheckError);\n }\n });\n });\n }\n\n frameServiceInstance.close();\n closeBackdrop();\n });\n frameServiceInstance.redirect(venmoUrl);\n\n return extendedPromise;\n}\n\nfunction centeredPopupDimensions() {\n var popupTop =\n Math.round((window.outerHeight - POPUP_HEIGHT) / 2) + window.screenTop;\n var popupLeft =\n Math.round((window.outerWidth - POPUP_WIDTH) / 2) + window.screenLeft;\n\n return {\n top: popupTop,\n left: popupLeft,\n };\n}\n\nfunction closeBackdrop() {\n document.getElementById(\"venmo-desktop-web-backdrop\").classList.add(\"hidden\");\n}\n\nfunction getElementStyles() {\n var backdropStyles = [\n \"#\" + ELEMENT_IDS.backdropHidden + \" {\",\n \"display: none;\",\n \"}\",\n \"#\" + ELEMENT_IDS.backdrop + \" {\",\n \"z-index: 3141592632;\",\n \"cursor: pointer;\",\n \"position: fixed;\",\n \"top: 0;\",\n \"left: 0;\",\n \"bottom: 0;\",\n \"width: 100%;\",\n \"background: rgba(0, 0, 0, 0.8);\",\n \"}\",\n ];\n var backdropContainerStyles = [\n \"#\" + ELEMENT_IDS.backdropContainer + \" {\",\n \"display: flex;\",\n \"align-content: center;\",\n \"justify-content: center;\",\n \"align-items: center;\",\n \"width: 100%;\",\n \"height: 100%;\",\n \"flex-direction: column;\",\n \"}\",\n ];\n\n var cancelButtonStyles = [\n \"#\" + ELEMENT_IDS.cancelButton + \" {\",\n \"height: 24px;\",\n \"width: 380px;\",\n \"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\",\n \"font-style: normal;\",\n \"font-weight: 700;\",\n \"font-size: 18px;\",\n \"line-height: 24px;\",\n \"text-align: center;\",\n \"background-color: transparent;\",\n \"border: none;\",\n \"color: #FFFFFF;\",\n \"margin-top: 28px;\",\n \"}\",\n ];\n\n var continueButtonStyles = [\n \"#\" + ELEMENT_IDS.continueButton + \" {\",\n \"width: 400px;\",\n \"height: 50px;\",\n \"background: #0074DE;\",\n \"border-radius: 24px;\",\n \"border: none;\",\n \"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\",\n \"font-style: normal;\",\n \"font-weight: 700;\",\n \"font-size: 18px;\",\n \"color: #FFFFFF;\",\n \"margin-top: 44px;\",\n \"}\",\n ];\n\n var messageStyles = [\n \"#\" + ELEMENT_IDS.message + \" {\",\n \"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\",\n \"font-style: normal;\",\n \"font-weight: 500;\",\n \"font-size: 24px;\",\n \"line-height: 32px;\",\n \"text-align: center;\",\n \"color: #FFFFFF;\",\n \"margin-top: 32px;\",\n \"}\",\n ];\n\n var instructionStyles = [\n \"#\" + ELEMENT_IDS.instructions + \" {\",\n \"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\",\n \"font-style: normal;\",\n \"font-weight: 400;\",\n \"font-size: 16px;\",\n \"line-height: 20px;\",\n \"text-align: center;\",\n \"color: #FFFFFF;\",\n \"margin-top: 16px;\",\n \"width: 400px;\",\n \"}\",\n ];\n\n var allStyles = backdropStyles.concat(\n backdropContainerStyles,\n cancelButtonStyles,\n continueButtonStyles,\n messageStyles,\n instructionStyles\n );\n\n return allStyles.join(\"\\n\");\n}\n\nfunction buildAndStyleElements() {\n var alreadyRenderedBackdrop = document.getElementById(ELEMENT_IDS.backdrop);\n var backdropStylesElement,\n backdropDiv,\n backDropContentContainer,\n venmoLogoDiv,\n venmoMessageDiv,\n instructionsDiv,\n continueButton,\n cancelButton;\n\n if (alreadyRenderedBackdrop) {\n alreadyRenderedBackdrop.classList.remove(\"hidden\");\n\n return;\n }\n backdropStylesElement = document.createElement(\"style\");\n backdropDiv = document.createElement(\"div\");\n backDropContentContainer = document.createElement(\"div\");\n venmoLogoDiv = document.createElement(\"div\");\n venmoMessageDiv = document.createElement(\"div\");\n instructionsDiv = document.createElement(\"div\");\n continueButton = document.createElement(\"button\");\n cancelButton = document.createElement(\"button\");\n\n backdropStylesElement.id = \"venmo-desktop-web__injected-styles\";\n backdropStylesElement.innerHTML = getElementStyles();\n\n backdropDiv.id = ELEMENT_IDS.backdrop;\n\n backDropContentContainer.id = ELEMENT_IDS.backdropContainer;\n\n venmoLogoDiv.id = ELEMENT_IDS.venmoLogo;\n venmoLogoDiv.innerHTML = VENMO_LOGO_SVG;\n\n venmoMessageDiv.id = ELEMENT_IDS.message;\n venmoMessageDiv.innerText = \"What would you like to do?\";\n\n instructionsDiv.id = ELEMENT_IDS.instructions;\n instructionsDiv.innerText = CONTINUE_OR_CANCEL_INSTRUCTIONS;\n\n continueButton.id = ELEMENT_IDS.continueButton;\n continueButton.innerText = \"Continue payment\";\n\n cancelButton.id = ELEMENT_IDS.cancelButton;\n cancelButton.innerText = \"Cancel payment\";\n\n document.head.appendChild(backdropStylesElement);\n backDropContentContainer.appendChild(venmoLogoDiv);\n backDropContentContainer.appendChild(venmoMessageDiv);\n backDropContentContainer.appendChild(instructionsDiv);\n backDropContentContainer.appendChild(continueButton);\n backDropContentContainer.appendChild(cancelButton);\n backdropDiv.appendChild(backDropContentContainer);\n document.body.appendChild(backdropDiv);\n\n backdropDiv.addEventListener(\"click\", function (event) {\n event.stopPropagation();\n });\n}\n\n/**\n * Applies a backdrop over the page, and opens a popup to the supplied url. Uses supplied status and cancel functions to handle the flow.\n * @function runWebLogin\n * @ignore\n * @param {object} options Options for running the web login flow.\n * @param {string} options.venmoUrl Venmo url that is to be used for logging in.\n * @param {Venmo~checkPaymentContextStatusAndProcessResult} options.checkForStatusChange {@link Venmo~checkPaymentContextStatusAndProcessResult} to be invoked in order to check for a payment context status update.\n * @param {Venmo~cancelTokenization} options.cancelTokenization {@link Venmo~cancelTokenization} to be invoked when the appropriate payment context status is retrieved.\n * @param {boolean} options.debug A flag to control whether to use minified assets or not.\n * @returns {Promise} Returns a promise\n */\nfunction runWebLogin(options) {\n buildAndStyleElements();\n\n return openPopup(options);\n}\n\n/**\n * When using frameservice, it needs to be created separately from the action of opening. The setup process includes\n * steps that browsers may consider async or too disconnected from the user action required to open a popup.\n *\n * This function enables us to do that setup at an appropriate time.\n * @function setupDesktopWebLogin\n * @ignore\n * @param {object} options Options use for setting up the Desktop Web Login flow.\n * @param {string} options.assetsUrl Url that points to the hosted Braintree assets.\n * @param {boolean} options.debug A flag to control whether to use minified assets or not.\n\n * @returns {Promise} Returns a promise\n */\nfunction setupDesktopWebLogin(options) {\n var extendedPromise = new ExtendedPromise();\n var popupName = \"venmoDesktopWebLogin\";\n var assetsUrl = options.assetsUrl;\n var debug = options.debug || false;\n var popupLocation = centeredPopupDimensions();\n var assetsBaseUrl = assetsUrl + \"/web/\" + VERSION + \"/html\";\n\n frameService.create(\n {\n name: popupName,\n dispatchFrameUrl:\n assetsBaseUrl + \"/dispatch-frame\" + useMin(debug) + \".html\",\n openFrameUrl:\n assetsBaseUrl + \"/venmo-landing-frame\" + useMin(debug) + \".html\",\n top: popupLocation.top,\n left: popupLocation.left,\n height: POPUP_HEIGHT,\n width: POPUP_WIDTH,\n },\n function (frameServiceInstance) {\n extendedPromise.resolve(frameServiceInstance);\n }\n );\n\n return extendedPromise;\n}\n\nmodule.exports = {\n runWebLogin: runWebLogin,\n openPopup: openPopup,\n setupDesktopWebLogin: setupDesktopWebLogin,\n POPUP_WIDTH: POPUP_WIDTH,\n POPUP_HEIGHT: POPUP_HEIGHT,\n};\n\n},{\"../../lib/braintree-error\":137,\"../../lib/frame-service/external\":152,\"../../lib/use-min\":173,\"../shared/errors\":232,\"@braintree/extended-promise\":31}],237:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar analytics = _dereq_(\"../lib/analytics\");\nvar isBrowserSupported = _dereq_(\"./shared/supports-venmo\");\nvar browserDetection = _dereq_(\"./shared/browser-detection\");\nvar constants = _dereq_(\"./shared/constants\");\nvar errors = _dereq_(\"./shared/errors\");\nvar querystring = _dereq_(\"../lib/querystring\");\nvar isVerifiedDomain = _dereq_(\"../lib/is-verified-domain\");\nvar methods = _dereq_(\"../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar inIframe = _dereq_(\"../lib/in-iframe\");\nvar ExtendedPromise = _dereq_(\"@braintree/extended-promise\");\nvar getVenmoUrl = _dereq_(\"./shared/get-venmo-url\");\nvar desktopWebLogin = _dereq_(\"./shared/web-login-backdrop\");\nvar snakeCaseToCamelCase = _dereq_(\"../lib/snake-case-to-camel-case\");\n\n// NEXT_MAJOR_VERSION the source code for this is actually in a\n// typescript repo called venmo-desktop, once the SDK is migrated\n// to typescript, we can move the TS files out of that separate\n// repo and into the web SDK properly\nvar createVenmoDesktop = _dereq_(\"./external/\");\nvar graphqlQueries = _dereq_(\"./external/queries\");\n\nvar VERSION = \"3.103.0\";\nvar DEFAULT_MOBILE_POLLING_INTERVAL = 250; // 1/4 second\nvar DEFAULT_MOBILE_EXPIRING_THRESHOLD = 300000; // 5 minutes\n\nExtendedPromise.suppressUnhandledPromiseMessage = true;\n\n/**\n * Venmo tokenize payload.\n * @typedef {object} Venmo~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {string} type The payment method type, always `VenmoAccount`.\n * @property {object} details Additional Venmo account details.\n * @property {string} details.username The username of the Venmo account.\n * @property {string} details.paymentContextId The context ID of the Venmo payment. Only available when used with {@link https://braintree.github.io/braintree-web/current/module-braintree-web_venmo.html#.create|`paymentMethodUsage`}.\n */\n\n/**\n * @class\n * @param {object} options The Venmo {@link module:braintree-web/venmo.create create} options.\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/venmo.create|braintree-web.venmo.create} instead.</strong>\n * @classdesc This class represents a Venmo component produced by {@link module:braintree-web/venmo.create|braintree-web/venmo.create}. Instances of this class have methods for tokenizing Venmo payments.\n */\nfunction Venmo(options) {\n var self = this;\n\n this._allowDesktopWebLogin = options.allowDesktopWebLogin || false;\n this._mobileWebFallBack = options.mobileWebFallBack || false;\n this._createPromise = options.createPromise;\n this._allowNewBrowserTab = options.allowNewBrowserTab !== false;\n this._allowWebviews = options.allowWebviews !== false;\n this._allowDesktop = options.allowDesktop === true;\n this._useRedirectForIOS = options.useRedirectForIOS === true;\n this._profileId = options.profileId;\n this._displayName = options.displayName;\n this._deepLinkReturnUrl = options.deepLinkReturnUrl;\n this._ignoreHistoryChanges = options.ignoreHistoryChanges;\n this._paymentMethodUsage = (options.paymentMethodUsage || \"\").toUpperCase();\n this._shouldUseLegacyFlow = !this._paymentMethodUsage;\n this._requireManualReturn = options.requireManualReturn === true;\n this._useDesktopQRFlow =\n this._allowDesktop && this._isDesktop() && !this._allowDesktopWebLogin;\n this._useAllowDesktopWebLogin =\n this._allowDesktopWebLogin && this._isDesktop();\n this._cannotHaveReturnUrls = inIframe() || this._requireManualReturn;\n this._allowAndroidRecreation = options.allowAndroidRecreation !== false;\n this._maxRetryCount = 3;\n this._collectCustomerBillingAddress =\n options.collectCustomerBillingAddress || false;\n this._collectCustomerShippingAddress =\n options.collectCustomerShippingAddress || false;\n this._isFinalAmount = options.isFinalAmount || false;\n this._lineItems = options.lineItems;\n this._subTotalAmount = options.subTotalAmount;\n this._discountAmount = options.discountAmount;\n this._taxAmount = options.taxAmount;\n this._shippingAmount = options.shippingAmount;\n this._totalAmount = options.totalAmount;\n\n this._shouldCreateVenmoPaymentContext =\n this._cannotHaveReturnUrls || !this._shouldUseLegacyFlow;\n\n analytics.sendEvent(\n this._createPromise,\n \"venmo.desktop-flow.configured.\" + String(Boolean(this._allowDesktop))\n );\n\n // if the url has a tokenization result, that indicates\n // that it cannot be the desktop flow or the manual return\n // flow. If it's the hash change with paymentMethodUsage\n // flow, we want to skip creating a new payment context, since\n // there is already a pending payment context waiting to be\n // processed. For the hash change flow without paymentMethodUsage,\n // no further actions are needed.\n if (this.hasTokenizationResult()) {\n analytics.sendEvent(\n this._createPromise,\n \"venmo.appswitch.return-in-new-tab\"\n );\n } else if (this._useDesktopQRFlow) {\n this._createPromise = this._createPromise.then(function (client) {\n var config = client.getConfiguration().gatewayConfiguration;\n\n return createVenmoDesktop({\n url:\n config.assetsUrl +\n \"/web/\" +\n VERSION +\n \"/html/venmo-desktop-frame.html\",\n environment:\n config.environment === \"production\" ? \"PRODUCTION\" : \"SANDBOX\",\n profileId: self._profileId || config.payWithVenmo.merchantId,\n paymentMethodUsage: self._paymentMethodUsage,\n displayName: self._displayName,\n Promise: Promise,\n apiRequest: function (query, data) {\n return client\n .request({\n api: \"graphQLApi\",\n data: {\n query: query,\n variables: data,\n },\n })\n .then(function (response) {\n return response.data;\n });\n },\n sendEvent: function (eventName) {\n analytics.sendEvent(self._createPromise, eventName);\n },\n verifyDomain: isVerifiedDomain,\n })\n .then(function (venmoDesktopInstance) {\n self._venmoDesktopInstance = venmoDesktopInstance;\n analytics.sendEvent(\n self._createPromise,\n \"venmo.desktop-flow.presented\"\n );\n\n return client;\n })\n .catch(function () {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.desktop-flow.setup-failed\"\n );\n self._useDesktopQRFlow = false;\n\n return client;\n });\n });\n } else if (this._shouldCreateVenmoPaymentContext) {\n // these variables are only relevant for the manual return flow\n // and they are only set to make testing easier (so they can\n // be overwritten with smaller values in the tests)\n this._mobilePollingInterval = DEFAULT_MOBILE_POLLING_INTERVAL;\n this._mobilePollingExpiresThreshold = DEFAULT_MOBILE_EXPIRING_THRESHOLD;\n\n this._createPromise = this._createPromise.then(function (client) {\n var paymentContextPromise, webLoginPromise;\n var analyticsCategory = self._cannotHaveReturnUrls\n ? \"manual-return\"\n : \"mobile-payment-context\";\n var config = client.getConfiguration();\n\n webLoginPromise = desktopWebLogin\n .setupDesktopWebLogin({\n assetsUrl: config.gatewayConfiguration.assetsUrl,\n debug: config.isDebug,\n })\n .then(function (frameServiceInstance) {\n self._frameServiceInstance = frameServiceInstance;\n })\n .catch(function (desktopWebErr) {\n return desktopWebErr;\n });\n\n self._mobilePollingContextEnvironment =\n config.gatewayConfiguration.environment.toUpperCase();\n\n paymentContextPromise = self\n ._createVenmoPaymentContext(client)\n .then(function () {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.\" + analyticsCategory + \".presented\"\n );\n\n return client;\n })\n .catch(function (err) {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.\" + analyticsCategory + \".setup-failed\"\n );\n\n return Promise.reject(\n new BraintreeError({\n type: errors.VENMO_MOBILE_PAYMENT_CONTEXT_SETUP_FAILED.type,\n code: errors.VENMO_MOBILE_PAYMENT_CONTEXT_SETUP_FAILED.code,\n message: isValidationError(err)\n ? err.details.originalError[0].message\n : errors.VENMO_MOBILE_PAYMENT_CONTEXT_SETUP_FAILED.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n\n return ExtendedPromise.all([webLoginPromise, paymentContextPromise])\n .then(function (results) {\n var paymentContextResult = results[1]; // We only care about the returned value of the paymentContextPromise\n\n return Promise.resolve(paymentContextResult);\n })\n .catch(function (promiseErr) {\n // ExtendedPromise.all returns just one error and it's either which fails first/at all.\n return Promise.reject(promiseErr);\n });\n });\n }\n}\n\nfunction isValidationError(err) {\n return (\n err.details &&\n err.details.originalError &&\n err.details.originalError[0] &&\n err.details.originalError[0].extensions &&\n err.details.originalError[0].extensions.errorClass === \"VALIDATION\" &&\n err.details.originalError[0].extensions.errorType === \"user_error\"\n );\n}\n\nVenmo.prototype._createVenmoPaymentContext = function (\n client,\n cancelIfTokenizationInProgress\n) {\n var self = this;\n var promise, transactionDetails;\n var configuration = client.getConfiguration();\n var venmoConfiguration = configuration.gatewayConfiguration.payWithVenmo;\n var transactionDetailsPresent = false;\n var customerClientChannel = self._useAllowDesktopWebLogin\n ? \"NATIVE_WEB\"\n : \"MOBILE_WEB\";\n\n if (!this._shouldCreateVenmoPaymentContext) {\n return Promise.resolve();\n }\n\n if (this._shouldUseLegacyFlow) {\n promise = client\n .request({\n api: \"graphQLApi\",\n data: {\n query: graphqlQueries.LEGACY_CREATE_PAYMENT_CONTEXT_QUERY,\n variables: {\n input: {\n environment: this._mobilePollingContextEnvironment,\n intent: \"PAY_FROM_APP\",\n },\n },\n },\n })\n .then(function (response) {\n return response\n .data.createVenmoQRCodePaymentContext.venmoQRCodePaymentContext;\n });\n } else {\n // Merchants are not allowed to collect user addresses unless ECD (Enriched Customer Data) is enabled on the BT Control Panel.\n if (\n (this._collectCustomerBillingAddress ||\n this._collectCustomerShippingAddress) &&\n !venmoConfiguration.enrichedCustomerDataEnabled\n ) {\n return Promise.reject(new BraintreeError(errors.VENMO_ECD_DISABLED));\n }\n\n if (this._lineItems) {\n this._lineItems.forEach(function (item) {\n item.unitTaxAmount = item.unitTaxAmount || \"0\";\n });\n }\n transactionDetails = {\n subTotalAmount: this._subTotalAmount,\n discountAmount: this._discountAmount,\n taxAmount: this._taxAmount,\n shippingAmount: this._shippingAmount,\n totalAmount: this._totalAmount,\n lineItems: this._lineItems,\n };\n transactionDetailsPresent = Object.keys(transactionDetails).some(function (\n detail\n ) {\n return transactionDetails[detail] !== undefined; // eslint-disable-line no-undefined\n });\n\n promise = client\n .request({\n api: \"graphQLApi\",\n data: {\n query: graphqlQueries.CREATE_PAYMENT_CONTEXT_QUERY,\n variables: {\n input: {\n paymentMethodUsage: this._paymentMethodUsage,\n intent: \"CONTINUE\",\n customerClient: customerClientChannel,\n isFinalAmount: this._isFinalAmount,\n displayName: this._displayName,\n paysheetDetails: {\n collectCustomerBillingAddress:\n this._collectCustomerBillingAddress,\n collectCustomerShippingAddress:\n this._collectCustomerShippingAddress,\n transactionDetails: transactionDetailsPresent\n ? transactionDetails\n : undefined, // eslint-disable-line no-undefined\n },\n },\n },\n },\n })\n .then(function (response) {\n return response.data.createVenmoPaymentContext.venmoPaymentContext;\n });\n }\n\n return promise.then(function (context) {\n var expiredTime = new Date(context.expiresAt) - new Date(context.createdAt);\n var refreshIn = expiredTime * 0.6666;\n\n // prevents multiple setTimeouts from firing from separate calls\n // to create a payment context by canceling the previous one\n // if there is a pending call\n clearTimeout(self._refreshPaymentContextTimeout);\n self._refreshPaymentContextTimeout = setTimeout(function () {\n if (self._tokenizationInProgress) {\n return;\n }\n self._createVenmoPaymentContext(client, true);\n }, refreshIn);\n\n if (cancelIfTokenizationInProgress && self._tokenizationInProgress) {\n return;\n }\n\n self._venmoPaymentContextStatus = context.status;\n self._venmoPaymentContextId = context.id;\n });\n};\n\nVenmo.prototype.appSwitch = function (url) {\n if (this._deepLinkReturnUrl) {\n if (isIosWebviewInDeepLinkReturnUrlFlow()) {\n analytics.sendEvent(\n this._createPromise,\n \"venmo.appswitch.start.ios-webview\"\n );\n // Deep link URLs do not launch iOS apps from a webview when using window.open or PopupBridge.open.\n window.location.href = url;\n } else if (\n window.popupBridge &&\n typeof window.popupBridge.open === \"function\"\n ) {\n analytics.sendEvent(\n this._createPromise,\n \"venmo.appswitch.start.popup-bridge\"\n );\n window.popupBridge.open(url);\n } else {\n analytics.sendEvent(this._createPromise, \"venmo.appswitch.start.webview\");\n window.open(url);\n }\n } else {\n analytics.sendEvent(this._createPromise, \"venmo.appswitch.start.browser\");\n\n if (\n browserDetection.doesNotSupportWindowOpenInIos() ||\n this._shouldUseRedirectStrategy()\n ) {\n window.location.href = url;\n } else {\n window.open(url);\n }\n }\n};\n\nVenmo.prototype.getUrl = function () {\n return this._createPromise.then(\n function (client) {\n var configuration = client.getConfiguration();\n var params = {};\n var currentUrl =\n this._deepLinkReturnUrl ||\n window.location.href.replace(window.location.hash, \"\");\n var venmoConfiguration = configuration.gatewayConfiguration.payWithVenmo;\n var analyticsMetadata = configuration.analyticsMetadata;\n var accessToken = venmoConfiguration.accessToken;\n var braintreeData = {\n _meta: {\n version: analyticsMetadata.sdkVersion,\n integration: analyticsMetadata.integration,\n platform: analyticsMetadata.platform,\n sessionId: analyticsMetadata.sessionId,\n },\n };\n\n this._isDebug = configuration.isDebug;\n this._assetsUrl = configuration.gatewayConfiguration.assetsUrl;\n\n currentUrl = currentUrl.replace(/#*$/, \"\");\n\n /* eslint-disable camelcase */\n if (this._venmoPaymentContextId) {\n if (this._shouldUseLegacyFlow) {\n // NEXT_MAJOR_VERSION stop adding the context id to the access token.\n // the context id is placed here for backwards compatiblity\n // with versions of the venmo app that did not support\n // pulling the resource id off of the query params\n accessToken += \"|pcid:\" + this._venmoPaymentContextId;\n } else {\n params.resource_id = this._venmoPaymentContextId;\n }\n }\n\n if (this._shouldIncludeReturnUrls() || this._useAllowDesktopWebLogin) {\n if (this._useAllowDesktopWebLogin) {\n currentUrl =\n this._assetsUrl + \"/web/\" + VERSION + \"/html/redirect-frame.html\";\n }\n params[\"x-success\"] = currentUrl + \"#venmoSuccess=1\";\n params[\"x-cancel\"] = currentUrl + \"#venmoCancel=1\";\n params[\"x-error\"] = currentUrl + \"#venmoError=1\";\n } else {\n params[\"x-success\"] = \"NOOP\";\n params[\"x-cancel\"] = \"NOOP\";\n params[\"x-error\"] = \"NOOP\";\n }\n\n if (!this._allowAndroidRecreation) {\n params.allowAndroidRecreation = 0;\n } else {\n params.allowAndroidRecreation = 1;\n }\n\n params.ua = window.navigator.userAgent;\n params.braintree_merchant_id =\n this._profileId || venmoConfiguration.merchantId;\n params.braintree_access_token = accessToken;\n params.braintree_environment = venmoConfiguration.environment;\n params.braintree_sdk_data = btoa(JSON.stringify(braintreeData));\n\n return (\n getVenmoUrl({\n useAllowDesktopWebLogin: this._useAllowDesktopWebLogin,\n mobileWebFallBack: this._mobileWebFallBack,\n }) +\n \"?\" +\n querystring.stringify(params)\n );\n }.bind(this)\n );\n};\n\n/**\n * Returns a boolean indicating whether the current browser supports Venmo as a payment method. Please note that iOS Chrome is not supported when the Venmo button is rendered in an iFrame.\n *\n * If `options.allowNewBrowserTab` is false when calling {@link module:braintree-web/venmo.create|venmo.create}, this method will return true only for browsers known to support returning from the Venmo app to the same browser tab. Currently, this is limited to iOS Safari and Android Chrome.\n * If `options.allowWebviews` is false when calling {@link module:braintree-web/venmo.create|venmo.create}, this method will return true only for mobile browsers that are not webviews.\n * @public\n * @returns {boolean} True if the current browser is supported, false if not.\n */\nVenmo.prototype.isBrowserSupported = function () {\n return isBrowserSupported.isBrowserSupported({\n allowNewBrowserTab: this._allowNewBrowserTab,\n allowWebviews: this._allowWebviews,\n allowDesktop: this._allowDesktop,\n allowDesktopWebLogin: this._allowDesktopWebLogin,\n });\n};\n\n/**\n * Returns a boolean indicating whether a Venmo tokenization result is ready to be processed immediately.\n *\n * This method should be called after initialization to see if the result of Venmo authorization is available. If it returns true, call {@link Venmo#tokenize|tokenize} immediately to process the results.\n *\n * @public\n * @returns {boolean} True if the results of Venmo payment authorization are available and ready to process.\n */\nVenmo.prototype.hasTokenizationResult = function () {\n return this._hasTokenizationResult();\n};\n\n// a private version that lets us pass in a custom hash\n// when listening on a hashchange event\nVenmo.prototype._hasTokenizationResult = function (hash) {\n var params = getFragmentParameters(hash);\n\n return (\n typeof (params.venmoSuccess || params.venmoError || params.venmoCancel) !==\n \"undefined\"\n );\n};\n\nVenmo.prototype._shouldIncludeReturnUrls = function () {\n // when a deep link return url is passed, we should always\n // respect it and include the return urls so the venmo app\n // can app switch back to it\n if (this._deepLinkReturnUrl) {\n return true;\n }\n\n // when the sdk is initialized within an iframe, it's\n // impossible to return back to the correct place automatically\n // without also setting a deepLinkReturnUrl. When the return\n // urls are omitted, the Venmo app prompts the user to return\n // manually.\n return !this._cannotHaveReturnUrls;\n};\n\nVenmo.prototype._isDesktop = function () {\n return !(browserDetection.isIos() || browserDetection.isAndroid());\n};\n\n/**\n * Launches the Venmo flow and returns a nonce payload.\n *\n * If {@link Venmo#hasTokenizationResult|hasTokenizationResult} returns true, calling tokenize will immediately process and return the results without initiating the Venmo payment authorization flow.\n *\n * Only one Venmo flow can be active at a time. One way to achieve this is to disable your Venmo button while the flow is open.\n * @public\n * @param {object} [options] Options for tokenization.\n * @param {number} [options.processResultsDelay=500] The amount of time in milliseconds to delay processing the results. In most cases, this value should be left as the default.\n * @param {callback} [callback] The second argument, <code>data</code>, is a {@link Venmo~tokenizePayload|tokenizePayload}. If no callback is provided, the method will return a Promise that resolves with a {@link Venmo~tokenizePayload|tokenizePayload}.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * button.addEventListener('click', function () {\n * // Disable the button so that we don't attempt to open multiple popups.\n * button.setAttribute('disabled', 'disabled');\n *\n * // Because tokenize opens a new window, this must be called\n * // as a result of a user action, such as a button click.\n * venmoInstance.tokenize().then(function (payload) {\n * // Submit payload.nonce to your server\n * // Use payload.username to get the Venmo username and display any UI\n * }).catch(function (tokenizeError) {\n * // Handle flow errors or premature flow closure\n * switch (tokenizeErr.code) {\n * case 'VENMO_APP_CANCELED':\n * console.log('User canceled Venmo flow.');\n * break;\n * case 'VENMO_CANCELED':\n * console.log('User canceled Venmo, or Venmo app is not available.');\n * break;\n * default:\n * console.error('Error!', tokenizeErr);\n * }\n * }).then(function () {\n * button.removeAttribute('disabled');\n * });\n * });\n */\nVenmo.prototype.tokenize = function (options) {\n var self = this;\n var tokenizationPromise;\n\n options = options || {};\n\n if (this._tokenizationInProgress === true) {\n return Promise.reject(\n new BraintreeError(errors.VENMO_TOKENIZATION_REQUEST_ACTIVE)\n );\n }\n\n this._tokenizationInProgress = true;\n if (this._useDesktopQRFlow) {\n // for the desktop flow, we create a venmo payment\n // context and then present a qr code modal to the\n // customer and they will open up their venmo app\n // and scan it and approve the purchase on their\n // mobile device. The sdk will start polling\n // in order to determine when the status of the\n // payment context has updated and then pass the\n // resulting nonce back to the merchant.\n tokenizationPromise = this._tokenizeForDesktopQRFlow(options);\n } else if (this._useAllowDesktopWebLogin) {\n /**\n * For Desktop Web Login, we open a browser popup to allow for authorization. Once authorized, the redirect urls are used by Venmo, and we query the API for a payment context status update.\n *\n * - Payment context is created on initialization\n * - Popup is opened to Venmo login url.\n * - The payment is authorized or canceled, and the popup is closed\n * - Once the popup is closed, we query the API for a payment context status update\n *\n * This is an alternate, opt-in flow to be used the Desktop QR Flow is not desired for Pay with Venmo desktop experiences.\n */\n tokenizationPromise = this._tokenizeWebLoginWithRedirect();\n } else if (this._cannotHaveReturnUrls) {\n // in the manual return strategy, we create the payment\n // context on initialization, then continually poll once\n // the app switch begins until we get a response indiciating\n // the payment context was approved by the customer on the\n // Venmo app. The payment context response also includes a\n // nonce. There are 2 cases where we use the manual return\n // strategy:\n // 1. the sdk is instantiated in an iframe, because\n // the venmo app is unable to redirect automatically\n // when that is the case so we rely on the customer\n // to do a manual redirect and continunally poll for\n // updates on the payment context to get the nonce\n // 2. same deal for when `requireManualReturn` is configured\n tokenizationPromise = this._tokenizeForMobileWithManualReturn();\n } else {\n // the default mobile flow is to app switch to the\n // venmo app, and then have the venmo app switch\n // back to the page with the venmo nonce details\n // encoded into the hash portion of the url. If\n // `paymentMethodUsage` is provided when instantiating\n // the sdk, we also create a payment context and pass\n // the resource id to the Venmo app during the app switch.\n // Once we get a succesful return, we ping the payment\n // context query to get any additional data needed\n // to send back to the merchant.\n tokenizationPromise =\n this._tokenizeForMobileWithHashChangeListeners(options);\n }\n\n return tokenizationPromise\n .then(function (payload) {\n return self._createPromise\n .then(function (client) {\n return self._createVenmoPaymentContext(client);\n })\n .then(function () {\n self._tokenizationInProgress = false;\n\n return formatTokenizePayload(payload);\n });\n })\n .catch(function (err) {\n return self._createPromise\n .then(function (client) {\n // We create a new Payment Context because if the last one failed, then presumably we don't want to use it again.\n // On the first pass, we create the payment context at initialization, and since we used that first one we now need to create a new one\n // for the next time someone tries to tokenize.\n return self._createVenmoPaymentContext(client);\n })\n .then(function () {\n self._tokenizationInProgress = false;\n\n return Promise.reject(err);\n });\n });\n};\n\n/**\n * Cancels the venmo tokenization process\n *\n * @public\n * @function Venmo~cancelTokenization\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * venmoTokenizeButton.addEventListener('click', function () {\n * venmoInstance.tokenize().then(function (payload) {\n * // handle payload\n * }).catch(function (err) {\n * if (err.code === 'VENMO_TOKENIZATION_CANCELED_BY_MERCHANT') {\n * // tokenization was canceled by calling cancelTokenization\n * }\n * });\n * });\n *\n * venmoCancelButton.addEventListener('click', function () {\n * // Hide the button when the venmo flow is not in progress\n * venmoCancelButton.style.display = \"none\";\n *\n * venmoInstance.cancelTokenization().then(function () {\n * // done canceling the flow\n * }).catch(function (err) {\n * // should only get here if there is no tokenization in progress\n * });\n * });\n */\nVenmo.prototype.cancelTokenization = function () {\n if (!this._tokenizationInProgress) {\n return Promise.reject(\n new BraintreeError(errors.VENMO_TOKENIZATION_REQUEST_NOT_ACTIVE)\n );\n }\n\n this._removeVisibilityEventListener();\n\n // important to reject the tokenization promise first\n // so the tokenize method rejects with this error\n // rather than a customer canceled error in the mobile\n // polling and desktop flows\n if (this._tokenizePromise) {\n this._tokenizePromise.reject(\n new BraintreeError(errors.VENMO_TOKENIZATION_CANCELED_BY_MERCHANT)\n );\n }\n\n return Promise.all([\n this._cancelMobilePaymentContext(),\n this._cancelVenmoDesktopContext(),\n ]);\n};\n\nVenmo.prototype._tokenizeWebLoginWithRedirect = function () {\n var self = this;\n\n analytics.sendEvent(self._createPromise, \"venmo.tokenize.web-login.start\");\n this._tokenizePromise = new ExtendedPromise();\n\n return this.getUrl().then(function (url) {\n desktopWebLogin\n .runWebLogin({\n checkForStatusChange:\n self._checkPaymentContextStatusAndProcessResult.bind(self),\n cancelTokenization: self.cancelTokenization.bind(self),\n frameServiceInstance: self._frameServiceInstance,\n venmoUrl: url,\n debug: self._isDebug,\n checkPaymentContextStatus: self._checkPaymentContextStatus.bind(self),\n })\n .then(function (payload) {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.tokenize.web-login.success\"\n );\n\n self._tokenizePromise.resolve({\n paymentMethodNonce: payload.paymentMethodId,\n username: payload.userName,\n payerInfo: payload.payerInfo,\n id: self._venmoPaymentContextId,\n });\n })\n .catch(function (err) {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.tokenize.web-login.failure\"\n );\n\n self._tokenizePromise.reject(err);\n });\n\n return self._tokenizePromise;\n });\n};\n\nVenmo.prototype._queryPaymentContextStatus = function (id) {\n var self = this;\n\n return this._createPromise\n .then(function (client) {\n var query = self._shouldUseLegacyFlow\n ? graphqlQueries.LEGACY_VENMO_PAYMENT_CONTEXT_STATUS_QUERY\n : graphqlQueries.VENMO_PAYMENT_CONTEXT_STATUS_QUERY;\n\n return client.request({\n api: \"graphQLApi\",\n data: {\n query: query,\n variables: {\n id: id,\n },\n },\n });\n })\n .then(function (response) {\n return response.data.node;\n });\n};\n\n/**\n * Queries the GraphQL API to get the payment context and process the status. Retries until there is an update to the payment context status.\n * @name Venmo~checkPaymentContextStatusAndProcessResult\n * @ignore\n * @param {number} retryCount The counter for tracking number of retries made against the API.\n * @returns {Promise} Returns a promise\n */\nVenmo.prototype._checkPaymentContextStatusAndProcessResult = function (\n retryCount\n) {\n var self = this;\n\n return self._checkPaymentContextStatus().then(function (node) {\n var resultStatus = node.status;\n\n if (resultStatus !== self._venmoPaymentContextStatus) {\n self._venmoPaymentContextStatus = resultStatus;\n\n analytics.sendEvent(\n self._createPromise,\n \"venmo.tokenize.web-login.status-change\"\n );\n\n switch (resultStatus) {\n case \"APPROVED\":\n return Promise.resolve(node);\n case \"CANCELED\":\n return Promise.reject(\n new BraintreeError(errors.VENMO_CUSTOMER_CANCELED)\n );\n case \"FAILED\":\n return Promise.reject(\n new BraintreeError(errors.VENMO_TOKENIZATION_FAILED)\n );\n default:\n }\n }\n\n return new Promise(function (resolve, reject) {\n if (retryCount < self._maxRetryCount) {\n retryCount++;\n\n return self\n ._checkPaymentContextStatusAndProcessResult(retryCount)\n .then(resolve)\n .catch(reject);\n }\n\n return reject(new BraintreeError(errors.VENMO_TOKENIZATION_FAILED));\n });\n });\n};\n\nVenmo.prototype._checkPaymentContextStatus = function () {\n var self = this;\n\n return self\n ._queryPaymentContextStatus(self._venmoPaymentContextId)\n .catch(function (networkError) {\n return Promise.reject(\n new BraintreeError({\n type: errors.VENMO_NETWORK_ERROR.type,\n code: errors.VENMO_NETWORK_ERROR.code,\n message: errors.VENMO_NETWORK_ERROR.message,\n details: networkError,\n })\n );\n })\n .then(function (node) {\n return Promise.resolve(node);\n });\n};\n\nVenmo.prototype._pollForStatusChange = function () {\n var self = this;\n\n if (Date.now() > self._mobilePollingContextExpiresIn) {\n return Promise.reject(\n new BraintreeError(errors.VENMO_MOBILE_POLLING_TOKENIZATION_TIMEOUT)\n );\n }\n\n return this._queryPaymentContextStatus(this._venmoPaymentContextId)\n .catch(function (networkError) {\n return Promise.reject(\n new BraintreeError({\n type: errors.VENMO_MOBILE_POLLING_TOKENIZATION_NETWORK_ERROR.type,\n code: errors.VENMO_MOBILE_POLLING_TOKENIZATION_NETWORK_ERROR.code,\n message:\n errors.VENMO_MOBILE_POLLING_TOKENIZATION_NETWORK_ERROR.message,\n details: {\n originalError: networkError,\n },\n })\n );\n })\n .then(function (node) {\n var newStatus = node.status;\n\n if (newStatus !== self._venmoPaymentContextStatus) {\n self._venmoPaymentContextStatus = newStatus;\n\n analytics.sendEvent(\n self._createPromise,\n \"venmo.tokenize.manual-return.status-change.\" +\n newStatus.toLowerCase()\n );\n\n switch (newStatus) {\n case \"EXPIRED\":\n case \"FAILED\":\n case \"CANCELED\":\n return Promise.reject(\n new BraintreeError(\n errors[\"VENMO_MOBILE_POLLING_TOKENIZATION_\" + newStatus]\n )\n );\n case \"APPROVED\":\n return Promise.resolve(node);\n case \"CREATED\":\n case \"SCANNED\":\n default:\n // any other statuses are irrelevant to the polling\n // and can just be ignored\n }\n }\n\n return new Promise(function (resolve, reject) {\n setTimeout(function () {\n self._pollForStatusChange().then(resolve).catch(reject);\n }, self._mobilePollingInterval);\n });\n });\n};\n\nVenmo.prototype._tokenizeForMobileWithManualReturn = function () {\n var self = this;\n\n analytics.sendEvent(\n this._createPromise,\n \"venmo.tokenize.manual-return.start\"\n );\n\n this._mobilePollingContextExpiresIn =\n Date.now() + this._mobilePollingExpiresThreshold;\n this._tokenizePromise = new ExtendedPromise();\n\n this._pollForStatusChange()\n .then(function (payload) {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.tokenize.manual-return.success\"\n );\n\n self._tokenizePromise.resolve({\n paymentMethodNonce: payload.paymentMethodId,\n username: payload.userName,\n payerInfo: payload.payerInfo,\n id: self._venmoPaymentContextId,\n });\n })\n .catch(function (err) {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.tokenize.manual-return.failure\"\n );\n\n self._tokenizePromise.reject(err);\n });\n\n return this.getUrl().then(function (url) {\n self.appSwitch(url);\n\n return self._tokenizePromise;\n });\n};\n\nVenmo.prototype._shouldUseRedirectStrategy = function () {\n if (!browserDetection.isIos()) {\n return false;\n }\n\n if (this._mobileWebFallBack === true) {\n return true;\n }\n\n return this._useRedirectForIOS;\n};\n\nVenmo.prototype._tokenizeForMobileWithHashChangeListeners = function (options) {\n var self = this;\n var resultProcessingInProgress, visibilityChangeListenerTimeout;\n\n if (this.hasTokenizationResult()) {\n return this.processHashChangeFlowResults();\n }\n\n analytics.sendEvent(this._createPromise, \"venmo.tokenize.mobile.start\");\n this._tokenizePromise = new ExtendedPromise();\n\n this._previousHash = window.location.hash;\n\n function completeFlow(hash) {\n var error;\n\n self\n .processHashChangeFlowResults(hash)\n .catch(function (err) {\n error = err;\n })\n .then(function (res) {\n if (\n !self._ignoreHistoryChanges &&\n window.location.hash !== self._previousHash\n ) {\n window.location.hash = self._previousHash;\n }\n self._removeVisibilityEventListener();\n\n if (error) {\n self._tokenizePromise.reject(error);\n } else {\n self._tokenizePromise.resolve(res);\n }\n delete self._tokenizePromise;\n });\n }\n\n // The Venmo SDK app switches back with the results of the\n // tokenization encoded in the hash\n this._onHashChangeListener = function (e) {\n var hash = e.newURL.split(\"#\")[1];\n\n if (!self._hasTokenizationResult(hash)) {\n return;\n }\n\n resultProcessingInProgress = true;\n clearTimeout(visibilityChangeListenerTimeout);\n completeFlow(hash);\n };\n\n window.addEventListener(\"hashchange\", this._onHashChangeListener, false);\n\n // Subscribe to document visibility change events to detect when app switch\n // has returned. Acts as a fallback for the hashchange listener and catches\n // the cancel case via manual app switch back\n this._visibilityChangeListener = function () {\n var delay =\n options.processResultsDelay || constants.DEFAULT_PROCESS_RESULTS_DELAY;\n\n if (!window.document.hidden) {\n if (!resultProcessingInProgress) {\n visibilityChangeListenerTimeout = setTimeout(completeFlow, delay);\n }\n }\n };\n\n return this.getUrl().then(function (url) {\n self.appSwitch(url);\n\n // Add a brief delay to ignore visibility change events that occur right before app switch\n setTimeout(function () {\n window.document.addEventListener(\n documentVisibilityChangeEventName(),\n self._visibilityChangeListener\n );\n }, constants.DOCUMENT_VISIBILITY_CHANGE_EVENT_DELAY);\n\n return self._tokenizePromise;\n });\n};\n\nVenmo.prototype._tokenizeForDesktopQRFlow = function () {\n var self = this;\n\n analytics.sendEvent(this._createPromise, \"venmo.tokenize.desktop.start\");\n\n this._tokenizePromise = new ExtendedPromise();\n\n this._createPromise\n .then(function () {\n return self._venmoDesktopInstance.launchDesktopFlow();\n })\n .then(function (payload) {\n self._venmoDesktopInstance.hideDesktopFlow();\n\n analytics.sendEvent(\n self._createPromise,\n \"venmo.tokenize.desktop.success\"\n );\n\n self._tokenizePromise.resolve(payload);\n })\n .catch(function (err) {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.tokenize.desktop.failure\"\n );\n\n if (self._venmoDesktopInstance) {\n self._venmoDesktopInstance.hideDesktopFlow();\n }\n\n if (err && err.reason === \"CUSTOMER_CANCELED\") {\n self._tokenizePromise.reject(\n new BraintreeError(errors.VENMO_DESKTOP_CANCELED)\n );\n\n return;\n }\n\n self._tokenizePromise.reject(\n new BraintreeError({\n type: errors.VENMO_DESKTOP_UNKNOWN_ERROR.type,\n code: errors.VENMO_DESKTOP_UNKNOWN_ERROR.code,\n message: errors.VENMO_DESKTOP_UNKNOWN_ERROR.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n\n return this._tokenizePromise;\n};\n\nVenmo.prototype._cancelMobilePaymentContext = function () {\n var self = this;\n\n return this._createPromise.then(function (client) {\n var query;\n\n if (self._venmoPaymentContextId) {\n query = self._shouldUseLegacyFlow\n ? graphqlQueries.LEGACY_UPDATE_PAYMENT_CONTEXT_QUERY\n : graphqlQueries.UPDATE_PAYMENT_CONTEXT_QUERY;\n\n return client.request({\n api: \"graphQLApi\",\n data: {\n query: query,\n variables: {\n input: {\n id: self._venmoPaymentContextId,\n status: \"CANCELED\",\n },\n },\n },\n });\n }\n\n return Promise.resolve();\n });\n};\n\nVenmo.prototype._cancelVenmoDesktopContext = function () {\n var self = this;\n\n return this._createPromise.then(function () {\n if (self._venmoDesktopInstance) {\n self._venmoDesktopInstance.updateVenmoDesktopPaymentContext(\"CANCELED\");\n }\n\n return Promise.resolve();\n });\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/venmo.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * venmoInstance.teardown();\n * @example <caption>With callback</caption>\n * venmoInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nVenmo.prototype.teardown = function () {\n var self = this;\n\n this._removeVisibilityEventListener();\n\n return this._createPromise.then(\n function () {\n if (self._venmoDesktopInstance) {\n self._venmoDesktopInstance.teardown();\n }\n\n clearTimeout(self._refreshPaymentContextTimeout);\n self._cancelMobilePaymentContext();\n\n convertMethodsToError(this, methods(Venmo.prototype));\n }.bind(this)\n );\n};\n\nVenmo.prototype._removeVisibilityEventListener = function () {\n window.removeEventListener(\"hashchange\", this._onHashChangeListener);\n window.document.removeEventListener(\n documentVisibilityChangeEventName(),\n this._visibilityChangeListener\n );\n\n delete this._visibilityChangeListener;\n delete this._onHashChangeListener;\n};\n\n/**\n * The hash parameter in this function is optional. If no hash parameter is passed, the `getFragmentParameters` function will default to the hash present in the website's URL instead.\n *\n * There are two scenarios where this method is called:\n *\n * 1. When called within a browser that is capable of returning to the same tab that started the Venmo flow, we set up a listener to detect hash changes in the url. Part of the return to the merchant's website from the Venmo app includes encoding the details of the purchase in the hash of the url. The callback is invoked and the hash is pulled off from the event payload. The reason we pull the hash off of the event payload instead of pulling it directly from the URL is because sometimes a single page app will use the hash parameter for it's routing system, and it's possible to hit a race condition where the routing code has already removed the Venmo specific attributes from the hash before we are able to pull it off the url. Grabbing the hash from the event handler instead ensures we get the Venmo details, no matter what the url is converted to.\n * 2. The other scenario is for browsers that cannot return to the same tab, and instead the Venmo app must open a new tab. Since there is no hash listener to pull the hash from, we pull the hash details directly from the url using the `getFragmentParameters` method.\n *\n * @ignore\n * @param {string} [hash] Optionally provided browser url hash.\n * @returns {Promise} Returns a promise\n */\nVenmo.prototype.processHashChangeFlowResults = function (hash) {\n var self = this;\n var params = getFragmentParameters(hash);\n\n // NEXT_MAJOR_VERSION only rely on payment context status call and stop relying on the\n // content of the hash\n\n return new Promise(function (resolve, reject) {\n if (!self._shouldUseLegacyFlow) {\n self\n ._pollForStatusChange()\n .then(function (payload) {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.appswitch.handle.payment-context-status-query.success\"\n );\n\n return resolve({\n paymentMethodNonce: payload.paymentMethodId,\n username: payload.userName,\n payerInfo: payload.payerInfo,\n id: self._venmoPaymentContextId,\n });\n })\n .catch(function (err) {\n if (\n err.type === errors.VENMO_MOBILE_POLLING_TOKENIZATION_CANCELED.type\n ) {\n // We want to reject in this case because if it the process was canceled, we don't want to take the happy path\n reject(err);\n }\n\n analytics.sendEvent(\n self._createPromise,\n \"venmo.process-results.payment-context-status-query-failed\"\n );\n // If the polling request fails, but not because of cancelization, we will rely on the params provided from the hash\n resolve(params);\n });\n } else if (params.venmoSuccess) {\n analytics.sendEvent(\n self._createPromise,\n \"venmo.appswitch.handle.success\"\n );\n\n resolve(params);\n } else if (params.venmoError) {\n analytics.sendEvent(self._createPromise, \"venmo.appswitch.handle.error\");\n reject(\n new BraintreeError({\n type: errors.VENMO_APP_FAILED.type,\n code: errors.VENMO_APP_FAILED.code,\n message: errors.VENMO_APP_FAILED.message,\n details: {\n originalError: {\n message: decodeURIComponent(params.errorMessage),\n code: params.errorCode,\n },\n },\n })\n );\n } else if (params.venmoCancel) {\n analytics.sendEvent(self._createPromise, \"venmo.appswitch.handle.cancel\");\n reject(new BraintreeError(errors.VENMO_APP_CANCELED));\n } else {\n // User has either manually switched back to browser, or app is not available for app switch\n analytics.sendEvent(\n self._createPromise,\n \"venmo.appswitch.cancel-or-unavailable\"\n );\n reject(new BraintreeError(errors.VENMO_CANCELED));\n }\n\n self._clearFragmentParameters();\n });\n};\n\nVenmo.prototype._clearFragmentParameters = function () {\n if (this._ignoreHistoryChanges) {\n return;\n }\n\n if (\n typeof window.history.replaceState === \"function\" &&\n window.location.hash\n ) {\n history.pushState(\n {},\n \"\",\n window.location.href.slice(0, window.location.href.indexOf(\"#\"))\n );\n }\n};\n\nfunction getFragmentParameters(hash) {\n var keyValuesArray = (hash || window.location.hash.substring(1)).split(\"&\");\n\n var parsedParams = keyValuesArray.reduce(function (toReturn, keyValue) {\n var parts = keyValue.split(\"=\");\n // some Single Page Apps may pre-pend a / to the first value\n // in the hash, assuming it's a route in their app\n // instead of information from Venmo, this removes all\n // non-alphanumeric characters from the keys in the params\n var decodedKey = decodeURIComponent(parts[0]).replace(/\\W/g, \"\");\n var key = snakeCaseToCamelCase(decodedKey);\n var value = decodeURIComponent(parts[1]);\n\n toReturn[key] = value;\n\n return toReturn;\n }, {});\n\n if (parsedParams.resourceId) {\n parsedParams.id = parsedParams.resourceId;\n }\n\n return parsedParams;\n}\n\nfunction formatUserName(username) {\n username = username || \"\";\n\n // NEXT_MAJOR_VERSION the web sdks have a prepended @ sign\n // but the ios and android ones do not. This should be standardized\n return \"@\" + username.replace(\"@\", \"\");\n}\n\nfunction formatTokenizePayload(payload) {\n var formattedPayload = {\n nonce: payload.paymentMethodNonce,\n type: \"VenmoAccount\",\n details: {\n username: formatUserName(payload.username),\n paymentContextId: payload.id,\n },\n };\n\n if (payload.payerInfo) {\n formattedPayload.details.payerInfo = payload.payerInfo;\n formattedPayload.details.payerInfo.userName = formatUserName(\n payload.payerInfo.userName\n );\n }\n\n return formattedPayload;\n}\n\n// From https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API\nfunction documentVisibilityChangeEventName() {\n var visibilityChange;\n\n if (typeof window.document.hidden !== \"undefined\") {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = \"visibilitychange\";\n } else if (typeof window.document.msHidden !== \"undefined\") {\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof window.document.webkitHidden !== \"undefined\") {\n visibilityChange = \"webkitvisibilitychange\";\n }\n\n return visibilityChange;\n}\n\nfunction isIosWebviewInDeepLinkReturnUrlFlow() {\n // we know it's a webview because this flow only gets\n // used when checking the deep link flow\n // test the platform here to get around custom useragents\n return (\n window.navigator.platform &&\n /iPhone|iPad|iPod/.test(window.navigator.platform)\n );\n}\n\nmodule.exports = wrapPromise.wrapPrototype(Venmo);\n\n},{\"../lib/analytics\":132,\"../lib/braintree-error\":137,\"../lib/convert-methods-to-error\":140,\"../lib/in-iframe\":163,\"../lib/is-verified-domain\":166,\"../lib/methods\":168,\"../lib/querystring\":170,\"../lib/snake-case-to-camel-case\":172,\"./external/\":226,\"./external/queries\":227,\"./shared/browser-detection\":230,\"./shared/constants\":231,\"./shared/errors\":232,\"./shared/get-venmo-url\":234,\"./shared/supports-venmo\":235,\"./shared/web-login-backdrop\":236,\"@braintree/extended-promise\":31,\"@braintree/wrap-promise\":40}],238:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Visa Checkout - Creation Error Codes\n * @description Errors that occur when [creating the Visa Checkout component](./module-braintree-web_venmo.html#.create).\n * @property {MERCHANT} VISA_CHECKOUT_NOT_ENABLED Occurs when Visa Checkout is not enabled in the Braintree control panel.\n */\n\n/**\n * @name BraintreeError.Visa Checkout - createInitOptions Error Codes\n * @description Errors that occur when using the [`createInitOptions` method](./VisaCheckout.html#createInitOptions).\n * @property {MERCHANT} VISA_CHECKOUT_INIT_OPTIONS_REQUIRED Occurs when no options are provided to method.\n */\n\n/**\n * @name BraintreeError.Visa Checkout - tokenize Error Codes\n * @description Errors that occur when using the [`tokenize` method](./VisaCheckout.html#tokenize).\n * @property {MERCHANT} VISA_CHECKOUT_PAYMENT_REQUIRED Occurs when no payment data is not provided.\n * @property {NETWORK} VISA_CHECKOUT_TOKENIZATION Occurs when tokenization fails.\n */\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\n\nmodule.exports = {\n VISA_CHECKOUT_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"VISA_CHECKOUT_NOT_ENABLED\",\n message: \"Visa Checkout is not enabled for this merchant.\",\n },\n VISA_CHECKOUT_INIT_OPTIONS_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"VISA_CHECKOUT_INIT_OPTIONS_REQUIRED\",\n message: \"initOptions requires an object.\",\n },\n VISA_CHECKOUT_PAYMENT_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"VISA_CHECKOUT_PAYMENT_REQUIRED\",\n message: \"tokenize requires callid, encKey, and encPaymentData.\",\n },\n VISA_CHECKOUT_TOKENIZATION: {\n type: BraintreeError.types.NETWORK,\n code: \"VISA_CHECKOUT_TOKENIZATION\",\n message:\n \"A network error occurred when processing the Visa Checkout payment.\",\n },\n};\n\n},{\"../lib/braintree-error\":137}],239:[function(_dereq_,module,exports){\n\"use strict\";\n\n/**\n * @module braintree-web/visa-checkout\n * @description Processes Visa Checkout. *This component is currently in beta and is subject to change.*\n */\n\nvar basicComponentVerification = _dereq_(\"../lib/basic-component-verification\");\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar createDeferredClient = _dereq_(\"../lib/create-deferred-client\");\nvar createAssetsUrl = _dereq_(\"../lib/create-assets-url\");\nvar VisaCheckout = _dereq_(\"./visa-checkout\");\nvar analytics = _dereq_(\"../lib/analytics\");\nvar errors = _dereq_(\"./errors\");\nvar VERSION = \"3.103.0\";\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {callback} [callback] The second argument, `data`, is the {@link VisaCheckout} instance. If no callback is provided, `create` returns a promise that resolves with the {@link VisaCheckout} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"Visa Checkout\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n return createDeferredClient.create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n });\n })\n .then(function (client) {\n options.client = client;\n\n if (\n !options.client.getConfiguration().gatewayConfiguration.visaCheckout\n ) {\n return Promise.reject(\n new BraintreeError(errors.VISA_CHECKOUT_NOT_ENABLED)\n );\n }\n\n analytics.sendEvent(options.client, \"visacheckout.initialized\");\n\n return new VisaCheckout(options);\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `{@pkg version}`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/analytics\":132,\"../lib/basic-component-verification\":135,\"../lib/braintree-error\":137,\"../lib/create-assets-url\":142,\"../lib/create-deferred-client\":144,\"./errors\":238,\"./visa-checkout\":240,\"@braintree/wrap-promise\":40}],240:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar BraintreeError = _dereq_(\"../lib/braintree-error\");\nvar analytics = _dereq_(\"../lib/analytics\");\nvar errors = _dereq_(\"./errors\");\nvar jsonClone = _dereq_(\"../lib/json-clone\");\nvar methods = _dereq_(\"../lib/methods\");\nvar convertMethodsToError = _dereq_(\"../lib/convert-methods-to-error\");\nvar wrapPromise = _dereq_(\"@braintree/wrap-promise\");\nvar cardTypeTransformMap = {\n Visa: \"VISA\",\n MasterCard: \"MASTERCARD\",\n Discover: \"DISCOVER\",\n \"American Express\": \"AMEX\",\n};\n\n/**\n * Visa Checkout Address object.\n * @typedef {object} VisaCheckout~Address\n * @property {string} countryCode The customer's country code.\n * @property {string} extendedAddress The customer's extended address.\n * @property {string} firstName The customer's first name.\n * @property {string} lastName The customer's last name.\n * @property {string} locality The customer's locality.\n * @property {string} postalCode The customer's postal code.\n * @property {string} region The customer's region.\n * @property {string} streetAddress The customer's street address.\n * @property {string} phoneNumber The customer's phone number.\n */\n\n/**\n * Visa Checkout UserData object.\n * @typedef {object} VisaCheckout~UserData\n * @property {string} userEmail The customer's email address.\n * @property {string} userFirstName The customer's first name.\n * @property {string} userLastName The customer's last name.\n * @property {string} userFullName The customer's full name.\n * @property {string} userName The customer's username.\n */\n\n/**\n * Visa Checkout tokenize payload.\n * @typedef {object} VisaCheckout~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {object} details Additional account details.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, always `VisaCheckoutCard`.\n * @property {VisaCheckout~Address} billingAddress The customer's billing address.\n * @property {VisaCheckout~Address} shippingAddress The customer's shipping address.\n * @property {VisaCheckout~UserData} userData Information about the customer.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * @class\n * @param {object} options The Visa Checkout {@link module:braintree-web/visa-checkout.create create} options.\n * @description <strong>Do not use this constructor directly. Use {@link module:braintree-web/visa-checkout.create|braintree-web.visa-checkout.create} instead.</strong>\n * @classdesc This class represents a Visa Checkout component produced by {@link module:braintree-web/visa-checkout.create|braintree-web/visa-checkout.create}. Instances of this class have methods for interacting with Visa Checkout's JavaScript library.\n */\nfunction VisaCheckout(options) {\n this._client = options.client;\n}\n\nfunction transformCardTypes(cardTypes) {\n return cardTypes.reduce(function (acc, type) {\n if (cardTypeTransformMap.hasOwnProperty(type)) {\n return acc.concat(cardTypeTransformMap[type]);\n }\n\n return acc;\n }, []);\n}\n\n/**\n * Creates an `initOptions` object from the passed `options`, applying properties that Braintree needs to transact Visa Checkout.\n *\n * Braintree will apply these properties if they do not exist on the given `options`:\n * - `apikey`\n * - `externalClientId`\n * - `settings.payment.cardBrands`\n *\n * Braintree will overwrite `settings.dataLevel = 'FULL'` to access the full payment method.\n * @public\n * @param {object} options The base `initOptions` that will be used to init Visa Checkout.\n * @param {string} [options.apikey] The API key used to initialize Visa Checkout. When not supplied, Braintree will set this property.\n * @param {string} [options.externalClientId] The external client ID key used to initialize Visa Checkout. When not supplied, Braintree will set this property.\n * @param {object} [options.settings] The settings object used to initialize Visa Checkout.\n * @param {string} [options.settings.dataLevel] The data level used to initialize Visa Checkout. Braintree will overwrite this property to 'FULL'.\n * @param {object} [options.settings.payment] The payment object used to initialize Visa Checkout.\n * @param {string[]} [options.settings.payment.cardBrands] The card brands that Visa Checkout will allow the customer to pay with. When not supplied, Braintree will set this property.\n * @returns {object} `initOptions` The `initOptions` that Visa Checkout should be initialized with.\n */\nVisaCheckout.prototype.createInitOptions = function (options) {\n var initOptions;\n var gatewayConfiguration =\n this._client.getConfiguration().gatewayConfiguration;\n var visaCheckoutConfiguration = gatewayConfiguration.visaCheckout;\n\n if (!options) {\n throw new BraintreeError(errors.VISA_CHECKOUT_INIT_OPTIONS_REQUIRED);\n }\n\n initOptions = jsonClone(options);\n initOptions.apikey = initOptions.apikey || visaCheckoutConfiguration.apikey;\n initOptions.encryptionKey = visaCheckoutConfiguration.encryptionKey;\n initOptions.externalClientId =\n initOptions.externalClientId || visaCheckoutConfiguration.externalClientId;\n initOptions.settings = initOptions.settings || {};\n initOptions.settings.dataLevel = \"FULL\";\n initOptions.settings.payment = initOptions.settings.payment || {};\n\n if (!initOptions.settings.payment.cardBrands) {\n initOptions.settings.payment.cardBrands = transformCardTypes(\n gatewayConfiguration.visaCheckout.supportedCardTypes\n );\n }\n\n return initOptions;\n};\n\n/**\n * Tokenizes the Visa Checkout payload, returning a payment method nonce.\n * @public\n * @param {object} payment The object that Visa Checkout supplies on `payment.success`.\n * @param {string} payment.callid Visa Checkout transaction ID associated with this payment.\n * @param {string} payment.encKey The encrypted key used to decrypt the payment data.\n * @param {string} payment.encPaymentData The encrypted payment data.\n * @param {callback} [callback] The second argument, <code>tokenizePayload</code> is a {@link VisaCheckout~tokenizePayload|tokenizePayload}. If no callback is provided, `tokenize` returns a promise that resolves with the {@link VisaCheckout~tokenizePayload|tokenizePayload}.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nVisaCheckout.prototype.tokenize = function (payment) {\n var self = this;\n\n if (!payment.callid || !payment.encKey || !payment.encPaymentData) {\n return Promise.reject(\n new BraintreeError(errors.VISA_CHECKOUT_PAYMENT_REQUIRED)\n );\n }\n\n return this._client\n .request({\n method: \"post\",\n endpoint: \"payment_methods/visa_checkout_cards\",\n data: {\n _meta: {\n source: \"visa-checkout\",\n },\n visaCheckoutCard: {\n callId: payment.callid,\n encryptedPaymentData: payment.encPaymentData,\n encryptedKey: payment.encKey,\n },\n },\n })\n .then(function (response) {\n analytics.sendEvent(self._client, \"visacheckout.tokenize.succeeded\");\n\n return response.visaCheckoutCards[0];\n })\n .catch(function (err) {\n analytics.sendEvent(self._client, \"visacheckout.tokenize.failed\");\n\n return Promise.reject(\n new BraintreeError({\n type: errors.VISA_CHECKOUT_TOKENIZATION.type,\n code: errors.VISA_CHECKOUT_TOKENIZATION.code,\n message: errors.VISA_CHECKOUT_TOKENIZATION.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/visa-checkout.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * visaCheckoutInstance.teardown();\n * @example <caption>With callback</caption>\n * visaCheckoutInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nVisaCheckout.prototype.teardown = function () {\n convertMethodsToError(this, methods(VisaCheckout.prototype));\n\n return Promise.resolve();\n};\n\nmodule.exports = wrapPromise.wrapPrototype(VisaCheckout);\n\n},{\"../lib/analytics\":132,\"../lib/braintree-error\":137,\"../lib/convert-methods-to-error\":140,\"../lib/json-clone\":167,\"../lib/methods\":168,\"./errors\":238,\"@braintree/wrap-promise\":40}]},{},[130])(130)\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", "module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\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 printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\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 ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\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 } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\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\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", "function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\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) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\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", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar throttle = function throttle(fn) {\n var threshold = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;\n var last;\n var timer;\n return function () {\n var now = +new Date();\n var timePassed = !!last && now < last + threshold;\n\n if (timePassed) {\n clearTimeout(timer);\n timer = setTimeout(function () {\n last = now;\n fn();\n }, threshold);\n } else {\n last = now;\n fn();\n }\n };\n};\n\nvar _default = throttle;\nexports.default = _default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _throttle = _interopRequireDefault(require(\"./throttle\"));\n\nfunction isEqualArray(a, b) {\n return a.length === b.length && a.every(function (item, index) {\n return item === b[index];\n });\n}\n\nvar Scrollspy =\n/*#__PURE__*/\nfunction (_React$Component) {\n (0, _inherits2.default)(Scrollspy, _React$Component);\n (0, _createClass2.default)(Scrollspy, null, [{\n key: \"propTypes\",\n get: function get() {\n return {\n items: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,\n currentClassName: _propTypes.default.string.isRequired,\n scrolledPastClassName: _propTypes.default.string,\n style: _propTypes.default.object,\n componentTag: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.elementType]),\n offset: _propTypes.default.number,\n rootEl: _propTypes.default.string,\n onUpdate: _propTypes.default.func\n };\n }\n }, {\n key: \"defaultProps\",\n get: function get() {\n return {\n items: [],\n currentClassName: '',\n style: {},\n componentTag: 'ul',\n offset: 0,\n onUpdate: function onUpdate() {}\n };\n }\n }]);\n\n function Scrollspy(props) {\n var _this;\n\n (0, _classCallCheck2.default)(this, Scrollspy);\n _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Scrollspy).call(this, props));\n _this.state = {\n targetItems: [],\n inViewState: [],\n isScrolledPast: [] // manually bind as ES6 does not apply this\n // auto binding as React.createClass does\n\n };\n _this._handleSpy = _this._handleSpy.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n (0, _createClass2.default)(Scrollspy, [{\n key: \"_initSpyTarget\",\n value: function _initSpyTarget(items) {\n var targetItems = items.map(function (item) {\n return document.getElementById(item);\n });\n return targetItems;\n } // https://github.com/makotot/react-scrollspy/pull/45\n\n }, {\n key: \"_fillArray\",\n value: function _fillArray(array, val) {\n var newArray = [];\n\n for (var i = 0, max = array.length; i < max; i++) {\n newArray[i] = val;\n }\n\n return newArray;\n }\n }, {\n key: \"_isScrolled\",\n value: function _isScrolled() {\n return this._getScrollDimension().scrollTop > 0;\n }\n }, {\n key: \"_getScrollDimension\",\n value: function _getScrollDimension() {\n var doc = document;\n var rootEl = this.props.rootEl;\n var scrollTop = rootEl ? doc.querySelector(rootEl).scrollTop : doc.documentElement.scrollTop || doc.body.parentNode.scrollTop || doc.body.scrollTop;\n var scrollHeight = rootEl ? doc.querySelector(rootEl).scrollHeight : doc.documentElement.scrollHeight || doc.body.parentNode.scrollHeight || doc.body.scrollHeight;\n return {\n scrollTop: scrollTop,\n scrollHeight: scrollHeight\n };\n }\n }, {\n key: \"_getElemsViewState\",\n value: function _getElemsViewState(targets) {\n var elemsInView = [];\n var elemsOutView = [];\n var viewStatusList = [];\n var targetItems = targets ? targets : this.state.targetItems;\n var hasInViewAlready = false;\n\n for (var i = 0, max = targetItems.length; i < max; i++) {\n var currentContent = targetItems[i];\n var isInView = hasInViewAlready ? false : this._isInView(currentContent);\n\n if (isInView) {\n hasInViewAlready = true;\n elemsInView.push(currentContent);\n } else {\n elemsOutView.push(currentContent);\n }\n\n var isLastItem = i === max - 1;\n\n var isScrolled = this._isScrolled(); // https://github.com/makotot/react-scrollspy/pull/26#issue-167413769\n\n\n var isLastShortItemAtBottom = this._isAtBottom() && this._isInView(currentContent) && !isInView && isLastItem && isScrolled;\n\n if (isLastShortItemAtBottom) {\n elemsOutView.pop();\n elemsOutView.push.apply(elemsOutView, (0, _toConsumableArray2.default)(elemsInView));\n elemsInView = [currentContent];\n viewStatusList = this._fillArray(viewStatusList, false);\n isInView = true;\n }\n\n viewStatusList.push(isInView);\n }\n\n return {\n inView: elemsInView,\n outView: elemsOutView,\n viewStatusList: viewStatusList,\n scrolledPast: this.props.scrolledPastClassName && this._getScrolledPast(viewStatusList)\n };\n }\n }, {\n key: \"_isInView\",\n value: function _isInView(el) {\n if (!el) {\n return false;\n }\n\n var _this$props = this.props,\n rootEl = _this$props.rootEl,\n offset = _this$props.offset;\n var rootRect;\n\n if (rootEl) {\n rootRect = document.querySelector(rootEl).getBoundingClientRect();\n }\n\n var rect = el.getBoundingClientRect();\n var winH = rootEl ? rootRect.height : window.innerHeight;\n\n var _this$_getScrollDimen = this._getScrollDimension(),\n scrollTop = _this$_getScrollDimen.scrollTop;\n\n var scrollBottom = scrollTop + winH;\n var elTop = rootEl ? rect.top + scrollTop - rootRect.top + offset : rect.top + scrollTop + offset;\n var elBottom = elTop + el.offsetHeight;\n return elTop < scrollBottom && elBottom > scrollTop;\n }\n }, {\n key: \"_isAtBottom\",\n value: function _isAtBottom() {\n var rootEl = this.props.rootEl;\n\n var _this$_getScrollDimen2 = this._getScrollDimension(),\n scrollTop = _this$_getScrollDimen2.scrollTop,\n scrollHeight = _this$_getScrollDimen2.scrollHeight;\n\n var winH = rootEl ? document.querySelector(rootEl).getBoundingClientRect().height : window.innerHeight;\n var scrolledToBottom = scrollTop + winH >= scrollHeight;\n return scrolledToBottom;\n }\n }, {\n key: \"_getScrolledPast\",\n value: function _getScrolledPast(viewStatusList) {\n if (!viewStatusList.some(function (item) {\n return item;\n })) {\n return viewStatusList;\n }\n\n var hasFoundInView = false;\n var scrolledPastItems = viewStatusList.map(function (item) {\n if (item && !hasFoundInView) {\n hasFoundInView = true;\n return false;\n }\n\n return !hasFoundInView;\n });\n return scrolledPastItems;\n }\n }, {\n key: \"_spy\",\n value: function _spy(targets) {\n var _this2 = this;\n\n var elemensViewState = this._getElemsViewState(targets);\n\n var currentStatuses = this.state.inViewState;\n this.setState({\n inViewState: elemensViewState.viewStatusList,\n isScrolledPast: elemensViewState.scrolledPast\n }, function () {\n _this2._update(currentStatuses);\n });\n }\n }, {\n key: \"_update\",\n value: function _update(prevStatuses) {\n if (isEqualArray(this.state.inViewState, prevStatuses)) {\n return;\n }\n\n this.props.onUpdate(this.state.targetItems[this.state.inViewState.indexOf(true)]);\n }\n }, {\n key: \"_handleSpy\",\n value: function _handleSpy() {\n (0, _throttle.default)(this._spy(), 100);\n }\n }, {\n key: \"_initFromProps\",\n value: function _initFromProps() {\n var targetItems = this._initSpyTarget(this.props.items);\n\n this.setState({\n targetItems: targetItems\n });\n\n this._spy(targetItems);\n }\n }, {\n key: \"offEvent\",\n value: function offEvent() {\n var el = this.props.rootEl ? document.querySelector(this.props.rootEl) : window;\n el.removeEventListener('scroll', this._handleSpy);\n }\n }, {\n key: \"onEvent\",\n value: function onEvent() {\n var el = this.props.rootEl ? document.querySelector(this.props.rootEl) : window;\n el.addEventListener('scroll', this._handleSpy);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._initFromProps();\n\n this.onEvent();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.offEvent();\n }\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps() {\n this._initFromProps();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var Tag = this.props.componentTag;\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n scrolledPastClassName = _this$props2.scrolledPastClassName,\n style = _this$props2.style;\n var counter = 0;\n\n var items = _react.default.Children.map(children, function (child, idx) {\n var _classNames;\n\n if (!child) {\n return null;\n }\n\n var ChildTag = child.type;\n var isScrolledPast = scrolledPastClassName && _this3.state.isScrolledPast[idx];\n var childClass = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, \"\".concat(child.props.className), child.props.className), (0, _defineProperty2.default)(_classNames, \"\".concat(_this3.props.currentClassName), _this3.state.inViewState[idx]), (0, _defineProperty2.default)(_classNames, \"\".concat(_this3.props.scrolledPastClassName), isScrolledPast), _classNames));\n return _react.default.createElement(ChildTag, (0, _extends2.default)({}, child.props, {\n className: childClass,\n key: counter++\n }), child.props.children);\n });\n\n var itemClass = (0, _classnames.default)((0, _defineProperty2.default)({}, \"\".concat(className), className));\n return _react.default.createElement(Tag, {\n className: itemClass,\n style: style\n }, items);\n }\n }]);\n return Scrollspy;\n}(_react.default.Component);\n\nexports.default = Scrollspy;", "// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\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 if(s === 0) {\n r = g = b = l; // achromatic\n }\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: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})(Math);\n", "/**\r\n * Copyright (c) 2014-present, Facebook, Inc.\r\n * All rights reserved.\r\n *\r\n * This source code is licensed under the BSD-style license found in the\r\n * LICENSE file in the root directory of this source tree. An additional grant\r\n * of patent rights can be found in the PATENTS file in the same directory.\r\n *\r\n * @providesModule EventSubscription\r\n * @typechecks\r\n */\n'use strict';\n/**\r\n * EventSubscription represents a subscription to a particular event. It can\r\n * remove its own subscription.\r\n */\n\nvar EventSubscription = /*#__PURE__*/function () {\n /**\r\n * @param {EventSubscriptionVendor} subscriber the subscriber that controls\r\n * this subscription.\r\n */\n function EventSubscription(subscriber) {\n this.subscriber = subscriber;\n }\n /**\r\n * Removes this subscription from the subscriber that controls it.\r\n */\n\n\n var _proto = EventSubscription.prototype;\n\n _proto.remove = function remove() {\n if (this.subscriber) {\n this.subscriber.removeSubscription(this);\n this.subscriber = null;\n }\n };\n\n return EventSubscription;\n}();\n\nmodule.exports = EventSubscription;", "/**\r\n * Copyright (c) 2014-present, Facebook, Inc.\r\n * All rights reserved.\r\n *\r\n * This source code is licensed under the BSD-style license found in the\r\n * LICENSE file in the root directory of this source tree. An additional grant\r\n * of patent rights can be found in the PATENTS file in the same directory.\r\n *\r\n * @providesModule EmitterSubscription\r\n * @typechecks\r\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar EventSubscription = require(\"./EventSubscription.js\");\n/**\r\n * EmitterSubscription represents a subscription with listener and context data.\r\n */\n\n\nvar EmitterSubscription = /*#__PURE__*/function (_EventSubscription) {\n _inheritsLoose(EmitterSubscription, _EventSubscription);\n\n /**\r\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\r\n * this subscription\r\n * @param {function} listener - Function to invoke when the specified event is\r\n * emitted\r\n * @param {*} context - Optional context object to use when invoking the\r\n * listener\r\n */\n function EmitterSubscription(subscriber, listener, context) {\n var _this;\n\n _this = _EventSubscription.call(this, subscriber) || this;\n _this.listener = listener;\n _this.context = context;\n return _this;\n }\n\n return EmitterSubscription;\n}(EventSubscription);\n\nmodule.exports = EmitterSubscription;", "/**\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 */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n} : function (format) {};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;", "/**\r\n * Copyright (c) 2014-present, Facebook, Inc.\r\n * All rights reserved.\r\n *\r\n * This source code is licensed under the BSD-style license found in the\r\n * LICENSE file in the root directory of this source tree. An additional grant\r\n * of patent rights can be found in the PATENTS file in the same directory.\r\n *\r\n * @providesModule EventSubscriptionVendor\r\n * @typechecks\r\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\r\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\r\n * subscribed to a particular event type.\r\n */\n\n\nvar EventSubscriptionVendor = /*#__PURE__*/function () {\n function EventSubscriptionVendor() {\n this._subscriptionsForType = {};\n this._currentSubscription = null;\n }\n /**\r\n * Adds a subscription keyed by an event type.\r\n *\r\n * @param {string} eventType\r\n * @param {EventSubscription} subscription\r\n */\n\n\n var _proto = EventSubscriptionVendor.prototype;\n\n _proto.addSubscription = function addSubscription(eventType, subscription) {\n !(subscription.subscriber === this) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'The subscriber of the subscription is incorrectly set.') : invariant(false) : void 0;\n\n if (!this._subscriptionsForType[eventType]) {\n this._subscriptionsForType[eventType] = [];\n }\n\n var key = this._subscriptionsForType[eventType].length;\n\n this._subscriptionsForType[eventType].push(subscription);\n\n subscription.eventType = eventType;\n subscription.key = key;\n return subscription;\n }\n /**\r\n * Removes a bulk set of the subscriptions.\r\n *\r\n * @param {?string} eventType - Optional name of the event type whose\r\n * registered supscriptions to remove, if null remove all subscriptions.\r\n */\n ;\n\n _proto.removeAllSubscriptions = function removeAllSubscriptions(eventType) {\n if (eventType === undefined) {\n this._subscriptionsForType = {};\n } else {\n delete this._subscriptionsForType[eventType];\n }\n }\n /**\r\n * Removes a specific subscription. Instead of calling this function, call\r\n * `subscription.remove()` directly.\r\n *\r\n * @param {object} subscription\r\n */\n ;\n\n _proto.removeSubscription = function removeSubscription(subscription) {\n var eventType = subscription.eventType;\n var key = subscription.key;\n var subscriptionsForType = this._subscriptionsForType[eventType];\n\n if (subscriptionsForType) {\n delete subscriptionsForType[key];\n }\n }\n /**\r\n * Returns the array of subscriptions that are currently registered for the\r\n * given event type.\r\n *\r\n * Note: This array can be potentially sparse as subscriptions are deleted\r\n * from it when they are removed.\r\n *\r\n * TODO: This returns a nullable array. wat?\r\n *\r\n * @param {string} eventType\r\n * @return {?array}\r\n */\n ;\n\n _proto.getSubscriptionsForType = function getSubscriptionsForType(eventType) {\n return this._subscriptionsForType[eventType];\n };\n\n return EventSubscriptionVendor;\n}();\n\nmodule.exports = EventSubscriptionVendor;", "\"use strict\";\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 */\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;", "\"use strict\";\n\n/**\r\n * Copyright (c) 2014-present, Facebook, Inc.\r\n * All rights reserved.\r\n *\r\n * This source code is licensed under the BSD-style license found in the\r\n * LICENSE file in the root directory of this source tree. An additional grant\r\n * of patent rights can be found in the PATENTS file in the same directory.\r\n *\r\n * @providesModule BaseEventEmitter\r\n * @typechecks\r\n */\nvar EmitterSubscription = require(\"./EmitterSubscription.js\");\n\nvar EventSubscriptionVendor = require(\"./EventSubscriptionVendor.js\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar emptyFunction = require(\"fbjs/lib/emptyFunction\");\n/**\r\n * @class BaseEventEmitter\r\n * @description\r\n * An EventEmitter is responsible for managing a set of listeners and publishing\r\n * events to them when it is told that such events happened. In addition to the\r\n * data for the given event it also sends a event control object which allows\r\n * the listeners/handlers to prevent the default behavior of the given event.\r\n *\r\n * The emitter is designed to be generic enough to support all the different\r\n * contexts in which one might want to emit events. It is a simple multicast\r\n * mechanism on top of which extra functionality can be composed. For example, a\r\n * more advanced emitter may use an EventHolder and EventFactory.\r\n */\n\n\nvar BaseEventEmitter = /*#__PURE__*/function () {\n /**\r\n * @constructor\r\n */\n function BaseEventEmitter() {\n this._subscriber = new EventSubscriptionVendor();\n this._currentSubscription = null;\n }\n /**\r\n * Adds a listener to be invoked when events of the specified type are\r\n * emitted. An optional calling context may be provided. The data arguments\r\n * emitted will be passed to the listener function.\r\n *\r\n * TODO: Annotate the listener arg's type. This is tricky because listeners\r\n * can be invoked with varargs.\r\n *\r\n * @param {string} eventType - Name of the event to listen to\r\n * @param {function} listener - Function to invoke when the specified event is\r\n * emitted\r\n * @param {*} context - Optional context object to use when invoking the\r\n * listener\r\n */\n\n\n var _proto = BaseEventEmitter.prototype;\n\n _proto.addListener = function addListener(eventType, listener, context) {\n return this._subscriber.addSubscription(eventType, new EmitterSubscription(this._subscriber, listener, context));\n }\n /**\r\n * Similar to addListener, except that the listener is removed after it is\r\n * invoked once.\r\n *\r\n * @param {string} eventType - Name of the event to listen to\r\n * @param {function} listener - Function to invoke only once when the\r\n * specified event is emitted\r\n * @param {*} context - Optional context object to use when invoking the\r\n * listener\r\n */\n ;\n\n _proto.once = function once(eventType, listener, context) {\n var emitter = this;\n return this.addListener(eventType, function () {\n emitter.removeCurrentListener();\n listener.apply(context, arguments);\n });\n }\n /**\r\n * Removes all of the registered listeners, including those registered as\r\n * listener maps.\r\n *\r\n * @param {?string} eventType - Optional name of the event whose registered\r\n * listeners to remove\r\n */\n ;\n\n _proto.removeAllListeners = function removeAllListeners(eventType) {\n this._subscriber.removeAllSubscriptions(eventType);\n }\n /**\r\n * Provides an API that can be called during an eventing cycle to remove the\r\n * last listener that was invoked. This allows a developer to provide an event\r\n * object that can remove the listener (or listener map) during the\r\n * invocation.\r\n *\r\n * If it is called when not inside of an emitting cycle it will throw.\r\n *\r\n * @throws {Error} When called not during an eventing cycle\r\n *\r\n * @example\r\n * var subscription = emitter.addListenerMap({\r\n * someEvent: function(data, event) {\r\n * console.log(data);\r\n * emitter.removeCurrentListener();\r\n * }\r\n * });\r\n *\r\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\r\n * emitter.emit('someEvent', 'def'); // does not log anything\r\n */\n ;\n\n _proto.removeCurrentListener = function removeCurrentListener() {\n !!!this._currentSubscription ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Not in an emitting cycle; there is no current subscription') : invariant(false) : void 0;\n\n this._subscriber.removeSubscription(this._currentSubscription);\n }\n /**\r\n * Returns an array of listeners that are currently registered for the given\r\n * event.\r\n *\r\n * @param {string} eventType - Name of the event to query\r\n * @return {array}\r\n */\n ;\n\n _proto.listeners = function listeners(eventType)\n /* TODO: Array<EventSubscription> */\n {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n\n return subscriptions ? subscriptions.filter(emptyFunction.thatReturnsTrue).map(function (subscription) {\n return subscription.listener;\n }) : [];\n }\n /**\r\n * Emits an event of the given type with the given data. All handlers of that\r\n * particular type will be notified.\r\n *\r\n * @param {string} eventType - Name of the event to emit\r\n * @param {*} Arbitrary arguments to be passed to each registered listener\r\n *\r\n * @example\r\n * emitter.addListener('someEvent', function(message) {\r\n * console.log(message);\r\n * });\r\n *\r\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\r\n */\n ;\n\n _proto.emit = function emit(eventType) {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n\n if (subscriptions) {\n var keys = Object.keys(subscriptions);\n\n for (var ii = 0; ii < keys.length; ii++) {\n var key = keys[ii];\n var subscription = subscriptions[key]; // The subscription may have been removed during this event loop.\n\n if (subscription) {\n this._currentSubscription = subscription;\n\n this.__emitToSubscription.apply(this, [subscription].concat(Array.prototype.slice.call(arguments)));\n }\n }\n\n this._currentSubscription = null;\n }\n }\n /**\r\n * Provides a hook to override how the emitter emits an event to a specific\r\n * subscription. This allows you to set up logging and error boundaries\r\n * specific to your environment.\r\n *\r\n * @param {EmitterSubscription} subscription\r\n * @param {string} eventType\r\n * @param {*} Arbitrary arguments to be passed to each registered listener\r\n */\n ;\n\n _proto.__emitToSubscription = function __emitToSubscription(subscription, eventType) {\n var args = Array.prototype.slice.call(arguments, 2);\n subscription.listener.apply(subscription.context, args);\n };\n\n return BaseEventEmitter;\n}();\n\nmodule.exports = BaseEventEmitter;", "/**\r\n * Copyright (c) 2014-present, Facebook, Inc.\r\n * All rights reserved.\r\n *\r\n * This source code is licensed under the BSD-style license found in the\r\n * LICENSE file in the root directory of this source tree. An additional grant\r\n * of patent rights can be found in the PATENTS file in the same directory.\r\n */\r\n\r\nvar fbemitter = {\r\n EventEmitter: require('./lib/BaseEventEmitter'),\r\n EmitterSubscription : require('./lib/EmitterSubscription')\r\n};\r\n\r\nmodule.exports = fbemitter;\r\n", "\"use strict\";\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 */\nfunction crc32(str) {\n /* jslint bitwise: true */\n var crc = -1;\n\n for (var i = 0, len = str.length; i < len; i++) {\n crc = crc >>> 8 ^ table[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return ~crc;\n}\n\nvar table = [0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D];\n\nif (global.Int32Array !== undefined) {\n table = new Int32Array(table);\n}\n\nmodule.exports = crc32;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar store;\nvar noopStore = {\n getItem: function getItem() {},\n setItem: function setItem() {}\n};\n\nif (typeof window !== 'undefined' && 'localStorage' in window) {\n try {\n var key = '__pushtell_react__';\n window.localStorage.setItem(key, key);\n\n if (window.localStorage.getItem(key) !== key) {\n store = noopStore;\n } else {\n window.localStorage.removeItem(key);\n store = window.localStorage;\n }\n } catch (e) {\n store = noopStore;\n }\n} else {\n store = noopStore;\n}\n\nvar _default = store;\nexports[\"default\"] = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _crc = _interopRequireDefault(require(\"fbjs/lib/crc32\"));\n\nvar _emitter = _interopRequireDefault(require(\"./emitter\"));\n\nvar _store = _interopRequireDefault(require(\"./store\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar calculateVariant = function calculateVariant(experimentName, userIdentifier) {\n /*\n Choosing a weighted variant:\n For C, A, B with weights 2, 4, 8\n variants = A, B, C\n weights = 4, 8, 2\n weightSum = 14\n weightedIndex = 9\n AAAABBBBBBBBCC\n ========^\n Select B\n */\n // Sorted array of the variant names, example: [\"A\", \"B\", \"C\"]\n var variants = _emitter[\"default\"].getSortedVariants(experimentName); // Array of the variant weights, also sorted by variant name. For example, if\n // variant C had weight 2, variant A had weight 4, and variant B had weight 8\n // return [4, 8, 2] to correspond with [\"A\", \"B\", \"C\"]\n\n\n var weights = _emitter[\"default\"].getSortedVariantWeights(experimentName); // Sum the weights\n\n\n var weightSum = weights.reduce(function (a, b) {\n return a + b;\n }, 0); // A random number between 0 and weightSum\n\n var weightedIndex = typeof userIdentifier === 'string' ? Math.abs((0, _crc[\"default\"])(userIdentifier) % weightSum) : Math.floor(Math.random() * weightSum); // Iterate through the sorted weights, and deduct each from the weightedIndex.\n // If weightedIndex drops < 0, select the variant. If weightedIndex does not\n // drop < 0, default to the last variant in the array that is initially assigned.\n\n var selectedVariant = variants[variants.length - 1];\n\n for (var index = 0; index < weights.length; index++) {\n weightedIndex -= weights[index];\n\n if (weightedIndex < 0) {\n selectedVariant = variants[index];\n break;\n }\n }\n\n _emitter[\"default\"].setActiveVariant(experimentName, selectedVariant);\n\n return selectedVariant;\n};\n\nvar _default = function _default(experimentName, userIdentifier, defaultVariantName) {\n if (typeof userIdentifier === 'string') {\n return calculateVariant(experimentName, userIdentifier);\n }\n\n var activeValue = _emitter[\"default\"].getActiveVariant(experimentName);\n\n if (typeof activeValue === 'string') {\n return activeValue;\n }\n\n var storedValue = _store[\"default\"].getItem('PUSHTELL-' + experimentName);\n\n if (typeof storedValue === 'string') {\n _emitter[\"default\"].setActiveVariant(experimentName, storedValue, true);\n\n return storedValue;\n }\n\n if (typeof defaultVariantName === 'string') {\n _emitter[\"default\"].setActiveVariant(experimentName, defaultVariantName);\n\n return defaultVariantName;\n }\n\n return calculateVariant(experimentName);\n};\n\nexports[\"default\"] = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _fbemitter = require(\"fbemitter\");\n\nvar _calculateActiveVariant = _interopRequireDefault(require(\"./calculateActiveVariant\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar values = {};\nvar experiments = {};\nvar experimentWeights = {};\nvar activeExperiments = {};\nvar experimentsWithDefinedVariants = {};\nvar playedExperiments = {};\nvar customDistributionAlgorithm = undefined;\nvar emitter = new _fbemitter.EventEmitter();\n\nvar PushtellEventEmitter = function PushtellEventEmitter() {};\n\nPushtellEventEmitter.prototype.emitWin = function (experimentName) {\n if (typeof experimentName !== 'string') {\n throw new Error(\"Required argument 'experimentName' should have type 'string'\");\n }\n\n emitter.emit('win', experimentName, values[experimentName]);\n};\n\nPushtellEventEmitter.prototype._emitPlay = function (experimentName, variantName) {\n if (typeof experimentName !== 'string') {\n throw new Error(\"Required argument 'experimentName' should have type 'string'\");\n }\n\n if (typeof variantName !== 'string') {\n throw new Error(\"Required argument 'variantName' should have type 'string'\");\n }\n\n if (!playedExperiments[experimentName]) {\n emitter.emit('play', experimentName, variantName);\n playedExperiments[experimentName] = true;\n }\n};\n\nPushtellEventEmitter.prototype._resetPlayedExperiments = function () {\n values = {};\n playedExperiments = {};\n};\n\nPushtellEventEmitter.prototype._reset = function () {\n values = {};\n experiments = {};\n experimentWeights = {};\n activeExperiments = {};\n experimentsWithDefinedVariants = {};\n playedExperiments = {};\n customDistributionAlgorithm = undefined;\n};\n\nPushtellEventEmitter.prototype.rewind = function () {\n this._reset();\n\n emitter.removeAllListeners();\n};\n\nPushtellEventEmitter.prototype._incrementActiveExperiments = function (experimentName) {\n activeExperiments[experimentName] = activeExperiments[experimentName] || 0;\n activeExperiments[experimentName] += 1;\n emitter.emit('active', experimentName);\n};\n\nPushtellEventEmitter.prototype._decrementActiveExperiments = function (experimentName) {\n activeExperiments[experimentName] -= 1;\n emitter.emit('inactive', experimentName);\n};\n\nPushtellEventEmitter.prototype.addActiveVariantListener = function (experimentName, callback) {\n if (typeof experimentName === 'function') {\n callback = experimentName;\n return emitter.addListener('active-variant', function (_experimentName, variantName, passthrough) {\n callback(_experimentName, variantName, passthrough);\n });\n }\n\n return emitter.addListener('active-variant', function (_experimentName, variantName, passthrough) {\n if (_experimentName === experimentName) {\n callback(_experimentName, variantName, passthrough);\n }\n });\n};\n\nPushtellEventEmitter.prototype.emit = function () {\n return emitter.emit.apply(emitter, arguments);\n};\n\nPushtellEventEmitter.prototype.addListener = function (eventName, callback) {\n return emitter.addListener(eventName, callback);\n};\n\nPushtellEventEmitter.prototype.once = function (eventName, callback) {\n return emitter.once(eventName, callback);\n};\n\nPushtellEventEmitter.prototype.addPlayListener = function (experimentName, callback) {\n if (typeof experimentName === 'function') {\n callback = experimentName;\n return emitter.addListener('play', function (_experimentName, variantName) {\n callback(_experimentName, variantName);\n });\n }\n\n return emitter.addListener('play', function (_experimentName, variantName) {\n if (_experimentName === experimentName) {\n callback(_experimentName, variantName);\n }\n });\n};\n\nPushtellEventEmitter.prototype.addWinListener = function (experimentName, callback) {\n if (typeof experimentName === 'function') {\n callback = experimentName;\n return emitter.addListener('win', function (_experimentName, variantName) {\n callback(_experimentName, variantName);\n });\n }\n\n return emitter.addListener('win', function (_experimentName, variantName) {\n if (_experimentName === experimentName) {\n callback(_experimentName, variantName);\n }\n });\n};\n\nPushtellEventEmitter.prototype.setCustomDistributionAlgorithm = function (customAlgorithm) {\n customDistributionAlgorithm = customAlgorithm;\n};\n\nPushtellEventEmitter.prototype.defineVariants = function (experimentName, variantNames, variantWeights) {\n var variantsNamesMap = {};\n var variantWeightsMap = {};\n variantNames.forEach(function (variantName) {\n variantsNamesMap[variantName] = true;\n });\n\n if (Array.isArray(variantWeights)) {\n if (variantNames.length !== variantWeights.length) {\n throw new Error(\"Required argument 'variantNames' should have the same number of elements as optional argument 'variantWeights'\");\n }\n\n variantNames.forEach(function (variantName, index) {\n if (typeof variantWeights[index] !== 'number') {\n throw new Error(\"Optional argument 'variantWeights' should be an array of numbers.\");\n }\n\n variantWeightsMap[variantName] = variantWeights[index];\n });\n } else {\n variantNames.forEach(function (variantName, index) {\n variantWeightsMap[variantName] = 1;\n });\n }\n\n experimentWeights[experimentName] = variantWeightsMap;\n experiments[experimentName] = variantsNamesMap;\n experimentsWithDefinedVariants[experimentName] = true;\n};\n\nPushtellEventEmitter.prototype.getSortedVariants = function (experimentName) {\n var variantNames = Object.keys(experiments[experimentName]);\n variantNames.sort();\n return variantNames;\n};\n\nPushtellEventEmitter.prototype.getSortedVariantWeights = function (experimentName) {\n return this.getSortedVariants(experimentName).map(function (variantName) {\n return experimentWeights[experimentName][variantName];\n });\n};\n\nPushtellEventEmitter.prototype.getActiveExperiments = function () {\n var response = {};\n Object.keys(activeExperiments).forEach(function (experimentName) {\n if (activeExperiments[experimentName] === 0) {\n return;\n }\n\n response[experimentName] = {};\n Object.keys(experiments[experimentName]).forEach(function (variantName) {\n response[experimentName][variantName] = values[experimentName] === variantName;\n });\n });\n return response;\n};\n\nPushtellEventEmitter.prototype.calculateActiveVariant = function (experimentName, userIdentifier, defaultVariantName) {\n if (customDistributionAlgorithm !== undefined) {\n return customDistributionAlgorithm(experimentName, userIdentifier, defaultVariantName);\n }\n\n var variant = (0, _calculateActiveVariant[\"default\"])(experimentName, userIdentifier, defaultVariantName);\n return variant;\n};\n\nPushtellEventEmitter.prototype.getActiveVariant = function (experimentName) {\n return values[experimentName];\n};\n\nPushtellEventEmitter.prototype.setActiveVariant = function (experimentName, variantName, passthrough) {\n values[experimentName] = variantName;\n emitter.emit('active-variant', experimentName, variantName, passthrough);\n};\n\nPushtellEventEmitter.prototype.addExperimentVariant = function (experimentName, variantName) {\n experiments[experimentName] = experiments[experimentName] || {};\n experimentWeights[experimentName] = experimentWeights[experimentName] || {};\n\n if (experiments[experimentName][variantName] !== true) {\n if (experimentsWithDefinedVariants[experimentName]) {\n var error = new Error('Experiment \u201C' + experimentName + '\u201D added new variants after variants were defined.');\n error.type = 'PUSHTELL_INVALID_VARIANT';\n throw error;\n }\n\n if (values[experimentName]) {\n var _error = new Error('Experiment \u201C' + experimentName + '\u201D added new variants after a variant was selected. Declare the variant names using emitter.defineVariants(experimentName, variantNames).');\n\n _error.type = 'PUSHTELL_INVALID_VARIANT';\n throw _error;\n }\n\n experimentWeights[experimentName][variantName] = 1;\n }\n\n experiments[experimentName][variantName] = true;\n};\n\nvar _default = new PushtellEventEmitter();\n\nexports[\"default\"] = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = require(\"react\");\n\nvar _emitter = _interopRequireDefault(require(\"./emitter\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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 && (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\nvar selectVariant = function selectVariant(currentVariant) {\n return function (variants, fallback) {\n if (currentVariant in variants) {\n return variants[currentVariant];\n }\n\n return fallback;\n };\n};\n\nvar useExperiment = function useExperiment(experimentName, userIdentifier, defaultVariantName) {\n var _useState = (0, _react.useState)(_emitter[\"default\"].calculateActiveVariant(experimentName, userIdentifier, defaultVariantName)),\n _useState2 = _slicedToArray(_useState, 2),\n activeVariant = _useState2[0],\n setActiveVariant = _useState2[1];\n\n (0, _react.useEffect)(function () {\n _emitter[\"default\"]._incrementActiveExperiments(experimentName);\n\n _emitter[\"default\"].setActiveVariant(experimentName, activeVariant);\n\n _emitter[\"default\"]._emitPlay(experimentName, activeVariant);\n\n var variantListener = _emitter[\"default\"].addActiveVariantListener(experimentName, function (name, variant) {\n if (name === experimentName && variant !== activeVariant) {\n setActiveVariant(variant);\n }\n });\n\n return function () {\n variantListener.remove();\n\n _emitter[\"default\"]._decrementActiveExperiments(experimentName);\n };\n }, [experimentName, activeVariant]);\n return {\n experimentName: experimentName,\n activeVariant: activeVariant,\n emitWin: function emitWin() {\n return _emitter[\"default\"].emitWin(experimentName);\n },\n selectVariant: selectVariant(activeVariant)\n };\n};\n\nvar _default = useExperiment;\nexports[\"default\"] = _default;", "\"use strict\";\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\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 _hook = _interopRequireDefault(require(\"./hook\"));\n\nvar _emitter = _interopRequireDefault(require(\"./emitter\"));\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\nvar filterVariants = function filterVariants(name, children) {\n var variants = {};\n\n _react[\"default\"].Children.forEach(children, function (element) {\n if (! /*#__PURE__*/_react[\"default\"].isValidElement(element) || element.type.displayName !== 'Pushtell.Variant') {\n var error = new Error('Pushtell Experiment children must be Pushtell Variant components.');\n error.type = 'PUSHTELL_INVALID_CHILD';\n throw error;\n }\n\n variants[element.props.name] = element;\n\n _emitter[\"default\"].addExperimentVariant(name, element.props.name);\n });\n\n _emitter[\"default\"].emit('variants-loaded', name);\n\n return variants;\n};\n\nvar CoreExperiment = function CoreExperiment(props) {\n var variants = (0, _react.useMemo)(function () {\n return filterVariants(props.name, props.children);\n }, [props.name, props.children]);\n\n var _useExperiment = (0, _hook[\"default\"])(props.name, props.userIdentifier, props.defaultVariantName),\n selectVariant = _useExperiment.selectVariant;\n\n return selectVariant(variants, []);\n};\n\nCoreExperiment.propTypes = {\n name: _propTypes[\"default\"].string.isRequired,\n userIdentifier: _propTypes[\"default\"].string,\n defaultVariantName: _propTypes[\"default\"].string,\n children: _propTypes[\"default\"].node\n};\nvar _default = CoreExperiment;\nexports[\"default\"] = _default;", "\"use strict\";\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\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 _CoreExperiment = _interopRequireDefault(require(\"./CoreExperiment\"));\n\nvar _emitter = _interopRequireDefault(require(\"./emitter\"));\n\nvar _store = _interopRequireDefault(require(\"./store\"));\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 _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 { 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\n_emitter[\"default\"].addActiveVariantListener(function (experimentName, variantName, skipSave) {\n if (skipSave) {\n return;\n }\n\n _store[\"default\"].setItem('PUSHTELL-' + experimentName, variantName);\n});\n\nvar Experiment = /*#__PURE__*/function (_Component) {\n _inherits(Experiment, _Component);\n\n var _super = _createSuper(Experiment);\n\n function Experiment() {\n var _this;\n\n _classCallCheck(this, Experiment);\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), \"win\", function () {\n _emitter[\"default\"].emitWin(_this.props.name);\n });\n\n return _this;\n }\n\n _createClass(Experiment, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/_react[\"default\"].createElement(_CoreExperiment[\"default\"], this.props, this.props.children);\n }\n }]);\n\n return Experiment;\n}(_react.Component);\n\nexports[\"default\"] = Experiment;\n\n_defineProperty(Experiment, \"propTypes\", {\n name: _propTypes[\"default\"].string.isRequired,\n defaultVariantName: _propTypes[\"default\"].string,\n userIdentifier: _propTypes[\"default\"].string,\n children: _propTypes[\"default\"].node\n});\n\n_defineProperty(Experiment, \"displayName\", 'Pushtell.Experiment');", "\"use strict\";\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\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\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 _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 { 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 Variant = /*#__PURE__*/function (_Component) {\n _inherits(Variant, _Component);\n\n var _super = _createSuper(Variant);\n\n function Variant() {\n _classCallCheck(this, Variant);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Variant, [{\n key: \"render\",\n value: function render() {\n if ( /*#__PURE__*/_react[\"default\"].isValidElement(this.props.children)) {\n return this.props.children;\n } else {\n return /*#__PURE__*/_react[\"default\"].createElement(\"span\", null, this.props.children);\n }\n }\n }]);\n\n return Variant;\n}(_react.Component);\n\nexports[\"default\"] = Variant;\n\n_defineProperty(Variant, \"propTypes\", {\n name: _propTypes[\"default\"].string.isRequired\n});\n\n_defineProperty(Variant, \"displayName\", 'Pushtell.Variant');", "/**\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 canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\n\nvar ExecutionEnvironment = {\n canUseDOM: canUseDOM,\n canUseWorkers: typeof Worker !== 'undefined',\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n canUseViewport: canUseDOM && !!window.screen,\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\nmodule.exports = ExecutionEnvironment;", "\"use strict\";\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\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _emitter = _interopRequireDefault(require(\"./emitter\"));\n\nvar _ExecutionEnvironment = require(\"fbjs/lib/ExecutionEnvironment\");\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 _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 { 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 isDebuggerAvailable = process.env.NODE_ENV !== 'production';\nvar style = null;\n\nfunction attachStyleSheet() {\n style = document.createElement('style');\n style.appendChild(document.createTextNode(''));\n document.head.appendChild(style);\n\n function addCSSRule(selector, rules) {\n if ('insertRule' in style.sheet) {\n style.sheet.insertRule(selector + '{' + rules + '}', 0);\n } else if ('addRule' in style.sheet) {\n style.sheet.addRule(selector, rules, 0);\n }\n }\n\n addCSSRule('#pushtell-debugger', 'z-index: 25000');\n addCSSRule('#pushtell-debugger', 'position: fixed');\n addCSSRule('#pushtell-debugger', 'transform: translateX(-50%)');\n addCSSRule('#pushtell-debugger', 'bottom: 0');\n addCSSRule('#pushtell-debugger', 'left: 50%');\n addCSSRule('#pushtell-debugger ul', 'margin: 0');\n addCSSRule('#pushtell-debugger ul', 'padding: 0 0 0 20px');\n addCSSRule('#pushtell-debugger li', 'margin: 0');\n addCSSRule('#pushtell-debugger li', 'padding: 0');\n addCSSRule('#pushtell-debugger li', 'font-size: 14px');\n addCSSRule('#pushtell-debugger li', 'line-height: 14px');\n addCSSRule('#pushtell-debugger input', 'float: left');\n addCSSRule('#pushtell-debugger input', 'margin: 0 10px 0 0');\n addCSSRule('#pushtell-debugger input', 'padding: 0');\n addCSSRule('#pushtell-debugger input', 'cursor: pointer');\n addCSSRule('#pushtell-debugger label', 'color: #999999');\n addCSSRule('#pushtell-debugger label', 'margin: 0 0 10px 0');\n addCSSRule('#pushtell-debugger label', 'cursor: pointer');\n addCSSRule('#pushtell-debugger label', 'font-weight: normal');\n addCSSRule('#pushtell-debugger label.active', 'color: #000000');\n addCSSRule('#pushtell-debugger .pushtell-experiment-name', 'font-size: 16px');\n addCSSRule('#pushtell-debugger .pushtell-experiment-name', 'color: #000000');\n addCSSRule('#pushtell-debugger .pushtell-experiment-name', 'margin: 0 0 10px 0');\n addCSSRule('#pushtell-debugger .pushtell-production-build-note', 'font-size: 10px');\n addCSSRule('#pushtell-debugger .pushtell-production-build-note', 'color: #999999');\n addCSSRule('#pushtell-debugger .pushtell-production-build-note', 'text-align: center');\n addCSSRule('#pushtell-debugger .pushtell-production-build-note', 'margin: 10px -40px 0 -10px');\n addCSSRule('#pushtell-debugger .pushtell-production-build-note', 'border-top: 1px solid #b3b3b3');\n addCSSRule('#pushtell-debugger .pushtell-production-build-note', 'padding: 10px 10px 5px 10px');\n addCSSRule('#pushtell-debugger .pushtell-handle', 'cursor: pointer');\n addCSSRule('#pushtell-debugger .pushtell-handle', 'padding: 5px 10px 5px 10px');\n addCSSRule('#pushtell-debugger .pushtell-panel', 'padding: 15px 40px 5px 10px');\n addCSSRule('#pushtell-debugger .pushtell-container', 'font-size: 11px');\n addCSSRule('#pushtell-debugger .pushtell-container', 'background-color: #ebebeb');\n addCSSRule('#pushtell-debugger .pushtell-container', 'color: #000000');\n addCSSRule('#pushtell-debugger .pushtell-container', 'box-shadow: 0px 0 5px rgba(0, 0, 0, 0.1)');\n addCSSRule('#pushtell-debugger .pushtell-container', 'border-top: 1px solid #b3b3b3');\n addCSSRule('#pushtell-debugger .pushtell-container', 'border-left: 1px solid #b3b3b3');\n addCSSRule('#pushtell-debugger .pushtell-container', 'border-right: 1px solid #b3b3b3');\n addCSSRule('#pushtell-debugger .pushtell-container', 'border-top-left-radius: 2px');\n addCSSRule('#pushtell-debugger .pushtell-container', 'border-top-right-radius: 2px');\n addCSSRule('#pushtell-debugger .pushtell-close', 'cursor: pointer');\n addCSSRule('#pushtell-debugger .pushtell-close', 'font-size: 16px');\n addCSSRule('#pushtell-debugger .pushtell-close', 'font-weight: bold');\n addCSSRule('#pushtell-debugger .pushtell-close', 'color: #CC0000');\n addCSSRule('#pushtell-debugger .pushtell-close', 'position: absolute');\n addCSSRule('#pushtell-debugger .pushtell-close', 'top: 0px');\n addCSSRule('#pushtell-debugger .pushtell-close', 'right: 7px');\n addCSSRule('#pushtell-debugger .pushtell-close:hover', 'color: #FF0000');\n addCSSRule('#pushtell-debugger .pushtell-close, #pushtell-debugger label', 'transition: all .25s');\n}\n\nfunction removeStyleSheet() {\n if (style !== null) {\n document.head.removeChild(style);\n style = null;\n }\n}\n\nvar Debugger = /*#__PURE__*/function (_Component) {\n _inherits(Debugger, _Component);\n\n var _super = _createSuper(Debugger);\n\n function Debugger() {\n var _this;\n\n _classCallCheck(this, Debugger);\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 experiments: _emitter[\"default\"].getActiveExperiments(),\n visible: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"toggleVisibility\", function () {\n _this.setState({\n visible: !_this.state.visible\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateExperiments\", function () {\n _this.setState({\n experiments: _emitter[\"default\"].getActiveExperiments()\n });\n });\n\n return _this;\n }\n\n _createClass(Debugger, [{\n key: \"setActiveVariant\",\n value: function setActiveVariant(experimentName, variantName) {\n _emitter[\"default\"].setActiveVariant(experimentName, variantName);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.activeSubscription = _emitter[\"default\"].addListener('active', this.updateExperiments);\n this.inactiveSubscription = _emitter[\"default\"].addListener('inactive', this.updateExperiments);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.activeSubscription.remove();\n this.inactiveSubscription.remove();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var experimentNames = Object.keys(this.state.experiments);\n\n if (this.state.visible) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"pushtell-container pushtell-panel\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"pushtell-close\",\n onClick: this.toggleVisibility\n }, \"\\xD7\"), experimentNames.map(function (experimentName) {\n var variantNames = Object.keys(_this2.state.experiments[experimentName]);\n\n if (variantNames.length === 0) {\n return;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"pushtell-experiment\",\n key: experimentName\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"pushtell-experiment-name\"\n }, experimentName), /*#__PURE__*/_react[\"default\"].createElement(\"ul\", null, variantNames.map(function (variantName) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: variantName\n }, /*#__PURE__*/_react[\"default\"].createElement(\"label\", {\n className: _this2.state.experiments[experimentName][variantName] ? 'active' : null,\n onClick: _this2.setActiveVariant.bind(_this2, experimentName, variantName)\n }, /*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n type: \"radio\",\n name: experimentName,\n value: variantName,\n defaultChecked: _this2.state.experiments[experimentName][variantName]\n }), variantName));\n })));\n }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"pushtell-production-build-note\"\n }, \"This panel is hidden on production builds.\"));\n } else if (experimentNames.length > 0) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"pushtell-container pushtell-handle\",\n onClick: this.toggleVisibility\n }, experimentNames.length, \" Active Experiment\", experimentNames.length > 1 ? 's' : '');\n } else {\n return null;\n }\n }\n }]);\n\n return Debugger;\n}(_react.Component);\n\nmodule.exports = {\n setDebuggerAvailable: function setDebuggerAvailable(value) {\n isDebuggerAvailable = value;\n },\n enable: function enable() {\n if (!isDebuggerAvailable || !_ExecutionEnvironment.canUseDOM) {\n return;\n }\n\n attachStyleSheet();\n var body = document.getElementsByTagName('body')[0];\n var container = document.createElement('div');\n container.id = 'pushtell-debugger';\n body.appendChild(container);\n\n _reactDom[\"default\"].render( /*#__PURE__*/_react[\"default\"].createElement(Debugger, null), container);\n },\n disable: function disable() {\n if (!isDebuggerAvailable || !_ExecutionEnvironment.canUseDOM) {\n return;\n }\n\n removeStyleSheet();\n var body = document.getElementsByTagName('body')[0];\n var container = document.getElementById('pushtell-debugger');\n\n if (container) {\n _reactDom[\"default\"].unmountComponentAtNode(container);\n\n body.removeChild(container);\n }\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _emitter = _interopRequireDefault(require(\"../emitter\"));\n\nvar _ExecutionEnvironment = require(\"fbjs/lib/ExecutionEnvironment\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar playSubscription, winSubscription;\nvar _default = {\n enable: function enable() {\n if (_ExecutionEnvironment.canUseDOM) {\n if (typeof mixpanel === 'undefined') {\n var error = new Error(\"React A/B Test Mixpanel Helper: 'mixpanel' global is not defined.\");\n error.type = 'PUSHTELL_HELPER_MISSING_GLOBAL';\n throw error;\n }\n\n playSubscription = _emitter[\"default\"].addPlayListener(function (experimentName, variantName) {\n mixpanel.track('Experiment Play', {\n Experiment: experimentName,\n Variant: variantName\n }, function () {\n _emitter[\"default\"].emit('mixpanel-play', experimentName, variantName);\n });\n });\n winSubscription = _emitter[\"default\"].addWinListener(function (experimentName, variantName) {\n mixpanel.track('Experiment Win', {\n Experiment: experimentName,\n Variant: variantName\n }, function () {\n _emitter[\"default\"].emit('mixpanel-win', experimentName, variantName);\n });\n });\n }\n },\n disable: function disable() {\n if (_ExecutionEnvironment.canUseDOM) {\n if (!playSubscription || !winSubscription) {\n var error = new Error('React A/B Test Mixpanel Helper: Helper was not enabled.');\n error.type = 'PUSHTELL_HELPER_INVALID_DISABLE';\n throw error;\n }\n\n playSubscription.remove();\n winSubscription.remove();\n }\n }\n};\nexports[\"default\"] = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _emitter = _interopRequireDefault(require(\"../emitter\"));\n\nvar _ExecutionEnvironment = require(\"fbjs/lib/ExecutionEnvironment\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar playSubscription, winSubscription;\nvar _default = {\n enable: function enable() {\n if (_ExecutionEnvironment.canUseDOM) {\n if (typeof analytics === 'undefined') {\n var error = new Error(\"React A/B Test Segment Helper: 'analytics' global is not defined.\");\n error.type = 'PUSHTELL_HELPER_MISSING_GLOBAL';\n throw error;\n }\n\n playSubscription = _emitter[\"default\"].addPlayListener(function (experimentName, variantName) {\n analytics.track('Experiment Viewed', {\n experimentName: experimentName,\n variationName: variantName\n }, function () {\n _emitter[\"default\"].emit('segment-play', experimentName, variantName);\n });\n });\n winSubscription = _emitter[\"default\"].addWinListener(function (experimentName, variantName) {\n analytics.track('Experiment Won', {\n experimentName: experimentName,\n variationName: variantName\n }, function () {\n _emitter[\"default\"].emit('segment-win', experimentName, variantName);\n });\n });\n }\n },\n disable: function disable() {\n if (_ExecutionEnvironment.canUseDOM) {\n if (!playSubscription || !winSubscription) {\n var error = new Error('React A/B Test Segment Helper: Helper was not enabled.');\n error.type = 'PUSHTELL_HELPER_INVALID_DISABLE';\n throw error;\n }\n\n playSubscription.remove();\n winSubscription.remove();\n }\n }\n};\nexports[\"default\"] = _default;", "module.exports = {\n Experiment: require('./lib/Experiment').default,\n Variant: require('./lib/Variant').default,\n emitter: require('./lib/emitter').default,\n useExperiment: require('./lib/hook').default,\n experimentDebugger: require('./lib/debugger'),\n mixpanelHelper: require('./lib/helpers/mixpanel').default,\n segmentHelper: require('./lib/helpers/segment').default,\n};\n", "import './controllers/wos';\n\nimport initFontAwesome from 'utils/font_awesome_init';\ninitFontAwesome();\n\nimport reporter from 'utils/reporter';\nreporter.init();\n", "import { application } from './application';\n\nimport CartRendererController from './cart_renderer_controller';\napplication.register('cart-renderer', CartRendererController);\n\nimport PriceToolRendererController from './price_tool_renderer_controller';\napplication.register('price-tool-renderer', PriceToolRendererController);\n\nimport ProjectsRendererController from './projects_renderer_controller';\napplication.register('projects-renderer', ProjectsRendererController);\n\nimport WosRendererController from './wos_renderer_controller';\napplication.register('wos-renderer', WosRendererController);\n", "import { Application } from '@hotwired/stimulus';\n\nconst application = Application.start();\n\n// Configure Stimulus development experience\napplication.debug = false;\nwindow.Stimulus = application;\n\nexport { application };\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Controller } from '@hotwired/stimulus';\n\nimport React from 'react';\nimport { render } from 'react-dom';\nimport { Provider } from 'react-redux';\n\nimport app from 'domains/application';\nimport canvases from 'domains/canvases';\nimport navigation from 'domains/navigation';\n\nimport Wos from 'components/apps/Wos';\nimport store from 'store/wos_store';\n\n// Connects to data-controller=\"cart-renderer\"\nexport default class extends Controller {\n connect() {\n this.render();\n }\n\n render() {\n store.dispatch(app.actions.initApp());\n store.dispatch(canvases.actions.addCanvas({}));\n store.dispatch(navigation.actions.initializeNavigation({ cart: true }));\n\n return render(\n <Provider store={store}>\n <Wos />\n </Provider>,\n this.element\n );\n }\n}\n", "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 };", "import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport shallowEqual from './utils/shallowEqual';\nexport { Provider, connectAdvanced, ReactReduxContext, connect, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };", "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 subscription.onStateChange = subscription.notifyNestedSubs;\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.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 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;", "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}", "// 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 { 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 _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/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\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}", "export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\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}", "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/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\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();", "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 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 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 isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}", "/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nexport default function isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}", "/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function 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 /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\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);\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 warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!Object.prototype.hasOwnProperty.call(selector, 'dependsOnOwnProps')) {\n warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}", "import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\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/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n * <div>\n * <span>{value}</span>\n * <button onClick={increaseCounter}>Increase counter</button>\n * </div>\n * )\n * }\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();", "import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useStore` hook bound to the specified context.\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/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return <div>{store.getState()}</div>\n * }\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();", "import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const { store } = useReduxContext()\n * return <div>{store.getState()}</div>\n * }\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 { 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/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useSelector` hook bound to the specified context.\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/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return <div>{counter}</div>\n * }\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();", "/* eslint-disable import/no-unresolved */\nexport { unstable_batchedUpdates } from 'react-dom';", "import actions from './application.actions';\n\nconst module = {\n actions: { ...actions },\n};\n\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nconst initApp = createAction('app/init');\n\nexport default {\n initApp,\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 {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tES5ArrayState,\n\tProxyArrayState,\n\tMapState,\n\tES5ObjectState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tProxyType,\n\tArchtype,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst REPLACE = \"replace\"\n\tconst ADD = \"add\"\n\tconst REMOVE = \"remove\"\n\n\tfunction generatePatches_(\n\t\tstate: ImmerState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tswitch (state.type_) {\n\t\t\tcase ProxyType.ProxyObject:\n\t\t\tcase ProxyType.ES5Object:\n\t\t\tcase ProxyType.Map:\n\t\t\t\treturn generatePatchesFromAssigned(\n\t\t\t\t\tstate,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t\tcase ProxyType.ES5Array:\n\t\t\tcase ProxyType.ProxyArray:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ProxyType.Set:\n\t\t\t\treturn generateSetPatches(\n\t\t\t\t\t(state as any) as SetState,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t}\n\t}\n\n\tfunction generateArrayPatches(\n\t\tstate: ES5ArrayState | ProxyArrayState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, assigned_} = state\n\t\tlet copy_ = state.copy_!\n\n\t\t// Reduce complexity by ensuring `base` is never longer.\n\t\tif (copy_.length < base_.length) {\n\t\t\t// @ts-ignore\n\t\t\t;[base_, copy_] = [copy_, base_]\n\t\t\t;[patches, inversePatches] = [inversePatches, patches]\n\t\t}\n\n\t\t// Process replaced indices.\n\t\tfor (let i = 0; i < base_.length; i++) {\n\t\t\tif (assigned_[i] && copy_[i] !== base_[i]) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t\t})\n\t\t\t\tinversePatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(base_[i])\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Process added indices.\n\t\tfor (let i = base_.length; i < copy_.length; i++) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tpatches.push({\n\t\t\t\top: ADD,\n\t\t\t\tpath,\n\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t})\n\t\t}\n\t\tif (base_.length < copy_.length) {\n\t\t\tinversePatches.push({\n\t\t\t\top: REPLACE,\n\t\t\t\tpath: basePath.concat([\"length\"]),\n\t\t\t\tvalue: base_.length\n\t\t\t})\n\t\t}\n\t}\n\n\t// This is used for both Map objects and normal objects.\n\tfunction generatePatchesFromAssigned(\n\t\tstate: MapState | ES5ObjectState | ProxyObjectState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tconst {base_, copy_} = state\n\t\teach(state.assigned_!, (key, assignedValue) => {\n\t\t\tconst origValue = get(base_, key)\n\t\t\tconst value = get(copy_!, key)\n\t\t\tconst op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD\n\t\t\tif (origValue === value && op === REPLACE) return\n\t\t\tconst path = basePath.concat(key as any)\n\t\t\tpatches.push(op === REMOVE ? {op, path} : {op, path, value})\n\t\t\tinversePatches.push(\n\t\t\t\top === ADD\n\t\t\t\t\t? {op: REMOVE, path}\n\t\t\t\t\t: op === REMOVE\n\t\t\t\t\t? {op: ADD, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t\t\t: {op: REPLACE, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t)\n\t\t})\n\t}\n\n\tfunction generateSetPatches(\n\t\tstate: SetState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, copy_} = state\n\n\t\tlet i = 0\n\t\tbase_.forEach((value: any) => {\n\t\t\tif (!copy_!.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t\ti = 0\n\t\tcopy_!.forEach((value: any) => {\n\t\t\tif (!base_.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t}\n\n\tfunction generateReplacementPatches_(\n\t\tbaseValue: any,\n\t\treplacement: any,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tpatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: replacement === NOTHING ? undefined : replacement\n\t\t})\n\t\tinversePatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: baseValue\n\t\t})\n\t}\n\n\tfunction applyPatches_<T>(draft: T, patches: Patch[]): T {\n\t\tpatches.forEach(patch => {\n\t\t\tconst {path, op} = patch\n\n\t\t\tlet base: any = draft\n\t\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\t\tconst parentType = getArchtype(base)\n\t\t\t\tlet p = path[i]\n\t\t\t\tif (typeof p !== \"string\" && typeof p !== \"number\") {\n\t\t\t\t\tp = \"\" + p\n\t\t\t\t}\n\n\t\t\t\t// See #738, avoid prototype pollution\n\t\t\t\tif (\n\t\t\t\t\t(parentType === Archtype.Object || parentType === Archtype.Array) &&\n\t\t\t\t\t(p === \"__proto__\" || p === \"constructor\")\n\t\t\t\t)\n\t\t\t\t\tdie(24)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\") die(24)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(15, path.join(\"/\"))\n\t\t\t}\n\n\t\t\tconst type = getArchtype(base)\n\t\t\tconst value = deepClonePatchValue(patch.value) // used to clone patch to ensure original patch is not modified, see #411\n\t\t\tconst key = path[path.length - 1]\n\t\t\tswitch (op) {\n\t\t\t\tcase REPLACE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\tdie(16)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// if value is an object, then it's assigned by reference\n\t\t\t\t\t\t\t// in the following add or remove ops, the value field inside the patch will also be modifyed\n\t\t\t\t\t\t\t// so we use value from the cloned patch\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase ADD:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn key === \"-\"\n\t\t\t\t\t\t\t\t? base.push(value)\n\t\t\t\t\t\t\t\t: base.splice(key as any, 0, value)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.add(value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase REMOVE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn base.splice(key as any, 1)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.delete(key)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.delete(patch.value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn delete base[key]\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tdie(17, op)\n\t\t\t}\n\t\t})\n\n\t\treturn draft\n\t}\n\n\t// optimize: this is quite a performance hit, can we detect intelligently when it is needed?\n\t// E.g. auto-draft when new objects from outside are assigned and modified?\n\t// (See failing test when deepClone just returns obj)\n\tfunction deepClonePatchValue<T>(obj: T): T\n\tfunction deepClonePatchValue(obj: any) {\n\t\tif (!isDraftable(obj)) return obj\n\t\tif (Array.isArray(obj)) return obj.map(deepClonePatchValue)\n\t\tif (isMap(obj))\n\t\t\treturn new Map(\n\t\t\t\tArray.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n\t\t\t)\n\t\tif (isSet(obj)) return new Set(Array.from(obj).map(deepClonePatchValue))\n\t\tconst cloned = Object.create(Object.getPrototypeOf(obj))\n\t\tfor (const key in obj) cloned[key] = deepClonePatchValue(obj[key])\n\t\tif (has(obj, immerable)) cloned[immerable] = obj[immerable]\n\t\treturn cloned\n\t}\n\n\tfunction clonePatchValueIfNeeded<T>(obj: T): T {\n\t\tif (isDraft(obj)) {\n\t\t\treturn deepClonePatchValue(obj)\n\t\t} else return obj\n\t}\n\n\tloadPlugin(\"Patches\", {\n\t\tapplyPatches_,\n\t\tgeneratePatches_,\n\t\tgenerateReplacementPatches_\n\t})\n}\n", "// types only!\nimport {\n\tImmerState,\n\tAnyMap,\n\tAnySet,\n\tMapState,\n\tSetState,\n\tDRAFT_STATE,\n\tgetCurrentScope,\n\tlatest,\n\titeratorSymbol,\n\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tProxyType,\n\tdie,\n\teach\n} from \"../internal\"\n\nexport function enableMapSet() {\n\t/* istanbul ignore next */\n\tvar extendStatics = function(d: any, b: any): any {\n\t\textendStatics =\n\t\t\tObject.setPrototypeOf ||\n\t\t\t({__proto__: []} instanceof Array &&\n\t\t\t\tfunction(d, b) {\n\t\t\t\t\td.__proto__ = b\n\t\t\t\t}) ||\n\t\t\tfunction(d, b) {\n\t\t\t\tfor (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]\n\t\t\t}\n\t\treturn extendStatics(d, b)\n\t}\n\n\t// Ugly hack to resolve #502 and inherit built in Map / Set\n\tfunction __extends(d: any, b: any): any {\n\t\textendStatics(d, b)\n\t\tfunction __(this: any): any {\n\t\t\tthis.constructor = d\n\t\t}\n\t\td.prototype =\n\t\t\t// @ts-ignore\n\t\t\t((__.prototype = b.prototype), new __())\n\t}\n\n\tconst DraftMap = (function(_super) {\n\t\t__extends(DraftMap, _super)\n\t\t// Create class manually, cause #502\n\t\tfunction DraftMap(this: any, target: AnyMap, parent?: ImmerState): any {\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ProxyType.Map,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tassigned_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this as any,\n\t\t\t\tisManual_: false,\n\t\t\t\trevoked_: false\n\t\t\t} as MapState\n\t\t\treturn this\n\t\t}\n\t\tconst p = DraftMap.prototype\n\n\t\tObject.defineProperty(p, \"size\", {\n\t\t\tget: function() {\n\t\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t\t}\n\t\t\t// enumerable: false,\n\t\t\t// configurable: true\n\t\t})\n\n\t\tp.has = function(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tp.set = function(key: any, value: any) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!latest(state).has(key) || latest(state).get(key) !== value) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t\tstate.copy_!.set(key, value)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tp.delete = function(key: any): boolean {\n\t\t\tif (!this.has(key)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareMapCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\tif (state.base_.has(key)) {\n\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t} else {\n\t\t\t\tstate.assigned_!.delete(key)\n\t\t\t}\n\t\t\tstate.copy_!.delete(key)\n\t\t\treturn true\n\t\t}\n\n\t\tp.clear = function() {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_ = new Map()\n\t\t\t\teach(state.base_, key => {\n\t\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t\t})\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tp.forEach = function(\n\t\t\tcb: (value: any, key: any, self: any) => void,\n\t\t\tthisArg?: any\n\t\t) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tlatest(state).forEach((_value: any, key: any, _map: any) => {\n\t\t\t\tcb.call(thisArg, this.get(key), key, this)\n\t\t\t})\n\t\t}\n\n\t\tp.get = function(key: any): any {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tconst value = latest(state).get(key)\n\t\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\t\treturn value\n\t\t\t}\n\t\t\tif (value !== state.base_.get(key)) {\n\t\t\t\treturn value // either already drafted or reassigned\n\t\t\t}\n\t\t\t// despite what it looks, this creates a draft only once, see above condition\n\t\t\tconst draft = createProxy(state.scope_.immer_, value, state)\n\t\t\tprepareMapCopy(state)\n\t\t\tstate.copy_!.set(key, draft)\n\t\t\treturn draft\n\t\t}\n\n\t\tp.keys = function(): IterableIterator<any> {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tp.values = function(): IterableIterator<any> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[iteratorSymbol]: () => this.values(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\tp.entries = function(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[iteratorSymbol]: () => this.entries(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue: [r.value, value]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\tp[iteratorSymbol] = function() {\n\t\t\treturn this.entries()\n\t\t}\n\n\t\treturn DraftMap\n\t})(Map)\n\n\tfunction proxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T {\n\t\t// @ts-ignore\n\t\treturn new DraftMap(target, parent)\n\t}\n\n\tfunction prepareMapCopy(state: MapState) {\n\t\tif (!state.copy_) {\n\t\t\tstate.assigned_ = new Map()\n\t\t\tstate.copy_ = new Map(state.base_)\n\t\t}\n\t}\n\n\tconst DraftSet = (function(_super) {\n\t\t__extends(DraftSet, _super)\n\t\t// Create class manually, cause #502\n\t\tfunction DraftSet(this: any, target: AnySet, parent?: ImmerState) {\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ProxyType.Set,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this,\n\t\t\t\tdrafts_: new Map(),\n\t\t\t\trevoked_: false,\n\t\t\t\tisManual_: false\n\t\t\t} as SetState\n\t\t\treturn this\n\t\t}\n\t\tconst p = DraftSet.prototype\n\n\t\tObject.defineProperty(p, \"size\", {\n\t\t\tget: function() {\n\t\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t\t}\n\t\t\t// enumerable: true,\n\t\t})\n\n\t\tp.has = function(value: any): boolean {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\t// bit of trickery here, to be able to recognize both the value, and the draft of its value\n\t\t\tif (!state.copy_) {\n\t\t\t\treturn state.base_.has(value)\n\t\t\t}\n\t\t\tif (state.copy_.has(value)) return true\n\t\t\tif (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n\t\t\t\treturn true\n\t\t\treturn false\n\t\t}\n\n\t\tp.add = function(value: any): any {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!this.has(value)) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.add(value)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tp.delete = function(value: any): any {\n\t\t\tif (!this.has(value)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\treturn (\n\t\t\t\tstate.copy_!.delete(value) ||\n\t\t\t\t(state.drafts_.has(value)\n\t\t\t\t\t? state.copy_!.delete(state.drafts_.get(value))\n\t\t\t\t\t: /* istanbul ignore next */ false)\n\t\t\t)\n\t\t}\n\n\t\tp.clear = function() {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tp.values = function(): IterableIterator<any> {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.values()\n\t\t}\n\n\t\tp.entries = function entries(): IterableIterator<[any, any]> {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.entries()\n\t\t}\n\n\t\tp.keys = function(): IterableIterator<any> {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tp[iteratorSymbol] = function() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tp.forEach = function forEach(cb: any, thisArg?: any) {\n\t\t\tconst iterator = this.values()\n\t\t\tlet result = iterator.next()\n\t\t\twhile (!result.done) {\n\t\t\t\tcb.call(thisArg, result.value, result.value, this)\n\t\t\t\tresult = iterator.next()\n\t\t\t}\n\t\t}\n\n\t\treturn DraftSet\n\t})(Set)\n\n\tfunction proxySet_<T extends AnySet>(target: T, parent?: ImmerState): T {\n\t\t// @ts-ignore\n\t\treturn new DraftSet(target, parent)\n\t}\n\n\tfunction prepareSetCopy(state: SetState) {\n\t\tif (!state.copy_) {\n\t\t\t// create drafts for all entries to preserve insertion order\n\t\t\tstate.copy_ = new Set()\n\t\t\tstate.base_.forEach(value => {\n\t\t\t\tif (isDraftable(value)) {\n\t\t\t\t\tconst draft = createProxy(state.scope_.immer_, value, state)\n\t\t\t\t\tstate.drafts_.set(value, draft)\n\t\t\t\t\tstate.copy_!.add(draft)\n\t\t\t\t} else {\n\t\t\t\t\tstate.copy_!.add(value)\n\t\t\t\t}\n\t\t\t})\n\t\t}\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(\"MapSet\", {proxyMap_, proxySet_})\n}\n", "import {enableES5} from \"./es5\"\nimport {enableMapSet} from \"./mapset\"\nimport {enablePatches} from \"./patches\"\n\nexport function enableAllPlugins() {\n\tenableES5()\n\tenableMapSet()\n\tenablePatches()\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", "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 \u201Cwhat changed\u201D. 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", "import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\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}", "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}", "/** 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;", "import actions from './canvases.actions';\nimport selectors from './canvases.selectors';\nimport slice from './canvases.slice';\nimport utils from './canvases.utils';\n\nexport * from './canvases.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n utils,\n};\n\nexport { default as slice } from './canvases.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type {\n ConfigChange,\n CanvasOptionChangePayload,\n PriceToolSizePayload,\n CustomSizePricePayload,\n CustomSizeOptionPayload,\n} from './canvases.types';\nimport type { Dimension, Pair } from 'types/common_types';\n\nconst changeActiveCanvasConfig = {\n catalog: createAction<number>('canvases/changeActiveCanvasConfig/catalog'),\n subcatalog: createAction<number>('canvases/changeActiveCanvasConfig/subcatalog'),\n product: createAction<number>('canvases/changeActiveCanvasConfig/product'),\n options: createAction<CanvasOptionChangePayload>('canvases/changeActiveCanvasConfig/options'),\n multi: createAction<ConfigChange>('canvases/changeActiveCanvasConfig/multi'),\n size: createAction<Partial<Dimension>>('canvases/changeActiveCanvasConfig/size'),\n priceToolSize: createAction<PriceToolSizePayload>(\n 'canvases/changeActiveCanvasConfig/priceToolSize'\n ),\n};\n\nconst calculateCustomPrice = {\n pending: createAction<CustomSizePricePayload>('canvases/calculateCustomPrice/pending'),\n fulfilled: createAction<string>('canvases/calculateCustomPrice/fulfilled'),\n rejected: createAction<string | undefined>('canvases/calculateCustomPrice/rejected'),\n};\n\nconst calculateCustomOptionPrices = {\n pending: createAction<CustomSizeOptionPayload>('canvases/calculateCustomOptionPrices/pending'),\n fulfilled: createAction<Pair<string, number>[]>('canvases/calculateCustomOptionPrices/fulfilled'),\n rejected: createAction('canvases/calculateCustomOptionPrices/rejected'),\n};\n\nexport default {\n changeActiveCanvasConfig,\n calculateCustomPrice,\n calculateCustomOptionPrices,\n};\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\nimport { keyBy, pick } from 'lodash';\nimport { createCachedSelector } from 're-reselect';\n\nimport slice from './canvases.slice';\nimport canvasesAdapter from './canvases.adapter';\nimport utils from './canvases.utils';\n\nimport products from 'domains/products';\nimport optionGroups from 'domains/option_groups';\n\nimport * as boundsUtils from 'utils/bounds_util';\n\nimport { validDimension } from 'utils/type_guards';\n\nimport type { RootState } from 'store/wos_store';\nimport type { CartProductForCreate } from 'domains/cart_products';\nimport type { CanvasConfiguration } from '.';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst defaultSelectors = canvasesAdapter.getSelectors();\n\nconst selectAllCanvasProductIds = createSelector(\n [compose(defaultSelectors.selectAll, localState)],\n (allCanvases) => {\n return allCanvases.map((c) => c.product);\n }\n);\n\nconst selectCanvasesLocked = (state: LocalState) => state.activeLock;\nconst selectArrangementPosition = (state: LocalState) => state.arrangementPosition;\n\nconst selectCanvasForCreateCartProduct = (\n state: RootState,\n canvas: CanvasConfiguration\n): CartProductForCreate => {\n const { product: product_api_id, rotation } = canvas;\n if (!product_api_id) throw new Error('No Product Selected');\n\n const product = state.products.entities[product_api_id];\n if (!product) throw new Error('No Product Found');\n\n let custom_size;\n if (products.utils.isCustomSizeProduct(product)) {\n custom_size = pick(canvas, ['height', 'width']);\n if (!validDimension(custom_size)) throw new Error('Invalid Custom Size Dimensions');\n }\n\n return {\n product_api_id,\n canvas_rotation: rotation,\n custom_size,\n border_color: canvas.borderColor,\n quantity: 1, // Will be overwritten in cart_product_creator. frankly this whole selector should probably be in that module\n };\n};\n\n/**\n * re-reselect selector will create multple caches based on the key passed\n * in the final call, called the keySelector -- since this selector\n * will be called for each canvas component instance, we want to make\n * sure to cache per-instance, otherise it will always re-calculate\n */\nconst selectNodesForCanvas = createCachedSelector(\n products.selectors.selectEntities,\n optionGroups.selectors.selectEntities,\n (state: RootState, canvasId: string) => defaultSelectors.selectById(localState(state), canvasId),\n (productsById, optionGroupsById, canvas) => {\n if (!canvas) return [];\n\n const nodes = utils.buildCanvasProductNodes(productsById, canvas.product);\n const overrides = utils.buildCanvasOverrideNodes(optionGroupsById, canvas.options);\n const keyedOverrides = keyBy(overrides, 'uid');\n\n return nodes.map((n) => ({\n ...n,\n ...keyedOverrides[n.uid],\n }));\n }\n)((_state, canvasId) => canvasId);\n\nconst selectCanvasNodeCalculatedBounds = (\n state: RootState,\n { canvasId, nodeUid }: { canvasId: string; nodeUid: string }\n) => {\n const canvas = defaultSelectors.selectById(localState(state), canvasId);\n const node = selectNodesForCanvas(state, canvasId).find((n) => n.uid === nodeUid);\n if (!canvas || !canvas.product || !node) return [0, 0, 0, 0];\n\n const product = products.selectors.selectById(state, canvas.product);\n if (!product) return [0, 0, 0, 0];\n\n // For now, this is not useful for text nodes\n if (node.node_type === 3) throw new Error('Only for use in image & mask nodes');\n\n const nodeType = node.node_type === 1 ? 'image' : 'mask';\n\n return node.bounds\n .split(',')\n .map((bound) => boundsUtils.calculateBoundDimension(bound, nodeType, product, canvas));\n};\n\nexport default {\n ...canvasesAdapter.getSelectors(localState),\n locked: compose(selectCanvasesLocked, localState),\n arrangementPosition: compose(selectArrangementPosition, localState),\n // Already globalized\n forCreateCartProduct: selectCanvasForCreateCartProduct,\n allProductIds: selectAllCanvasProductIds,\n nodesForCanvas: selectNodesForCanvas,\n calculatedBoundsForCanvasNode: selectCanvasNodeCalculatedBounds,\n};\n", "import { PayloadAction, createSlice, nanoid } from '@reduxjs/toolkit';\nimport { clamp, cloneDeep, fromPairs } from 'lodash';\n\nimport canvasesAdapter from './canvases.adapter';\nimport actions from './canvases.actions';\n\nimport cartProductEditor from 'domains/cart_product_editor';\nimport optionGroups from 'domains/option_groups';\nimport svgs from 'domains/svgs';\n\nimport type { SavedArrangement } from 'domains/saved_arrangements';\nimport type {\n CanvasesSliceInitialState,\n CanvasConfiguration,\n CanvasMovementPayload,\n} from './canvases.types';\nimport { hasMovementBounds, notNull } from 'utils/type_guards';\nimport { PickRequired, Point } from 'types/common_types';\nimport { calculateArrangementCanvasPositions } from 'utils/arrangement_util';\n\nconst initialState: CanvasesSliceInitialState = {\n active: null,\n activeLock: false,\n arrangementPosition: { x: 0, y: 0 },\n nextCanvasPosition: 0,\n status: 'idle',\n};\n\nconst initialCanvasEntityState = {\n rotation: 0,\n userRotated: false,\n position: { x: 0, y: 0 },\n};\n\nconst canvases = createSlice({\n name: 'canvases',\n initialState: canvasesAdapter.getInitialState(initialState),\n reducers: {\n addOne: canvasesAdapter.addOne,\n addCanvas: {\n prepare(payload: Partial<CanvasConfiguration>) {\n return {\n payload: { id: nanoid(), ...initialCanvasEntityState, ...payload },\n };\n },\n reducer(state, { payload }: PayloadAction<CanvasConfiguration>) {\n const update = canvasesAdapter.addOne(state, {\n ...payload,\n position: { x: state.nextCanvasPosition, y: 0 },\n });\n update.active = payload.id;\n\n return update;\n },\n },\n duplicateActiveCanvas: {\n prepare() {\n return { payload: { id: nanoid(), ...initialCanvasEntityState } };\n },\n reducer(state, { payload }: PayloadAction<CanvasConfiguration>) {\n if (state.active === null) return state;\n\n const copy = cloneDeep(state.entities[state.active]) as CanvasConfiguration;\n\n const newCanvas = { ...payload, ...copy };\n newCanvas.id = payload.id;\n newCanvas.position = { x: state.nextCanvasPosition, y: 0 };\n\n const update = canvasesAdapter.addOne(state, newCanvas);\n update.active = newCanvas.id;\n\n return update;\n },\n },\n updateCanvas(state, { payload }: PayloadAction<Partial<CanvasConfiguration>>) {\n const id = payload.id || state.active;\n if (!id) return state;\n\n return canvasesAdapter.updateOne(state, {\n id,\n changes: { ...payload },\n });\n },\n rotateCanvas: (state, { payload }: PayloadAction<string>) => {\n const canvas = state.entities[payload];\n\n // If trying to rotate a canvas with the wrong ID, do nothing\n if (!canvas) return state;\n\n const rotation = canvas.rotation === 90 ? 0 : 90;\n const update = canvasesAdapter.updateOne(state, {\n id: payload,\n changes: { rotation },\n });\n\n return update;\n },\n moveCanvas(state, { payload }: PayloadAction<PickRequired<CanvasMovementPayload, 'id'>>) {\n const { id, movementX, movementY } = payload;\n\n const canvas = state.entities[id];\n\n if (!canvas || !canvas.position) return state;\n\n let x = canvas.position.x + movementX;\n let y = canvas.position.y + movementY;\n\n if (hasMovementBounds(payload)) {\n const { leftLimit, rightLimit, bottomLimit, topLimit } = payload;\n x = clamp(x, leftLimit, rightLimit);\n y = clamp(y, topLimit, bottomLimit);\n }\n\n let update = canvasesAdapter.updateOne(state, { id, changes: { position: { x, y } } });\n const all = canvasesAdapter.getSelectors().selectAll(state);\n const { leftmost, topmost, updates } = calculateArrangementCanvasPositions(all);\n\n if (leftmost && topmost) {\n // Update the arrangement with the x, y point matching the leftmost & topmost canvases\n update.arrangementPosition.x += leftmost.position.x;\n update.arrangementPosition.y += topmost.position.y;\n\n update = canvasesAdapter.updateMany(update, updates);\n }\n return update;\n },\n removeCanvas(state, { payload }: PayloadAction<string>) {\n const { ids } = state;\n const active = payload;\n const activeIndex = ids.indexOf(active);\n const idToActivate = ids[activeIndex - 1] ? ids[activeIndex - 1] : ids[activeIndex + 1];\n\n let update = canvasesAdapter.removeOne(state, active);\n update.active = idToActivate as string;\n\n const all = canvasesAdapter.getSelectors().selectAll(state);\n const { leftmost, topmost, updates } = calculateArrangementCanvasPositions(all);\n\n if (leftmost && topmost) {\n // Update the arrangement with the x, y point matching the leftmost & topmost canvases\n update.arrangementPosition.x += leftmost.position.x;\n update.arrangementPosition.y += topmost.position.y;\n\n update = canvasesAdapter.updateMany(update, updates);\n }\n\n return update;\n },\n setActiveCanvasId(state, { payload }: PayloadAction<string>) {\n if (state.activeLock) return state;\n\n return {\n ...state,\n active: payload,\n };\n },\n resetToSingleCanvas(state, { payload }: PayloadAction<string | undefined | null>) {\n let update;\n\n if (payload) {\n const toRemove = state.ids.filter((id) => id !== payload);\n update = canvasesAdapter.removeMany(state, toRemove);\n // Resetting with an ID will maintain the existing product config, but we always want to\n // unset any cart product being edited\n update = canvasesAdapter.updateOne(update, {\n id: payload,\n changes: { cartProductId: undefined },\n });\n } else {\n // If called without an id to keep, we need to be adding a new canvas soon\n update = canvasesAdapter.removeAll(state);\n update.active = null;\n }\n\n return update;\n },\n restoreArrangement(state, { payload }: PayloadAction<SavedArrangement>) {\n const { canvases: arrangementCanvases } = payload;\n const canvasesToAdd = arrangementCanvases.map((canvas) => ({\n ...canvas.config,\n position: { x: canvas.x, y: canvas.y },\n }));\n\n const update = canvasesAdapter.addMany(\n canvasesAdapter.getInitialState(initialState),\n canvasesToAdd\n );\n\n update.active = canvasesToAdd[0].id;\n\n return update;\n },\n moveArrangement(state, { payload }: PayloadAction<CanvasMovementPayload>) {\n const { movementX, movementY } = payload;\n let x = state.arrangementPosition.x + movementX;\n let y = state.arrangementPosition.y + movementY;\n\n if (hasMovementBounds(payload)) {\n const { leftLimit, rightLimit, bottomLimit, topLimit } = payload;\n x = clamp(x, leftLimit, rightLimit);\n y = clamp(y, topLimit, bottomLimit);\n }\n\n return {\n ...state,\n arrangementPosition: { x, y },\n };\n },\n setArrangementPosition(state, { payload }: PayloadAction<Point>) {\n const { x, y } = payload;\n return {\n ...state,\n arrangementPosition: { x, y },\n };\n },\n\n setNextCanvasPosition(state, { payload }: PayloadAction<number>) {\n return {\n ...state,\n nextCanvasPosition: payload,\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.changeActiveCanvasConfig.catalog, (state, { payload }) => {\n if (!state.active) return state;\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: { catalog: payload },\n });\n\n update.activeLock = true;\n return update;\n })\n .addCase(actions.changeActiveCanvasConfig.subcatalog, (state, { payload }) => {\n if (!state.active) return state;\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: { subcatalog: payload },\n });\n\n update.activeLock = true;\n return update;\n })\n .addCase(actions.changeActiveCanvasConfig.product, (state, { payload }) => {\n if (!state.active) return state;\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: { product: payload },\n });\n\n // If the selected product is the custom size product, the pending price call will initialize this value\n update.priceFetchSuccessCount = undefined;\n\n update.activeLock = true;\n return update;\n })\n .addCase(actions.changeActiveCanvasConfig.options, (state, { payload }) => {\n if (!state.active) return state;\n const active = state.entities[state.active];\n if (!active) return state;\n\n let options;\n\n if (!payload.replace && active.options) {\n options = {\n ...active.options,\n ...fromPairs(payload.options),\n };\n } else {\n options = fromPairs(payload.options);\n }\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: {\n options,\n },\n });\n\n // When status is loading during an options update, that means we're updating due to a\n // custom size change, so don't unlock the active yet\n if (state.status !== 'loading') {\n update.activeLock = false;\n }\n\n return update;\n })\n .addCase(actions.changeActiveCanvasConfig.multi, (state, { payload }) => {\n if (!state.active) return state;\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: payload,\n });\n\n update.activeLock = true;\n return update;\n })\n .addCase(actions.changeActiveCanvasConfig.size, (state, { payload }) => {\n if (!state.active) return state;\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: {\n ...payload,\n rotation: 0,\n },\n });\n\n update.activeLock = true;\n return update;\n })\n .addCase(actions.changeActiveCanvasConfig.priceToolSize, (state, { payload }) => {\n if (!state.active) return;\n\n return canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: {\n ...payload,\n },\n });\n })\n .addCase(optionGroups.actions.fetchOptionGroups.fulfilled, (state, { payload }) => {\n if (payload.optionGroups.length === 0) {\n state.activeLock = false;\n }\n\n return state;\n })\n .addCase(actions.calculateCustomPrice.pending, (state) => {\n return { ...state, status: 'loading', priceFetchSuccessCount: 0 };\n })\n .addCase(actions.calculateCustomPrice.fulfilled, (state, { payload }) => {\n if (state.active === null) return state;\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: { customPrice: payload },\n });\n\n if (notNull(update.priceFetchSuccessCount)) {\n update.priceFetchSuccessCount += 1;\n }\n\n if (update.priceFetchSuccessCount === 2) {\n update.status = 'idle';\n update.activeLock = false;\n }\n\n return update;\n })\n .addCase(actions.calculateCustomPrice.rejected, (state) => {\n if (state.active === null) return state;\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: { customPrice: undefined },\n });\n\n update.status = 'error';\n return update;\n })\n .addCase(actions.calculateCustomOptionPrices.fulfilled, (state, { payload }) => {\n if (state.active === null) return state;\n\n const customOptionPrices = fromPairs(\n payload.map(([ogid, cost]) => [ogid, cost.toFixed(2)])\n );\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: { customOptionPrices },\n });\n\n if (notNull(update.priceFetchSuccessCount)) {\n update.priceFetchSuccessCount += 1;\n }\n\n if (update.priceFetchSuccessCount === 2) {\n update.status = 'idle';\n update.activeLock = false;\n }\n\n return update;\n })\n .addCase(actions.calculateCustomOptionPrices.rejected, (state) => {\n if (state.active === null) return state;\n\n const update = canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: { customOptionPrices: undefined },\n });\n\n update.status = 'error';\n return update;\n })\n .addCase(svgs.actions.getSVGImage.fulfilled, (state, { payload }) => {\n if (state.active === null || !payload.hasBorderColor || !payload.hideBorderColor)\n return state;\n\n // In the special case where the data-border-color is set to false,\n // we need to set the border color to white, but _not_ show the border color picker\n if (payload.hideBorderColor) {\n return canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: { borderColor: 'FFFFFFFF' },\n });\n }\n\n if (payload.hasBorderColor) {\n return canvasesAdapter.updateOne(state, {\n id: state.active,\n changes: { borderColor: state.entities[state.active]?.borderColor || 'FFFFFFFF' },\n });\n }\n })\n\n .addCase(cartProductEditor.actions.pending, (state) => {\n return canvasesAdapter.removeAll(state);\n })\n .addCase(cartProductEditor.actions.canvasReady, (state, { payload }) => {\n const update = canvasesAdapter.addOne(state, {\n ...payload,\n position: { x: state.nextCanvasPosition, y: 0 },\n });\n update.active = payload.id;\n return update;\n });\n },\n});\n\nexport default canvases;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { CanvasConfiguration } from './canvases.types';\n\nconst canvasesAdapter = createEntityAdapter<CanvasConfiguration>();\n\nexport default canvasesAdapter;\n", "import actions from './cart_product_editor.actions';\nimport slice from './cart_product_editor.slice';\nimport selectors from './cart_product_editor.selectors';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './cart_product_editor.slice';\n\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { CanvasConfiguration } from 'domains/canvases';\nimport type { ExpandedCartProduct } from 'domains/cart_products';\n\nconst pending = createAction<number>('cartProducts/editCartProduct/pending');\nconst cartProductReady = createAction<ExpandedCartProduct>(\n 'cartProducts/editCartProduct/cartProductReady'\n);\nconst canvasReady = createAction<CanvasConfiguration>('cartProducts/editCartProduct/canvasReady');\nconst setupComplete = createAction('cartProducts/editCartProduct/setupComplete');\nconst rejected = createAction('cartProducts/editCartProduct/rejected');\n\nexport default {\n pending,\n cartProductReady,\n canvasReady,\n setupComplete,\n rejected,\n};\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport actions from './cart_product_editor.actions';\n\ntype SliceInitialState = {\n edit?: {\n id: number;\n status: 'setup' | 'ready';\n };\n};\n\nconst initialState: SliceInitialState = {};\n\nconst slice = createSlice({\n name: 'cart_product_editor',\n initialState,\n reducers: {\n resetEditStatus(state) {\n return { ...state, edit: undefined };\n },\n },\n extraReducers: (builder) =>\n builder\n .addCase(actions.pending, (state, { payload }) => {\n return { ...state, edit: { id: payload, status: 'setup' } };\n })\n .addCase(actions.setupComplete, (state) => {\n const { edit } = state;\n if (!edit) throw new Error('Setup failed');\n\n return { ...state, edit: { ...edit, status: 'ready' } };\n }),\n});\n\nexport default slice;\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './cart_product_editor.slice';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectEditStatus = (state: LocalState) => state.edit;\n\nexport default {\n status: compose(selectEditStatus, localState),\n};\n", "import slice from './option_groups.slice';\n\nimport actions from './option_groups.actions';\nimport selectors from './option_groups.selectors';\nimport utils from './option_groups.utils';\n\nexport * from './option_groups.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n utils,\n};\n\nexport { default as slice } from './option_groups.slice';\n\nexport default module;\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport actions from './option_groups.actions';\nimport optionGroupsAdapter from './option_groups.adapter';\nimport utils from './option_groups.utils';\n\nimport type { LoadingStatus } from 'types/common_types';\n\ntype OptionGroupsSliceInitialState = {\n status: LoadingStatus;\n appliedFilters: Record<string, string>;\n /** Some products have no options, but we need to know them explicitly */\n emptyTemplateIds: number[];\n};\n\nconst initialState: OptionGroupsSliceInitialState = {\n status: 'idle',\n appliedFilters: {},\n emptyTemplateIds: [],\n};\n\nconst slice = createSlice({\n name: 'optionGroups',\n initialState: optionGroupsAdapter.getInitialState(initialState),\n reducers: {\n addMany: optionGroupsAdapter.addMany,\n reset() {\n return optionGroupsAdapter.getInitialState(initialState);\n },\n setAppliedOptionGroupFilters(state, { payload }: PayloadAction<Record<string, string>>) {\n return { ...state, appliedFilters: { ...state.appliedFilters, ...payload } };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.fetchOptionGroups.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.fetchOptionGroups.fulfilled, (state, { payload }) => {\n if (payload) {\n const { optionGroups, templateId } = payload;\n\n const update = optionGroupsAdapter.addMany(\n state,\n optionGroups.map((og) => utils.formatOptionGroup(og, templateId))\n );\n\n if (optionGroups.length === 0) {\n update.emptyTemplateIds.push(templateId);\n }\n\n update.status = 'idle';\n return update;\n } else {\n return { ...state, status: 'idle' };\n }\n })\n .addCase(actions.fetchOptionGroups.rejected, (state) => {\n // Handle an error, send more details to sentry, etc\n return { ...state, status: 'error' };\n })\n .addCase(actions.fetchOrderOptions.fulfilled, (state, { payload }) => {\n const update = optionGroupsAdapter.addMany(\n state,\n payload.map((og) => utils.formatOptionGroup(og, 'order-options'))\n );\n update.status = 'idle';\n return update;\n });\n },\n});\n\nexport default slice;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { RawOptionGroupAPIData } from './option_groups.types';\n\ntype FetchOptionGroupFulfilledPayload = {\n templateId: number;\n optionGroups: RawOptionGroupAPIData[];\n};\n\nconst fetchOptionGroups = {\n pending: createAction<number>('optionGroups/fetchOptionGroups/pending'),\n fulfilled: createAction<FetchOptionGroupFulfilledPayload>(\n 'optionGroups/fetchOptionGroups/fulfilled'\n ),\n rejected: createAction('optionGroups/fetchOptionGroups/rejected'),\n};\n\nconst fetchManyOptionGroups = createAction<number[]>('optionGroups/fetchManyOptionGroups');\n\nconst fetchOrderOptions = {\n pending: createAction('optionGroups/fetchOrderOptions/pending'),\n fulfilled: createAction<RawOptionGroupAPIData[]>('optionGroups/fetchOrderOptions/fulfilled'),\n rejected: createAction('optionGroups/fetchOrderOptions/rejected'),\n};\n\nexport default { fetchOptionGroups, fetchManyOptionGroups, fetchOrderOptions };\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\nimport type { OptionGroupAPIData } from './option_groups.types';\n\nconst optionGroupsAdapter = createEntityAdapter<OptionGroupAPIData>();\n\nexport default optionGroupsAdapter;\n", "import { findLast } from 'lodash';\nimport { notNull } from 'utils/type_guards';\nimport { byId } from 'utils/common';\nimport reporter from 'utils/reporter';\n\nimport type { Dimension, Pair } from 'types/common_types';\nimport type { ProductCustomOptionsAPIData } from 'types/catalog_types';\nimport type { CanvasOptionConfiguration } from 'domains/canvases';\nimport type {\n BaseOptionAPIData,\n OptionAPIData,\n OptionGroupAPIData,\n RawOptionAPIData,\n RawOptionGroupAPIData,\n} from '.';\n\nfunction formatOptionGroup(\n optionGroup: RawOptionGroupAPIData,\n templateId: number | 'order-options'\n): OptionGroupAPIData {\n return {\n ...optionGroup,\n parentId: templateId,\n options: optionGroup.options.map(formatOption),\n };\n}\n\nfunction formatOption(option: RawOptionAPIData): OptionAPIData {\n let customOptions = null;\n\n if (option.custom_options && typeof option.custom_options === 'string') {\n try {\n customOptions = JSON.parse(option.custom_options);\n } catch (error) {\n reporter.addBreadcrumb({\n level: 'info',\n message: 'Failed to parse this custom option JSON',\n data: { json: option.custom_options },\n });\n\n reporter.captureException(error);\n }\n }\n\n return { ...option, custom_options: customOptions };\n}\n\n/**\n * Gets the ID of the default option in an array of options\n */\nfunction findDefaultOptionId<T extends BaseOptionAPIData>(arr: T[]) {\n const found = arr.find((c) => !!c.default) || arr.find((c) => !c.read_only);\n return found?.id;\n}\n\n/**\n * Identifies an option group for options that handle crate/freight shipping\n */\nfunction isCrateOrFreightOptionGroup(optionGroup: OptionGroupAPIData) {\n return optionGroup.options.some(\n (o) =>\n o &&\n (o.handling_fee || o.handling_group === 'freight' || o.handling_group === 'acrylicfreight')\n );\n}\n\n/**\n * Finds the default option in an option group based on custom size\n */\nfunction findDefaultOptionForCustomSize(optionGroup: OptionGroupAPIData, size: Dimension) {\n // Exclude options that would be disabled at this size before finding the default\n const selectableOptions = optionGroup.options\n .map((possibleOption) => {\n if (!possibleOption.custom_options) return null;\n\n return customSizeOptionIsDisabled(size.height, size.width, possibleOption.custom_options)\n ? null\n : possibleOption;\n })\n .filter(notNull);\n\n return findDefaultOptionId(selectableOptions);\n}\n\n/**\n * Finds the crate size match in an option group based on custom size\n */\nfunction findDefaultCrateOptionForCustomSize(optionGroup: OptionGroupAPIData, size: Dimension) {\n // Finds the first crate necessary from largest -> smallest\n const match = findLast(optionGroup.options, (crateOption) => {\n const crateOptionCustomOptions = crateOption.custom_options;\n if (!crateOptionCustomOptions) return false;\n return matchesCustomSizeCrateOption(size.height, size.width, crateOptionCustomOptions);\n });\n\n return match?.id;\n}\n\n/**\n * Will return true if any dimension is out of the bounds of the customOptions\n */\nfunction customSizeOptionIsDisabled(\n customHeight: number,\n customWidth: number,\n customOptions: ProductCustomOptionsAPIData\n) {\n const { longmax, longmin, shortmin, shortmax } = customOptions;\n if (!longmax || !longmin || !shortmin || !shortmax) return false;\n\n const long = Math.max(customWidth, customHeight);\n const short = Math.min(customWidth, customHeight);\n\n return longmax < long || longmin > long || shortmax < short || shortmin > short;\n}\n\n/**\n * Will return true if either dimension is within the bounds of the customOptions\n */\nfunction matchesCustomSizeCrateOption(\n customHeight: number,\n customWidth: number,\n customOptions: ProductCustomOptionsAPIData\n) {\n const { longmax, longmin, shortmin, shortmax } = customOptions;\n if (!longmax || !longmin || !shortmin || !shortmax) return false;\n\n const long = Math.max(customWidth, customHeight);\n const short = Math.min(customWidth, customHeight);\n\n return (long >= longmin && long <= longmax) || (short >= shortmin && short <= shortmax);\n}\n\n/**\n * Finds the billing code for any selected options that need a custom price calculation\n */\nfunction findCustomSizeOptionsWithCalculatedPrice(\n optionGroups: OptionGroupAPIData[],\n configuredOptions: CanvasOptionConfiguration\n) {\n return Object.entries(configuredOptions)\n .map(([ogid, oid]) => {\n const og = optionGroups.find(byId(parseInt(ogid)));\n if (!og || !oid) return null;\n\n const o = og.options.find(byId(oid));\n if (!o) return null;\n\n const bc = o.service.billing_code;\n\n if (bc.indexOf('CALC') !== -1) {\n return [ogid, bc] as Pair<string, string>;\n }\n })\n .filter(notNull);\n}\n\nfunction findCheapestOption(arr: OptionAPIData[]) {\n const found = arr.reduce((acc: OptionAPIData, o) => {\n if (!acc.id) {\n return o;\n }\n\n return parseFloat(acc.service.price) < parseFloat(o.service.price) ? acc : o;\n }, arr[0]);\n\n return { id: found.id, item: found };\n}\n\nexport default {\n formatOptionGroup,\n formatOption,\n findDefaultOptionId,\n findDefaultOptionForCustomSize,\n findDefaultCrateOptionForCustomSize,\n isCrateOrFreightOptionGroup,\n customSizeOptionIsDisabled,\n findCustomSizeOptionsWithCalculatedPrice,\n findCheapestOption,\n};\n", "import type { PhotoCrop } from 'types/photo_types';\nimport type { Dimension, PickRequired, Point, StrictUnion } from 'types/common_types';\nimport type { CanvasConfiguration, CanvasMovementPayload } from 'domains/canvases';\nimport type {\n CustomSizeProductCustomOptions,\n ProductCustomOptionsAPIData,\n} from 'types/catalog_types';\nimport type { PendingCollectionAction } from 'domains/photos';\nimport type { WallPreviewSampleRoom, WallPreviewUserRoom } from 'domains/wall_preview_rooms';\nimport type { Cart } from 'domains/cart';\n\n/** Type guard used for filtering out null or undefined values from an array */\nexport function notNull<T>(item: T): item is NonNullable<T> {\n return item != null;\n}\n\n/** Validates a point as having a value, which could be 0 */\nexport function hasPoint(point: Partial<Point>): point is Point {\n return point.x != null && point.y != null;\n}\n\n/** Validates the cart data exists in the slice */\nexport function hasCart(cart: Cart | null): cart is Cart {\n return cart != null && !!cart.id;\n}\n\n/**\n * Validate that a crop has all necessary data for building a cart photo\n */\nexport function validCrop(crop: Partial<PhotoCrop>): crop is Required<PhotoCrop> {\n const requiredCropValues = [\n 'filter',\n 'rotation',\n 'zoom',\n 'originalH',\n 'originalW',\n 'cropX',\n 'cropY',\n 'cropW',\n 'cropH',\n ];\n\n return requiredCropValues.every((key: keyof PhotoCrop) => notNull(crop[key]));\n}\n\nexport function validDimension(dimensions: Partial<Dimension>): dimensions is Dimension {\n return notNull(dimensions.height) && notNull(dimensions.width);\n}\n\n/** Validate the canvas configuration ids */\nexport function hasFullyConfiguredCanvas(\n canvas: CanvasConfiguration\n): canvas is PickRequired<CanvasConfiguration, 'catalog' | 'subcatalog' | 'product' | 'options'> {\n return !!canvas.catalog && !!canvas.subcatalog && !!canvas.product && !!canvas.options;\n}\n\n/** Validate the canvas custom size */\nexport function validCustomSize(\n canvas: CanvasConfiguration\n): canvas is PickRequired<CanvasConfiguration, 'height' | 'width'> {\n return !!canvas.height && !!canvas.width;\n}\n\n/** Validate that the custom options on a product has the right properties */\nexport function validCustomOptions(\n customOptions: ProductCustomOptionsAPIData\n): customOptions is CustomSizeProductCustomOptions {\n return (\n customOptions.shortmin != null &&\n customOptions.shortmax != null &&\n customOptions.longmin != null &&\n customOptions.longmax != null &&\n customOptions.increment != null\n );\n}\n\nexport function hasMovementBounds(\n bounds: CanvasMovementPayload\n): bounds is Required<CanvasMovementPayload> {\n return (\n bounds.leftLimit != null &&\n bounds.rightLimit != null &&\n bounds.topLimit != null &&\n bounds.bottomLimit != null\n );\n}\n\nexport function roomIsUserRoom(\n room: WallPreviewUserRoom | WallPreviewSampleRoom\n): room is WallPreviewUserRoom {\n return room.type === 'user';\n}\n\nexport function validCreateCollectionAction(action: string): action is PendingCollectionAction {\n const createCollectionActions = [\n 'create_from_orphans',\n 'create_from_existing',\n 'create_from_upload',\n ];\n return createCollectionActions.includes(action);\n}\n", "import { isAxiosError } from 'axios';\nimport { createAction } from '@reduxjs/toolkit';\nimport accounting from 'accounting';\nimport { matchesProperty, partial } from 'lodash';\nimport { EMPTY, Observable, catchError, of, pipe } from 'rxjs';\n\nimport { IS_PRODUCTION } from './globals';\nimport errorReporter from './reporter'\n\nimport type { CaptureContext } from '@sentry/types'\nimport type { Action, ActionCreator, PayloadAction} from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\n\n/**\n * Use in array.find calls to find something by its id property\n */\nexport const byId = partial(matchesProperty<string | number | undefined>, 'id');\n\n/**\n * Prices for Cart API are formatted as cents, ie 1899 for $18.99\n * \n * We need to format these for display, as well as marking $0.00 as Free\n */\nexport function formatPrice(price?: number, options?: accounting.CurrencySettings<any>, atCost?: boolean) {\n if (price === undefined) return '';\n if (atCost) return 'At Cost';\n if (price === 0) return 'FREE';\n\n return accounting.formatMoney(price / 100, {...options})\n}\n\n/** Get the payload of an action in a map */\nexport const pluckPayload = <T>({ payload }: PayloadAction<T>) => payload;\n\n/**\n * Explicitly capture errors, and log to console if in dev/local\n */\nexport function logError(e: Error) {\n errorReporter.captureException(e);\n\n if (!IS_PRODUCTION && process.env.NODE_ENV !== 'test') {\n console.error(e);\n }\n}\n\n/** \n * Slot this in where you'd use a catchError in an Epic\n * Can take the action that should be returned (like a .rejected() action)\n * or nothing which will just pass through an empty observable\n */\nexport function catchAndLogError<T extends Action>(a?: Action | ActionCreator<T>) {\n return pipe<Observable<Action>, Observable<Action>>(\n catchError((e: Error) => {\n let capture = true;\n let captured: Error = e;\n let context: CaptureContext | undefined = undefined;\n\n // Add some additional handling for network errors\n if (isAxiosError(e)) {\n const message = e.response?.data?.error || `Request failed: ${e.response?.statusText || 'No reason provided'}`\n if (e.response && e.response.status >= 500) {\n // Normally I don't think its worth reporting 500 errors, but for short time after deploying\n // cart refactor its helpful\n captured = new Error(message);\n captured.name = `NetworkError - ${e.response.status}`;\n } else if (e.response && e.response.status) {\n captured = new Error(message);\n captured.name = `NetworkError - ${e.response.status}`;\n }\n\n context = { extra: { response: e.response?.data, requestURL: `${e.config?.baseURL}/${e.config?.url}`, requestMethod: e.config?.method, requestData: e.config?.data } };\n }\n\n if (capture) {\n errorReporter.captureException(captured, context);\n }\n\n if (!IS_PRODUCTION && process.env.NODE_ENV !== 'test') {\n console.error(captured)\n console.error(context)\n }\n\n if (!a) return EMPTY;\n\n if (typeof a === 'function') {\n return of(a(e));\n }\n\n return of(a)\n })\n )\n}\n\n/**\n * Creates a structured set of actions for handling API requests\n * \n * Actions are created with the name of the related domain, the name of the action,\n * and the status of the request.\n * \n * Type arguments are for the type of payload for the Pending action and Fulfilled action -- \n * essentially the argument types for request & response.\n * \n * Default is void, for no payload in the action.\n */\nexport const createAPIActions = <P = void, F = void>(domain: keyof RootState, actionName: string) => ({\n pending: createAction<P>(`${String(domain)}/${actionName}/pending`),\n fulfilled: createAction<F>(`${String(domain)}/${actionName}/fulfilled`),\n rejected: createAction(`${String(domain)}/${actionName}/rejected`),\n})", "import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n", "'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n", "'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\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 && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\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 *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\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 (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 const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\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 *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && 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 *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\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 *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n", "'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n", "'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(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 {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let 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 const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\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,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\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 * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n", "'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n", "'use strict';\n\nimport utils from '../utils.js';\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 {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n 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: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n", "// eslint-disable-next-line strict\nexport default null;\n", "'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\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 */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n 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 *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\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 *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n", "'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\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 *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(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 config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\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 config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n", "'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\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\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: platform.isNode ? 'http' : 'xhr',\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (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 headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\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 env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n", "'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n", "import platform from './node/index.js';\n\nexport {platform as default}\n", "import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\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 *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\n const isStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n isStandardBrowserWebWorkerEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n", "'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n", "'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n", "'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n", "'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\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} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n", "import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if(fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {\n break;\n }\n }\n\n if (!adapter) {\n if (adapter === false) {\n throw new AxiosError(\n `Adapter ${nameOrAdapter} is not supported by the environment`,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n throw new Error(\n utils.hasOwnProp(knownAdapters, nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Unknown adapter '${nameOrAdapter}'`\n );\n }\n\n if (!utils.isFunction(adapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n", "'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n if (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else {\n requestHeaders.setContentType('multipart/form-data;', false); // mobile/desktop app frameworks\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\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 const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, 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(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, 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(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\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 (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\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', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\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 *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n", "'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.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 const 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 const 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", "'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\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 *\n * @returns {string} The combined full path\n */\nexport default 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 *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default 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 *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n", "'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.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 const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let 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 let 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 const 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", "'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n", "'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\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 *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, 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 // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n", "'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !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 *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n", "export const VERSION = \"1.5.0\";", "'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default 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 *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n", "const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n", "//////////////////////////////////////////////////////////\n// Here we need to reference our other deep imports\n// so VS code will figure out where they are\n// see conversation here:\n// https://github.com/microsoft/TypeScript/issues/43034\n//////////////////////////////////////////////////////////\n\n// tslint:disable: no-reference\n// It's tempting to add references to all of the deep-import locations, but\n// adding references to those that require DOM types breaks Node projects.\n/// <reference path=\"./operators/index.ts\" />\n/// <reference path=\"./testing/index.ts\" />\n// tslint:enable: no-reference\n\n/* Observable */\nexport { Observable } from './internal/Observable';\nexport { ConnectableObservable } from './internal/observable/ConnectableObservable';\nexport { GroupedObservable } from './internal/operators/groupBy';\nexport { Operator } from './internal/Operator';\nexport { observable } from './internal/symbol/observable';\nexport { animationFrames } from './internal/observable/dom/animationFrames';\n\n/* Subjects */\nexport { Subject } from './internal/Subject';\nexport { BehaviorSubject } from './internal/BehaviorSubject';\nexport { ReplaySubject } from './internal/ReplaySubject';\nexport { AsyncSubject } from './internal/AsyncSubject';\n\n/* Schedulers */\nexport { asap, asapScheduler } from './internal/scheduler/asap';\nexport { async, asyncScheduler } from './internal/scheduler/async';\nexport { queue, queueScheduler } from './internal/scheduler/queue';\nexport { animationFrame, animationFrameScheduler } from './internal/scheduler/animationFrame';\nexport { VirtualTimeScheduler, VirtualAction } from './internal/scheduler/VirtualTimeScheduler';\nexport { Scheduler } from './internal/Scheduler';\n\n/* Subscription */\nexport { Subscription } from './internal/Subscription';\nexport { Subscriber } from './internal/Subscriber';\n\n/* Notification */\nexport { Notification, NotificationKind } from './internal/Notification';\n\n/* Utils */\nexport { pipe } from './internal/util/pipe';\nexport { noop } from './internal/util/noop';\nexport { identity } from './internal/util/identity';\nexport { isObservable } from './internal/util/isObservable';\n\n/* Promise Conversion */\nexport { lastValueFrom } from './internal/lastValueFrom';\nexport { firstValueFrom } from './internal/firstValueFrom';\n\n/* Error types */\nexport { ArgumentOutOfRangeError } from './internal/util/ArgumentOutOfRangeError';\nexport { EmptyError } from './internal/util/EmptyError';\nexport { NotFoundError } from './internal/util/NotFoundError';\nexport { ObjectUnsubscribedError } from './internal/util/ObjectUnsubscribedError';\nexport { SequenceError } from './internal/util/SequenceError';\nexport { TimeoutError } from './internal/operators/timeout';\nexport { UnsubscriptionError } from './internal/util/UnsubscriptionError';\n\n/* Static observable creation exports */\nexport { bindCallback } from './internal/observable/bindCallback';\nexport { bindNodeCallback } from './internal/observable/bindNodeCallback';\nexport { combineLatest } from './internal/observable/combineLatest';\nexport { concat } from './internal/observable/concat';\nexport { connectable } from './internal/observable/connectable';\nexport { defer } from './internal/observable/defer';\nexport { empty } from './internal/observable/empty';\nexport { forkJoin } from './internal/observable/forkJoin';\nexport { from } from './internal/observable/from';\nexport { fromEvent } from './internal/observable/fromEvent';\nexport { fromEventPattern } from './internal/observable/fromEventPattern';\nexport { generate } from './internal/observable/generate';\nexport { iif } from './internal/observable/iif';\nexport { interval } from './internal/observable/interval';\nexport { merge } from './internal/observable/merge';\nexport { never } from './internal/observable/never';\nexport { of } from './internal/observable/of';\nexport { onErrorResumeNext } from './internal/observable/onErrorResumeNext';\nexport { pairs } from './internal/observable/pairs';\nexport { partition } from './internal/observable/partition';\nexport { race } from './internal/observable/race';\nexport { range } from './internal/observable/range';\nexport { throwError } from './internal/observable/throwError';\nexport { timer } from './internal/observable/timer';\nexport { using } from './internal/observable/using';\nexport { zip } from './internal/observable/zip';\nexport { scheduled } from './internal/scheduled/scheduled';\n\n/* Constants */\nexport { EMPTY } from './internal/observable/empty';\nexport { NEVER } from './internal/observable/never';\n\n/* Types */\nexport * from './internal/types';\n\n/* Config */\nexport { config, GlobalConfig } from './internal/config';\n\n/* Operators */\nexport { audit } from './internal/operators/audit';\nexport { auditTime } from './internal/operators/auditTime';\nexport { buffer } from './internal/operators/buffer';\nexport { bufferCount } from './internal/operators/bufferCount';\nexport { bufferTime } from './internal/operators/bufferTime';\nexport { bufferToggle } from './internal/operators/bufferToggle';\nexport { bufferWhen } from './internal/operators/bufferWhen';\nexport { catchError } from './internal/operators/catchError';\nexport { combineAll } from './internal/operators/combineAll';\nexport { combineLatestAll } from './internal/operators/combineLatestAll';\nexport { combineLatestWith } from './internal/operators/combineLatestWith';\nexport { concatAll } from './internal/operators/concatAll';\nexport { concatMap } from './internal/operators/concatMap';\nexport { concatMapTo } from './internal/operators/concatMapTo';\nexport { concatWith } from './internal/operators/concatWith';\nexport { connect, ConnectConfig } from './internal/operators/connect';\nexport { count } from './internal/operators/count';\nexport { debounce } from './internal/operators/debounce';\nexport { debounceTime } from './internal/operators/debounceTime';\nexport { defaultIfEmpty } from './internal/operators/defaultIfEmpty';\nexport { delay } from './internal/operators/delay';\nexport { delayWhen } from './internal/operators/delayWhen';\nexport { dematerialize } from './internal/operators/dematerialize';\nexport { distinct } from './internal/operators/distinct';\nexport { distinctUntilChanged } from './internal/operators/distinctUntilChanged';\nexport { distinctUntilKeyChanged } from './internal/operators/distinctUntilKeyChanged';\nexport { elementAt } from './internal/operators/elementAt';\nexport { endWith } from './internal/operators/endWith';\nexport { every } from './internal/operators/every';\nexport { exhaust } from './internal/operators/exhaust';\nexport { exhaustAll } from './internal/operators/exhaustAll';\nexport { exhaustMap } from './internal/operators/exhaustMap';\nexport { expand } from './internal/operators/expand';\nexport { filter } from './internal/operators/filter';\nexport { finalize } from './internal/operators/finalize';\nexport { find } from './internal/operators/find';\nexport { findIndex } from './internal/operators/findIndex';\nexport { first } from './internal/operators/first';\nexport { groupBy, BasicGroupByOptions, GroupByOptionsWithElement } from './internal/operators/groupBy';\nexport { ignoreElements } from './internal/operators/ignoreElements';\nexport { isEmpty } from './internal/operators/isEmpty';\nexport { last } from './internal/operators/last';\nexport { map } from './internal/operators/map';\nexport { mapTo } from './internal/operators/mapTo';\nexport { materialize } from './internal/operators/materialize';\nexport { max } from './internal/operators/max';\nexport { mergeAll } from './internal/operators/mergeAll';\nexport { flatMap } from './internal/operators/flatMap';\nexport { mergeMap } from './internal/operators/mergeMap';\nexport { mergeMapTo } from './internal/operators/mergeMapTo';\nexport { mergeScan } from './internal/operators/mergeScan';\nexport { mergeWith } from './internal/operators/mergeWith';\nexport { min } from './internal/operators/min';\nexport { multicast } from './internal/operators/multicast';\nexport { observeOn } from './internal/operators/observeOn';\nexport { onErrorResumeNextWith } from './internal/operators/onErrorResumeNextWith';\nexport { pairwise } from './internal/operators/pairwise';\nexport { pluck } from './internal/operators/pluck';\nexport { publish } from './internal/operators/publish';\nexport { publishBehavior } from './internal/operators/publishBehavior';\nexport { publishLast } from './internal/operators/publishLast';\nexport { publishReplay } from './internal/operators/publishReplay';\nexport { raceWith } from './internal/operators/raceWith';\nexport { reduce } from './internal/operators/reduce';\nexport { repeat, RepeatConfig } from './internal/operators/repeat';\nexport { repeatWhen } from './internal/operators/repeatWhen';\nexport { retry, RetryConfig } from './internal/operators/retry';\nexport { retryWhen } from './internal/operators/retryWhen';\nexport { refCount } from './internal/operators/refCount';\nexport { sample } from './internal/operators/sample';\nexport { sampleTime } from './internal/operators/sampleTime';\nexport { scan } from './internal/operators/scan';\nexport { sequenceEqual } from './internal/operators/sequenceEqual';\nexport { share, ShareConfig } from './internal/operators/share';\nexport { shareReplay, ShareReplayConfig } from './internal/operators/shareReplay';\nexport { single } from './internal/operators/single';\nexport { skip } from './internal/operators/skip';\nexport { skipLast } from './internal/operators/skipLast';\nexport { skipUntil } from './internal/operators/skipUntil';\nexport { skipWhile } from './internal/operators/skipWhile';\nexport { startWith } from './internal/operators/startWith';\nexport { subscribeOn } from './internal/operators/subscribeOn';\nexport { switchAll } from './internal/operators/switchAll';\nexport { switchMap } from './internal/operators/switchMap';\nexport { switchMapTo } from './internal/operators/switchMapTo';\nexport { switchScan } from './internal/operators/switchScan';\nexport { take } from './internal/operators/take';\nexport { takeLast } from './internal/operators/takeLast';\nexport { takeUntil } from './internal/operators/takeUntil';\nexport { takeWhile } from './internal/operators/takeWhile';\nexport { tap, TapObserver } from './internal/operators/tap';\nexport { throttle, ThrottleConfig } from './internal/operators/throttle';\nexport { throttleTime } from './internal/operators/throttleTime';\nexport { throwIfEmpty } from './internal/operators/throwIfEmpty';\nexport { timeInterval } from './internal/operators/timeInterval';\nexport { timeout, TimeoutConfig, TimeoutInfo } from './internal/operators/timeout';\nexport { timeoutWith } from './internal/operators/timeoutWith';\nexport { timestamp } from './internal/operators/timestamp';\nexport { toArray } from './internal/operators/toArray';\nexport { window } from './internal/operators/window';\nexport { windowCount } from './internal/operators/windowCount';\nexport { windowTime } from './internal/operators/windowTime';\nexport { windowToggle } from './internal/operators/windowToggle';\nexport { windowWhen } from './internal/operators/windowWhen';\nexport { withLatestFrom } from './internal/operators/withLatestFrom';\nexport { zipAll } from './internal/operators/zipAll';\nexport { zipWith } from './internal/operators/zipWith';\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nexport class Observable<T> implements Subscribable<T> {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable<any> | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator<any, T> | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => {\n return new Observable<T>(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift<R>(operator?: Operator<T, R>): Observable<R> {\n const observable = new Observable<R>();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber<T>): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise<void>;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise<void>;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor<void>((resolve, reject) => {\n const subscriber = new SafeSubscriber<T>({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise<void>;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<any>): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable<T>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>;\n pipe<A, B, C, D>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>\n ): Observable<D>;\n pipe<A, B, C, D, E>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>\n ): Observable<E>;\n pipe<A, B, C, D, E, F>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>\n ): Observable<F>;\n pipe<A, B, C, D, E, F, G>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>\n ): Observable<G>;\n pipe<A, B, C, D, E, F, G, H>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>\n ): Observable<H>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>\n ): Observable<I>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n ...operations: OperatorFunction<any, any>[]\n ): Observable<unknown>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction<any, any>[]): Observable<any> {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise<T | undefined>;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise<T | undefined> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise<T | undefined>;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver<T>(value: any): value is Observer<T> {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber<T>(value: any): value is Subscriber<T> {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n 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: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, 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", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass<T>(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove<T>(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification<any>, subscriber: Subscriber<any>) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification<T>(value: T) {\n return createNotification('N', value, undefined) as NextNotification<T>;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe<T, A>(fn1: UnaryFunction<T, A>): UnaryFunction<T, A>;\nexport function pipe<T, A, B>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>): UnaryFunction<T, B>;\nexport function pipe<T, A, B, C>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>): UnaryFunction<T, C>;\nexport function pipe<T, A, B, C, D>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>\n): UnaryFunction<T, D>;\nexport function pipe<T, A, B, C, D, E>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>\n): UnaryFunction<T, E>;\nexport function pipe<T, A, B, C, D, E, F>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>\n): UnaryFunction<T, F>;\nexport function pipe<T, A, B, C, D, E, F, G>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>\n): UnaryFunction<T, G>;\nexport function pipe<T, A, B, C, D, E, F, G, H>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>\n): UnaryFunction<T, H>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>\n): UnaryFunction<T, I>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>,\n ...fns: UnaryFunction<any, any>[]\n): UnaryFunction<T, unknown>;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array<UnaryFunction<any, any>>): UnaryFunction<any, any> {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n if (fns.length === 0) {\n return identity as UnaryFunction<any, any>;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any);\n };\n}\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `<T>(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity<T>(x: T): T {\n return x;\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType<typeof Observable>['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate<T, R>(\n init: (liftedSource: Observable<T>, subscriber: Subscriber<R>) => (() => void) | void\n): OperatorFunction<T, R> {\n return (source: Observable<T>) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber<R>, liftedSource: Observable<T>) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nexport class Action<T> extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction<T>, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n", "import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule<T>(work: (this: SchedulerAction<T>, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor<T>(this, work).schedule(state, delay);\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n", "import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * <span class=\"informal\">Put every next task on a queue, instead of executing it immediately</span>\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\n\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated Renamed to {@link queueScheduler}. Will be removed in v8.\n */\nexport const queue = queueScheduler;\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.</span>\n *\n * \n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable<never>((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable<never>((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n", "import { SchedulerLike, ValueFromArray } from '../types';\nimport { Observable } from '../Observable';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function of(value: null): Observable<null>;\nexport function of(value: undefined): Observable<undefined>;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of(scheduler: SchedulerLike): Observable<never>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of<A extends readonly unknown[]>(...valuesAndScheduler: [...A, SchedulerLike]): Observable<ValueFromArray<A>>;\n\nexport function of(): Observable<never>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function of<T>(): Observable<T>;\nexport function of<T>(value: T): Observable<T>;\nexport function of<A extends readonly unknown[]>(...values: A): Observable<ValueFromArray<A>>;\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * <span class=\"informal\">Each argument becomes a `next` notification.</span>\n *\n * \n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: 10\n * // next: 20\n * // next: 30\n * // the end\n * ```\n *\n * Emit the array `[1, 2, 3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1, 2, 3])\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: [1, 2, 3]\n * // the end\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n */\nexport function of<T>(...args: Array<T | SchedulerLike>): Observable<T> {\n const scheduler = popScheduler(args);\n return from(args as T[], scheduler);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last<T>(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\n\nexport function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function from<O extends ObservableInput<any>>(input: O, scheduler: SchedulerLike | undefined): Observable<ObservedValueOf<O>>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * \n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable\" target=\"_blank\">iterable</a>\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from, take } from 'rxjs';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * With `asyncScheduler`\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // 'start'\n * // 'end'\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput<T>} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable<T>}\n */\nexport function from<T>(input: ObservableInput<T>, scheduler?: SchedulerLike): Observable<T> {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n", "import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see {@link from}\n * @see {@link of}\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled<T>(input: ObservableInput<T>, scheduler: SchedulerLike): Observable<T> {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { InteropObservable, SchedulerLike } from '../types';\n\nexport function scheduleObservable<T>(input: InteropObservable<T>, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n", "export const isArrayLike = (<T>(x: any): x is ArrayLike<T> => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike<any> {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable<any> {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable<T>(obj: any): obj is AsyncIterable<T> {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable<any> {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "/** @prettier */\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n *\n * Ensure values in subscribe are called just before browser repaint\n *\n * ```ts\n * import { interval, observeOn, animationFrameScheduler } from 'rxjs';\n *\n * const someDiv = document.createElement('div');\n * someDiv.style.cssText = 'width: 200px;background: #09c';\n * document.body.appendChild(someDiv);\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler) // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param delay Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return A function that returns an Observable that emits the same\n * notifications as the source Observable, but with provided scheduler.\n */\nexport function observeOn<T>(scheduler: SchedulerLike, delay = 0): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay),\n () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay),\n (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)\n )\n );\n });\n}\n", "import { Subscription } from '../Subscription';\nimport { SchedulerAction, SchedulerLike } from '../types';\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay: number,\n repeat: true\n): void;\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay?: number,\n repeat?: false\n): Subscription;\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay = 0,\n repeat = false\n): Subscription | void {\n const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction<any>) {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n } else {\n this.unsubscribe();\n }\n }, delay);\n\n parentSubscription.add(scheduleSubscription);\n\n if (!repeat) {\n // Because user-land scheduler implementations are unlikely to properly reuse\n // Actions for repeat scheduling, we can't trust that the returned subscription\n // will control repeat subscription scenarios. So we're trying to avoid using them\n // incorrectly within this library.\n return scheduleSubscription;\n }\n}\n", "import { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * \n *\n * ## Example\n *\n * Given the following code:\n *\n * ```ts\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3);\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // 6\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n *\n * If we instead use the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emitted by Observable `a`:\n *\n * ```ts\n * import { of, subscribeOn, asyncScheduler, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3).pipe(subscribeOn(asyncScheduler));\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 4\n * // 5\n * // 6\n * // 1\n * // 2\n * // 3\n * ```\n *\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param scheduler The {@link SchedulerLike} to perform subscription actions on.\n * @param delay A delay to pass to the scheduler to delay subscriptions\n * @return A function that returns an Observable modified so that its\n * subscriptions happen on the specified {@link SchedulerLike}.\n */\nexport function subscribeOn<T>(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { SchedulerLike } from '../types';\n\nexport function schedulePromise<T>(input: PromiseLike<T>, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\nexport function scheduleArray<T>(input: ArrayLike<T>, scheduler: SchedulerLike) {\n return new Observable<T>((subscriber) => {\n // The current array index.\n let i = 0;\n // Start iterating over the array like on a schedule.\n return scheduler.schedule(function () {\n if (i === input.length) {\n // If we have hit the end of the array like in the\n // previous job, we can complete.\n subscriber.complete();\n } else {\n // Otherwise let's next the value at the current index,\n // then increment our index.\n subscriber.next(input[i++]);\n // If the last emission didn't cause us to close the subscriber\n // (via take or some side effect), reschedule the job and we'll\n // make another pass.\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\n\n/**\n * Used in {@link scheduled} to create an observable from an Iterable.\n * @param input The iterable to create an observable from\n * @param scheduler The scheduler to use\n */\nexport function scheduleIterable<T>(input: Iterable<T>, scheduler: SchedulerLike) {\n return new Observable<T>((subscriber) => {\n let iterator: Iterator<T, T>;\n\n // Schedule the initial creation of the iterator from\n // the iterable. This is so the code in the iterable is\n // not called until the scheduled job fires.\n executeSchedule(subscriber, scheduler, () => {\n // Create the iterator.\n iterator = (input as any)[Symbol_iterator]();\n\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n let value: T;\n let done: boolean | undefined;\n try {\n // Pull the value out of the iterator\n ({ value, done } = iterator.next());\n } catch (err) {\n // We got an error while pulling from the iterator\n subscriber.error(err);\n return;\n }\n\n if (done) {\n // If it is \"done\" we just complete. This mimics the\n // behavior of JavaScript's `for..of` consumption of\n // iterables, which will not emit the value from an iterator\n // result of `{ done: true: value: 'here' }`.\n subscriber.complete();\n } else {\n // The iterable is not done, emit the value.\n subscriber.next(value);\n }\n },\n 0,\n true\n );\n });\n\n // During finalization, if we see this iterator has a `return` method,\n // then we know it is a Generator, and not just an Iterator. So we call\n // the `return()` function. This will ensure that any `finally { }` blocks\n // inside of the generator we can hit will be hit properly.\n return () => isFunction(iterator?.return) && iterator.return();\n });\n}\n", "import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function scheduleAsyncIterable<T>(input: AsyncIterable<T>, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable<T>((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n iterator.next().then((result) => {\n if (result.done) {\n // This will remove the subscriptions from\n // the parent subscription.\n subscriber.complete();\n } else {\n subscriber.next(result.value);\n }\n });\n },\n 0,\n true\n );\n });\n });\n}\n", "import { SchedulerLike, ReadableStreamLike } from '../types';\nimport { Observable } from '../Observable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\n\nexport function scheduleReadableStreamLike<T>(input: ReadableStreamLike<T>, scheduler: SchedulerLike): Observable<T> {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n", "/**\n * Checks to see if a value is not only a `Date` object,\n * but a *valid* `Date` object that can be converted to a\n * number. For example, `new Date('blah')` is indeed an\n * `instanceof Date`, however it cannot be converted to a\n * number.\n */\nexport function isValidDate(value: any): value is Date {\n return value instanceof Date && !isNaN(value as any);\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function map<T, R>(project: (value: T, index: number) => R): OperatorFunction<T, R>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function map<T, R, A>(project: (this: A, value: T, index: number) => R, thisArg: A): OperatorFunction<T, R>;\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * \n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n *\n * Map every click to the `clientX` position of that click\n *\n * ```ts\n * import { fromEvent, map } from 'rxjs';\n *\n * const clicks = fromEvent<PointerEvent>(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n *\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return A function that returns an Observable that emits the values from the\n * source Observable transformed by the given `project` function.\n */\nexport function map<T, R>(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction<T, R> {\n return operate((source, subscriber) => {\n // The index of the value from the source. Used with projection.\n let index = 0;\n // Subscribe to the source, all errors and completions are sent along\n // to the consumer.\n source.subscribe(\n createOperatorSubscriber(subscriber, (value: T) => {\n // Call the projection function with the appropriate this context,\n // and send the resulting value to the consumer.\n subscriber.next(project.call(thisArg, value, index++));\n })\n );\n });\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf, ObservableInputTuple } from '../types';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { Subscriber } from '../Subscriber';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { Subscription } from '../Subscription';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { AnyCatcher } from '../AnyCatcher';\nimport { executeSchedule } from '../util/executeSchedule';\n\n// combineLatest(any)\n// We put this first because we need to catch cases where the user has supplied\n// _exactly `any`_ as the argument. Since `any` literally matches _anything_,\n// we don't want it to randomly hit one of the other type signatures below,\n// as we have no idea at build-time what type we should be returning when given an any.\n\n/**\n * You have passed `any` here, we can't figure out if it is\n * an array or an object, so you're getting `unknown`. Use better types.\n * @param arg Something typed as `any`\n */\nexport function combineLatest<T extends AnyCatcher>(arg: T): Observable<unknown>;\n\n// combineLatest([a, b, c])\nexport function combineLatest(sources: []): Observable<never>;\nexport function combineLatest<A extends readonly unknown[]>(sources: readonly [...ObservableInputTuple<A>]): Observable<A>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[], R>(\n sources: readonly [...ObservableInputTuple<A>],\n resultSelector: (...values: A) => R,\n scheduler: SchedulerLike\n): Observable<R>;\nexport function combineLatest<A extends readonly unknown[], R>(\n sources: readonly [...ObservableInputTuple<A>],\n resultSelector: (...values: A) => R\n): Observable<R>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[]>(\n sources: readonly [...ObservableInputTuple<A>],\n scheduler: SchedulerLike\n): Observable<A>;\n\n// combineLatest(a, b, c)\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[], R>(\n ...sourcesAndResultSelectorAndScheduler: [...ObservableInputTuple<A>, (...values: A) => R, SchedulerLike]\n): Observable<R>;\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest<A extends readonly unknown[], R>(\n ...sourcesAndResultSelector: [...ObservableInputTuple<A>, (...values: A) => R]\n): Observable<R>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[]>(\n ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike]\n): Observable<A>;\n\n// combineLatest({a, b, c})\nexport function combineLatest(sourcesObject: { [K in any]: never }): Observable<never>;\nexport function combineLatest<T extends Record<string, ObservableInput<any>>>(\n sourcesObject: T\n): Observable<{ [K in keyof T]: ObservedValueOf<T[K]> }>;\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * <span class=\"informal\">Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.</span>\n *\n * \n *\n * `combineLatest` combines the values from all the Observables passed in the\n * observables array. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to this operator,\n * the returned Observable will always emit an array of `n` values, in an order\n * corresponding to the order of the passed Observables (the value from the first Observable\n * will be at index 0 of the array and so on).\n *\n * Static version of `combineLatest` accepts an array of Observables. Note that an array of\n * Observables is a good choice, if you don't know beforehand how many Observables\n * you will combine. Passing an empty array will result in an Observable that\n * completes immediately.\n *\n * To ensure the output array always has the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will now be impossible to include a value from the\n * completed Observable in the resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, the resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, the result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of a completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * ## Examples\n *\n * Combine two timer Observables\n *\n * ```ts\n * import { timer, combineLatest } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest([firstTimer, secondTimer]);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n *\n * Combine a dictionary of Observables\n *\n * ```ts\n * import { of, delay, startWith, combineLatest } from 'rxjs';\n *\n * const observables = {\n * a: of(1).pipe(delay(1000), startWith(0)),\n * b: of(5).pipe(delay(5000), startWith(0)),\n * c: of(10).pipe(delay(10000), startWith(0))\n * };\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // { a: 0, b: 0, c: 0 } immediately\n * // { a: 1, b: 0, c: 0 } after 1s\n * // { a: 1, b: 5, c: 0 } after 5s\n * // { a: 1, b: 5, c: 10 } after 10s\n * ```\n *\n * Combine an array of Observables\n *\n * ```ts\n * import { of, delay, startWith, combineLatest } from 'rxjs';\n *\n * const observables = [1, 5, 10].map(\n * n => of(n).pipe(\n * delay(n * 1000), // emit 0 and then emit n after n seconds\n * startWith(0)\n * )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n * Use map operator to dynamically calculate the Body-Mass Index\n *\n * ```ts\n * import { of, combineLatest, map } from 'rxjs';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest([weight, height]).pipe(\n * map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} [observables] An array of input Observables to combine with each other.\n * An array of Observables must be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nexport function combineLatest<O extends ObservableInput<any>, R>(...args: any[]): Observable<R> | Observable<ObservedValueOf<O>[]> {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n\n const { args: observables, keys } = argsArgArrayOrObject(args);\n\n if (observables.length === 0) {\n // If no observables are passed, or someone has passed an empty array\n // of observables, or even an empty object POJO, we need to just\n // complete (EMPTY), but we have to honor the scheduler provided if any.\n return from([], scheduler as any);\n }\n\n const result = new Observable<ObservedValueOf<O>[]>(\n combineLatestInit(\n observables as ObservableInput<ObservedValueOf<O>>[],\n scheduler,\n keys\n ? // A handler for scrubbing the array of args into a dictionary.\n (values) => createObject(keys, values)\n : // A passthrough to just return the array\n identity\n )\n );\n\n return resultSelector ? (result.pipe(mapOneOrManyArgs(resultSelector)) as Observable<R>) : result;\n}\n\nexport function combineLatestInit(\n observables: ObservableInput<any>[],\n scheduler?: SchedulerLike,\n valueTransform: (values: any[]) => any = identity\n) {\n return (subscriber: Subscriber<any>) => {\n // The outer subscription. We're capturing this in a function\n // because we may have to schedule it.\n maybeSchedule(\n scheduler,\n () => {\n const { length } = observables;\n // A store for the values each observable has emitted so far. We match observable to value on index.\n const values = new Array(length);\n // The number of currently active subscriptions, as they complete, we decrement this number to see if\n // we are all done combining values, so we can complete the result.\n let active = length;\n // The number of inner sources that still haven't emitted the first value\n // We need to track this because all sources need to emit one value in order\n // to start emitting values.\n let remainingFirstValues = length;\n // The loop to kick off subscription. We're keying everything on index `i` to relate the observables passed\n // in to the slot in the output array or the key in the array of keys in the output dictionary.\n for (let i = 0; i < length; i++) {\n maybeSchedule(\n scheduler,\n () => {\n const source = from(observables[i], scheduler as any);\n let hasFirstValue = false;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // When we get a value, record it in our set of values.\n values[i] = value;\n if (!hasFirstValue) {\n // If this is our first value, record that.\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n // We're not waiting for any more\n // first values, so we can emit!\n subscriber.next(valueTransform(values.slice()));\n }\n },\n () => {\n if (!--active) {\n // We only complete the result if we have no more active\n // inner observables.\n subscriber.complete();\n }\n }\n )\n );\n },\n subscriber\n );\n }\n },\n subscriber\n );\n };\n}\n\n/**\n * A small utility to handle the couple of locations where we want to schedule if a scheduler was provided,\n * but we don't if there was no scheduler.\n */\nfunction maybeSchedule(scheduler: SchedulerLike | undefined, execute: () => void, subscription: Subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n } else {\n execute();\n }\n}\n", "const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\n\n/**\n * Used in functions where either a list of arguments, a single array of arguments, or a\n * dictionary of arguments can be returned. Returns an object with an `args` property with\n * the arguments in an array, if it is a dictionary, it will also return the `keys` in another\n * property.\n */\nexport function argsArgArrayOrObject<T, O extends Record<string, T>>(args: T[] | [O] | [T[]]): { args: T[]; keys: string[] | null } {\n if (args.length === 1) {\n const first = args[0];\n if (isArray(first)) {\n return { args: first, keys: null };\n }\n if (isPOJO(first)) {\n const keys = getKeys(first);\n return {\n args: keys.map((key) => first[key]),\n keys,\n };\n }\n }\n\n return { args: args as T[], keys: null };\n}\n\nfunction isPOJO(obj: any): obj is object {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n", "export function createObject(keys: string[], values: any[]) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {} as any);\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInputTuple, SchedulerLike } from '../types';\nimport { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function concat<T extends readonly unknown[]>(...inputs: [...ObservableInputTuple<T>]): Observable<T[number]>;\nexport function concat<T extends readonly unknown[]>(\n ...inputsAndScheduler: [...ObservableInputTuple<T>, SchedulerLike]\n): Observable<T[number]>;\n\n/**\n * Creates an output Observable which sequentially emits all values from the first given\n * Observable and then moves on to the next.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * \n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n *\n * Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n *\n * ```ts\n * import { interval, take, range, concat } from 'rxjs';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * Concatenate 3 Observables\n *\n * ```ts\n * import { interval, take, concat } from 'rxjs';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * Concatenate the same Observable to repeat it\n *\n * ```ts\n * import { interval, take, concat } from 'rxjs';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('...and it is done!')\n * });\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // '...and it is done!' also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param args Input Observables to concatenate.\n */\nexport function concat(...args: any[]): Observable<unknown> {\n return concatAll()(from(args, popScheduler(args)));\n}\n", "import { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * \n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, map, interval, take, concatAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(() => interval(1000).pipe(take(4)))\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaustAll}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return A function that returns an Observable emitting values from all the\n * inner Observables concatenated.\n */\nexport function concatAll<O extends ObservableInput<any>>(): OperatorFunction<O, ObservedValueOf<O>> {\n return mergeAll(1);\n}\n", "import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * \n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n *\n * ```ts\n * import { fromEvent, map, interval, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map(() => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n *\n * ```ts\n * import { fromEvent, map, interval, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(() => interval(1000).pipe(take(10)))\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link exhaustAll}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Infinity] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits values coming from\n * all the inner Observables emitted by the source Observable.\n */\nexport function mergeAll<O extends ObservableInput<any>>(concurrent: number = Infinity): OperatorFunction<O, ObservedValueOf<O>> {\n return mergeMap(identity, concurrent);\n}\n", "import { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined,\n concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R,\n concurrent?: number\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n *\n * Map and flatten each letter to an Observable ticking every 1 second\n *\n * ```ts\n * import { of, mergeMap, interval, map } from 'rxjs';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x + i)))\n * );\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a, b, c every second with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and merging\n * the results of the Observables obtained from this transformation.\n */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Infinity\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n if (isFunction(resultSelector)) {\n // DEPRECATED PATH\n return mergeMap((a, i) => map((b: any, ii: number) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n", "import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A process embodying the general \"merge\" strategy. This is used in\n * `mergeMap` and `mergeScan` because the logic is otherwise nearly identical.\n * @param source The original source observable\n * @param subscriber The consumer subscriber\n * @param project The projection function to get our inner sources\n * @param concurrent The number of concurrent inner subscriptions\n * @param onBeforeNext Additional logic to apply before nexting to our consumer\n * @param expand If `true` this will perform an \"expand\" strategy, which differs only\n * in that it recurses, and the inner subscription must be schedule-able.\n * @param innerSubScheduler A scheduler to use to schedule inner subscriptions,\n * this is to support the expand strategy, mostly, and should be deprecated\n */\nexport function mergeInternals<T, R>(\n source: Observable<T>,\n subscriber: Subscriber<R>,\n project: (value: T, index: number) => ObservableInput<R>,\n concurrent: number,\n onBeforeNext?: (innerValue: R) => void,\n expand?: boolean,\n innerSubScheduler?: SchedulerLike,\n additionalFinalizer?: () => void\n) {\n // Buffered values, in the event of going over our concurrency limit\n const buffer: T[] = [];\n // The number of active inner subscriptions.\n let active = 0;\n // An index to pass to our accumulator function\n let index = 0;\n // Whether or not the outer source has completed.\n let isComplete = false;\n\n /**\n * Checks to see if we can complete our result or not.\n */\n const checkComplete = () => {\n // If the outer has completed, and nothing is left in the buffer,\n // and we don't have any active inner subscriptions, then we can\n // Emit the state and complete.\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n\n // If we're under our concurrency limit, just start the inner subscription, otherwise buffer and wait.\n const outerNext = (value: T) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n\n const doInnerSub = (value: T) => {\n // If we're expanding, we need to emit the outer values and the inner values\n // as the inners will \"become outers\" in a way as they are recursively fed\n // back to the projection mechanism.\n expand && subscriber.next(value as any);\n\n // Increment the number of active subscriptions so we can track it\n // against our concurrency limit later.\n active++;\n\n // A flag used to show that the inner observable completed.\n // This is checked during finalization to see if we should\n // move to the next item in the buffer, if there is on.\n let innerComplete = false;\n\n // Start our inner subscription.\n innerFrom(project(value, index++)).subscribe(\n createOperatorSubscriber(\n subscriber,\n (innerValue) => {\n // `mergeScan` has additional handling here. For example\n // taking the inner value and updating state.\n onBeforeNext?.(innerValue);\n\n if (expand) {\n // If we're expanding, then just recurse back to our outer\n // handler. It will emit the value first thing.\n outerNext(innerValue as any);\n } else {\n // Otherwise, emit the inner value.\n subscriber.next(innerValue);\n }\n },\n () => {\n // Flag that we have completed, so we know to check the buffer\n // during finalization.\n innerComplete = true;\n },\n // Errors are passed to the destination.\n undefined,\n () => {\n // During finalization, if the inner completed (it wasn't errored or\n // cancelled), then we want to try the next item in the buffer if\n // there is one.\n if (innerComplete) {\n // We have to wrap this in a try/catch because it happens during\n // finalization, possibly asynchronously, and we want to pass\n // any errors that happen (like in a projection function) to\n // the outer Subscriber.\n try {\n // INNER SOURCE COMPLETE\n // Decrement the active count to ensure that the next time\n // we try to call `doInnerSub`, the number is accurate.\n active--;\n // If we have more values in the buffer, try to process those\n // Note that this call will increment `active` ahead of the\n // next conditional, if there were any more inner subscriptions\n // to start.\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift()!;\n // Particularly for `expand`, we need to check to see if a scheduler was provided\n // for when we want to start our inner subscription. Otherwise, we just start\n // are next inner subscription.\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n } else {\n doInnerSub(bufferedValue);\n }\n }\n // Check to see if we can complete, and complete if so.\n checkComplete();\n } catch (err) {\n subscriber.error(err);\n }\n }\n }\n )\n );\n };\n\n // Subscribe to our source observable.\n source.subscribe(\n createOperatorSubscriber(subscriber, outerNext, () => {\n // Outer completed, make a note of it, and check to see if we can complete everything.\n isComplete = true;\n checkComplete();\n })\n );\n\n // Additional finalization (for when the destination is torn down).\n // Other finalization is added implicitly via subscription above.\n return () => {\n additionalFinalizer?.();\n };\n}\n", "import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInput } from '../types';\nimport { innerFrom } from './innerFrom';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * <span class=\"informal\">Creates the Observable lazily, that is, only when it\n * is subscribed.\n * </span>\n *\n * \n *\n * `defer` allows you to create an Observable only when the Observer\n * subscribes. It waits until an Observer subscribes to it, calls the given\n * factory function to get an Observable -- where a factory function typically\n * generates a new Observable -- and subscribes the Observer to this Observable.\n * In case the factory function returns a falsy value, then EMPTY is used as\n * Observable instead. Last but not least, an exception during the factory\n * function call is transferred to the Observer by calling `error`.\n *\n * ## Example\n *\n * Subscribe to either an Observable of clicks or an Observable of interval, at random\n *\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(() => {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): ObservableInput} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n */\nexport function defer<R extends ObservableInput<any>>(observableFactory: () => R): Observable<ObservedValueOf<R>> {\n return new Observable<ObservedValueOf<R>>((subscriber) => {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n", "import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInputTuple, ObservableInput } from '../types';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nimport { AnyCatcher } from '../AnyCatcher';\n\n// forkJoin(any)\n// We put this first because we need to catch cases where the user has supplied\n// _exactly `any`_ as the argument. Since `any` literally matches _anything_,\n// we don't want it to randomly hit one of the other type signatures below,\n// as we have no idea at build-time what type we should be returning when given an any.\n\n/**\n * You have passed `any` here, we can't figure out if it is\n * an array or an object, so you're getting `unknown`. Use better types.\n * @param arg Something typed as `any`\n */\nexport function forkJoin<T extends AnyCatcher>(arg: T): Observable<unknown>;\n\n// forkJoin(null | undefined)\nexport function forkJoin(scheduler: null | undefined): Observable<never>;\n\n// forkJoin([a, b, c])\nexport function forkJoin(sources: readonly []): Observable<never>;\nexport function forkJoin<A extends readonly unknown[]>(sources: readonly [...ObservableInputTuple<A>]): Observable<A>;\nexport function forkJoin<A extends readonly unknown[], R>(\n sources: readonly [...ObservableInputTuple<A>],\n resultSelector: (...values: A) => R\n): Observable<R>;\n\n// forkJoin(a, b, c)\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function forkJoin<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A>;\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function forkJoin<A extends readonly unknown[], R>(\n ...sourcesAndResultSelector: [...ObservableInputTuple<A>, (...values: A) => R]\n): Observable<R>;\n\n// forkJoin({a, b, c})\nexport function forkJoin(sourcesObject: { [K in any]: never }): Observable<never>;\nexport function forkJoin<T extends Record<string, ObservableInput<any>>>(\n sourcesObject: T\n): Observable<{ [K in keyof T]: ObservedValueOf<T[K]> }>;\n\n/**\n * Accepts an `Array` of {@link ObservableInput} or a dictionary `Object` of {@link ObservableInput} and returns\n * an {@link Observable} that emits either an array of values in the exact same order as the passed array,\n * or a dictionary of values in the same shape as the passed dictionary.\n *\n * <span class=\"informal\">Wait for Observables to complete and then combine last values they emitted;\n * complete immediately if an empty array is passed.</span>\n *\n * \n *\n * `forkJoin` is an operator that takes any number of input observables which can be passed either as an array\n * or a dictionary of input observables. If no input observables are provided (e.g. an empty array is passed),\n * then the resulting stream will complete immediately.\n *\n * `forkJoin` will wait for all passed observables to emit and complete and then it will emit an array or an object with last\n * values from corresponding observables.\n *\n * If you pass an array of `n` observables to the operator, then the resulting\n * array will have `n` values, where the first value is the last one emitted by the first observable,\n * second value is the last one emitted by the second observable and so on.\n *\n * If you pass a dictionary of observables to the operator, then the resulting\n * objects will have the same keys as the dictionary passed, with their last values they have emitted\n * located at the corresponding key.\n *\n * That means `forkJoin` will not emit more than once and it will complete after that. If you need to emit combined\n * values not only at the end of the lifecycle of passed observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for the resulting array to have the same length as the number of input observables, whenever any of\n * the given observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other observables.\n * Conversely, if there is an observable that never completes, `forkJoin` will never complete either,\n * unless at any point some other observable completes without emitting a value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all given observables\n * have to emit something at least once and complete.\n *\n * If any given observable errors at some point, `forkJoin` will error as well and immediately unsubscribe\n * from the other observables.\n *\n * Optionally `forkJoin` accepts a `resultSelector` function, that will be called with values which normally\n * would land in the emitted array. Whatever is returned by the `resultSelector`, will appear in the output\n * observable instead. This means that the default `resultSelector` can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that the `resultSelector` will be called only\n * when `forkJoin` is supposed to emit a result.\n *\n * ## Examples\n *\n * Use `forkJoin` with a dictionary of observable inputs\n *\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin({\n * foo: of(1, 2, 3, 4),\n * bar: Promise.resolve(8),\n * baz: timer(4000)\n * });\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // { foo: 4, bar: 8, baz: 0 } after 4 seconds\n * // 'This is how it ends!' immediately after\n * ```\n *\n * Use `forkJoin` with an array of observable inputs\n *\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin([\n * of(1, 2, 3, 4),\n * Promise.resolve(8),\n * timer(4000)\n * ]);\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // [4, 8, 0] after 4 seconds\n * // 'This is how it ends!' immediately after\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...ObservableInput} args Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nexport function forkJoin(...args: any[]): Observable<any> {\n const resultSelector = popResultSelector(args);\n const { args: sources, keys } = argsArgArrayOrObject(args);\n const result = new Observable((subscriber) => {\n const { length } = sources;\n if (!length) {\n subscriber.complete();\n return;\n }\n const values = new Array(length);\n let remainingCompletions = length;\n let remainingEmissions = length;\n for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n let hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n },\n () => remainingCompletions--,\n undefined,\n () => {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }\n )\n );\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\n\n/**\n * Creates an observable that will wait for a specified time period, or exact date, before\n * emitting the number 0.\n *\n * <span class=\"informal\">Used to emit a notification after a delay.</span>\n *\n * This observable is useful for creating delays in code, or racing against other values\n * for ad-hoc timeouts.\n *\n * The `delay` is specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Examples\n *\n * Wait 3 seconds and start another observable\n *\n * You might want to use `timer` to delay subscription to an\n * observable by a set amount of time. Here we use a timer with\n * {@link concatMapTo} or {@link concatMap} in order to wait\n * a few seconds and start a subscription to a source.\n *\n * ```ts\n * import { of, timer, concatMap } from 'rxjs';\n *\n * // This could be any observable\n * const source = of(1, 2, 3);\n *\n * timer(3000)\n * .pipe(concatMap(() => source))\n * .subscribe(console.log);\n * ```\n *\n * Take all values until the start of the next minute\n *\n * Using a `Date` as the trigger for the first emission, you can\n * do things like wait until midnight to fire an event, or in this case,\n * wait until a new minute starts (chosen so the example wouldn't take\n * too long to run) in order to stop watching a stream. Leveraging\n * {@link takeUntil}.\n *\n * ```ts\n * import { interval, takeUntil, timer } from 'rxjs';\n *\n * // Build a Date object that marks the\n * // next minute.\n * const currentDate = new Date();\n * const startOfNextMinute = new Date(\n * currentDate.getFullYear(),\n * currentDate.getMonth(),\n * currentDate.getDate(),\n * currentDate.getHours(),\n * currentDate.getMinutes() + 1\n * );\n *\n * // This could be any observable stream\n * const source = interval(1000);\n *\n * const result = source.pipe(\n * takeUntil(timer(startOfNextMinute))\n * );\n *\n * result.subscribe(console.log);\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `dueTime`.\n *\n * @param due If a `number`, the amount of time in milliseconds to wait before emitting.\n * If a `Date`, the exact time at which to emit.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(due: number | Date, scheduler?: SchedulerLike): Observable<0>;\n\n/**\n * Creates an observable that starts an interval after a specified delay, emitting incrementing numbers -- starting at `0` --\n * on each interval after words.\n *\n * The `delay` and `intervalDuration` are specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Example\n *\n * ### Start an interval that starts right away\n *\n * Since {@link interval} waits for the passed delay before starting,\n * sometimes that's not ideal. You may want to start an interval immediately.\n * `timer` works well for this. Here we have both side-by-side so you can\n * see them in comparison.\n *\n * Note that this observable will never complete.\n *\n * ```ts\n * import { timer, interval } from 'rxjs';\n *\n * timer(0, 1000).subscribe(n => console.log('timer', n));\n * interval(1000).subscribe(n => console.log('interval', n));\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `startDue`.\n * @param startDue If a `number`, is the time to wait before starting the interval.\n * If a `Date`, is the exact time at which to start the interval.\n * @param intervalDuration The delay between each value emitted in the interval. Passing a\n * negative number here will result in immediate completion after the first value is emitted, as though\n * no `intervalDuration` was passed at all.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(startDue: number | Date, intervalDuration: number, scheduler?: SchedulerLike): Observable<number>;\n\n/**\n * @deprecated The signature allowing `undefined` to be passed for `intervalDuration` will be removed in v8. Use the `timer(dueTime, scheduler?)` signature instead.\n */\nexport function timer(dueTime: number | Date, unused: undefined, scheduler?: SchedulerLike): Observable<0>;\n\nexport function timer(\n dueTime: number | Date = 0,\n intervalOrScheduler?: number | SchedulerLike,\n scheduler: SchedulerLike = asyncScheduler\n): Observable<number> {\n // Since negative intervalDuration is treated as though no\n // interval was specified at all, we start with a negative number.\n let intervalDuration = -1;\n\n if (intervalOrScheduler != null) {\n // If we have a second argument, and it's a scheduler,\n // override the scheduler we had defaulted. Otherwise,\n // it must be an interval.\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n } else {\n // Note that this *could* be negative, in which case\n // it's like not passing an intervalDuration at all.\n intervalDuration = intervalOrScheduler;\n }\n }\n\n return new Observable((subscriber) => {\n // If a valid date is passed, calculate how long to wait before\n // executing the first value... otherwise, if it's a number just schedule\n // that many milliseconds (or scheduler-specified unit size) in the future.\n let due = isValidDate(dueTime) ? +dueTime - scheduler!.now() : dueTime;\n\n if (due < 0) {\n // Ensure we don't schedule in the future.\n due = 0;\n }\n\n // The incrementing value we emit.\n let n = 0;\n\n // Start the timer.\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n // Emit the next value and increment.\n subscriber.next(n++);\n\n if (0 <= intervalDuration) {\n // If we have a interval after the initial timer,\n // reschedule with the period.\n this.schedule(undefined, intervalDuration);\n } else {\n // We didn't have an interval. So just complete.\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInput, ObservableInputTuple, SchedulerLike } from '../types';\nimport { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function merge<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A[number]>;\nexport function merge<A extends readonly unknown[]>(...sourcesAndConcurrency: [...ObservableInputTuple<A>, number?]): Observable<A[number]>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge<A extends readonly unknown[]>(\n ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike?]\n): Observable<A[number]>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge<A extends readonly unknown[]>(\n ...sourcesAndConcurrencyAndScheduler: [...ObservableInputTuple<A>, number?, SchedulerLike?]\n): Observable<A[number]>;\n\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * \n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Merge together two Observables: 1s interval and clicks\n *\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console every time the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * Merge together 3 Observables, but run only 2 concurrently\n *\n * ```ts\n * import { interval, take, merge } from 'rxjs';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n */\nexport function merge(...args: (ObservableInput<unknown> | number | SchedulerLike)[]): Observable<unknown> {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args as ObservableInput<unknown>[];\n return !sources.length\n ? // No source provided\n EMPTY\n : sources.length === 1\n ? // One source? Just return it.\n innerFrom(sources[0])\n : // Merge all sources\n mergeAll(concurrent)(from(sources, scheduler));\n}\n", "const { isArray } = Array;\n\n/**\n * Used in operators and functions that accept either a list of arguments, or an array of arguments\n * as a single argument.\n */\nexport function argsOrArgArray<T>(args: (T | T[])[]): T[] {\n return args.length === 1 && isArray(args[0]) ? args[0] : (args as T[]);\n}\n", "import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, S extends T, A>(predicate: (this: A, value: T, index: number) => value is S, thisArg: A): OperatorFunction<T, S>;\nexport function filter<T, S extends T>(predicate: (value: T, index: number) => value is S): OperatorFunction<T, S>;\nexport function filter<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, A>(predicate: (this: A, value: T, index: number) => boolean, thisArg: A): MonoTypeOperatorFunction<T>;\nexport function filter<T>(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * \n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n *\n * Emit only click events whose target was a DIV element\n *\n * ```ts\n * import { fromEvent, filter } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param thisArg An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return A function that returns an Observable that emits items from the\n * source Observable that satisfy the specified `predicate`.\n */\nexport function filter<T>(predicate: (value: T, index: number) => boolean, thisArg?: any): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n // An index passed to our predicate function on each call.\n let index = 0;\n\n // Subscribe to the source, all errors and completions are\n // forwarded to the consumer.\n source.subscribe(\n // Call the predicate with the appropriate `this` context,\n // if the predicate returns `true`, then send the value\n // to the consumer.\n createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value))\n );\n });\n}\n", "import { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { Subscription } from '../Subscription';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\n\n/* tslint:disable:max-line-length */\nexport function catchError<T, O extends ObservableInput<any>>(\n selector: (err: any, caught: Observable<T>) => O\n): OperatorFunction<T, T | ObservedValueOf<O>>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * <span class=\"informal\">\n * It only listens to the error channel and ignores notifications.\n * Handles errors from the source observable, and maps them to a new observable.\n * The error may also be rethrown, or a new error can be thrown to emit an error from the result.\n * </span>\n *\n * \n *\n * This operator handles errors, but forwards along all other events to the resulting observable.\n * If the source observable terminates with an error, it will map that error to a new observable,\n * subscribe to it, and forward all of its events to the resulting observable.\n *\n * ## Examples\n *\n * Continue with a different Observable when there's an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V'))\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retry the caught source Observable again in case of error, similar to `retry()` operator\n *\n * ```ts\n * import { of, map, catchError, take } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30)\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throw a new error when the source Observable throws an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * })\n * )\n * .subscribe({\n * next: x => console.log(x),\n * error: err => console.log(err)\n * });\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @see {@link onErrorResumeNext}\n * @see {@link repeat}\n * @see {@link repeatWhen}\n * @see {@link retry }\n * @see {@link retryWhen}\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return A function that returns an Observable that originates from either\n * the source or the Observable returned by the `selector` function.\n */\nexport function catchError<T, O extends ObservableInput<any>>(\n selector: (err: any, caught: Observable<T>) => O\n): OperatorFunction<T, T | ObservedValueOf<O>> {\n return operate((source, subscriber) => {\n let innerSub: Subscription | null = null;\n let syncUnsub = false;\n let handledResult: Observable<ObservedValueOf<O>>;\n\n innerSub = source.subscribe(\n createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n } else {\n // We don't have an innerSub yet, that means the error was synchronous\n // because the subscribe call hasn't returned yet.\n syncUnsub = true;\n }\n })\n );\n\n if (syncUnsub) {\n // We have a synchronous error, we need to make sure to\n // finalize right away. This ensures that callbacks in the `finalize` operator are called\n // at the right time, and that finalization occurs at the expected\n // time between the source error and the subscription to the\n // next observable.\n innerSub.unsubscribe();\n innerSub = null;\n handledResult!.subscribe(subscriber);\n }\n });\n}\n", "import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function concatMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.</span>\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, concatMap, interval, take } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * values from each projected inner Observable sequentially.\n */\nexport function concatMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n", "import { asyncScheduler } from '../scheduler/async';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a notification from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link delay}, but passes only the most\n * recent notification from each burst of emissions.</span>\n *\n * \n *\n * `debounceTime` delays notifications emitted by the source Observable, but drops\n * previous pending delayed emissions if a new notification arrives on the source\n * Observable. This operator keeps track of the most recent notification from the\n * source Observable, and emits that only when `dueTime` has passed\n * without any other notification appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous notification will be dropped\n * and will not be emitted and a new `dueTime` is scheduled.\n * If the completing event happens during `dueTime` the last cached notification\n * is emitted before the completion event is forwarded to the output observable.\n * If the error event happens during `dueTime` or after it only the error event is\n * forwarded to the output observable. The cache notification is not emitted in this case.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * notification to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link SchedulerLike} for\n * managing timers.\n *\n * ## Example\n *\n * Emit the most recent click after a burst of clicks\n *\n * ```ts\n * import { fromEvent, debounceTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounceTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link throttle}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the timeout for each value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified `dueTime`, and may drop some values\n * if they occur too frequently.\n */\nexport function debounceTime<T>(dueTime: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n let activeTask: Subscription | null = null;\n let lastValue: T | null = null;\n let lastTime: number | null = null;\n\n const emit = () => {\n if (activeTask) {\n // We have a value! Free up memory first, then emit the value.\n activeTask.unsubscribe();\n activeTask = null;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle(this: SchedulerAction<unknown>) {\n // This is called `dueTime` after the first value\n // but we might have received new values during this window!\n\n const targetTime = lastTime! + dueTime;\n const now = scheduler.now();\n if (now < targetTime) {\n // On that case, re-schedule to the new target\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n\n emit();\n }\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value: T) => {\n lastValue = value;\n lastTime = scheduler.now();\n\n // Only set up a task if it's not already up\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n },\n () => {\n // Source completed.\n // Emit any pending debounced values then complete\n emit();\n subscriber.complete();\n },\n // Pass all errors through to consumer.\n undefined,\n () => {\n // Finalization.\n lastValue = activeTask = null;\n }\n )\n );\n });\n}\n", "import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * <span class=\"informal\">Time shifts each item by some specified amount of\n * milliseconds.</span>\n *\n * \n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n *\n * Delay each click by one second\n *\n * ```ts\n * import { fromEvent, delay } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n *\n * ```ts\n * import { fromEvent, delay } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delayWhen}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param {number|Date} due The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the time-shift for each item.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified timeout or Date.\n */\nexport function delay<T>(due: number | Date, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T> {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n", "import { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\n\n/** @deprecated The `subscriptionDelay` parameter will be removed in v8. */\nexport function delayWhen<T>(\n delayDurationSelector: (value: T, index: number) => ObservableInput<any>,\n subscriptionDelay: Observable<any>\n): MonoTypeOperatorFunction<T>;\nexport function delayWhen<T>(delayDurationSelector: (value: T, index: number) => ObservableInput<any>): MonoTypeOperatorFunction<T>;\n\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * <span class=\"informal\">It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.</span>\n *\n * \n *\n * `delayWhen` operator shifts each emitted value from the source Observable by\n * a time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the value emitted from\n * the source Observable as the first argument to the `delayDurationSelector`.\n * The `delayDurationSelector` function should return an {@link ObservableInput},\n * that is internally converted to an Observable that is called the \"duration\"\n * Observable.\n *\n * The source value is emitted on the output Observable only when the \"duration\"\n * Observable emits ({@link guide/glossary-and-semantics#next next}s) any value.\n * Upon that, the \"duration\" Observable gets unsubscribed.\n *\n * Before RxJS V7, the {@link guide/glossary-and-semantics#complete completion}\n * of the \"duration\" Observable would have been triggering the emission of the\n * source value to the output Observable, but with RxJS V7, this is not the case\n * anymore.\n *\n * Only next notifications (from the \"duration\" Observable) trigger values from\n * the source Observable to be passed to the output Observable. If the \"duration\"\n * Observable only emits the complete notification (without next), the value\n * emitted by the source Observable will never get to the output Observable - it\n * will be swallowed. If the \"duration\" Observable errors, the error will be\n * propagated to the output Observable.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * ## Example\n *\n * Delay each click by a random amount of time, between 0 and 5 seconds\n *\n * ```ts\n * import { fromEvent, delayWhen, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(\n * delayWhen(() => interval(Math.random() * 5000))\n * );\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delay}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param delayDurationSelector A function that returns an `ObservableInput` for\n * each `value` emitted by the source Observable, which is then used to delay the\n * emission of that `value` on the output Observable until the `ObservableInput`\n * returned from this function emits a next value. When called, beside `value`,\n * this function receives a zero-based `index` of the emission order.\n * @param subscriptionDelay An Observable that triggers the subscription to the\n * source Observable once it emits any value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by an amount of time specified by the Observable\n * returned by `delayDurationSelector`.\n */\nexport function delayWhen<T>(\n delayDurationSelector: (value: T, index: number) => ObservableInput<any>,\n subscriptionDelay?: Observable<any>\n): MonoTypeOperatorFunction<T> {\n if (subscriptionDelay) {\n // DEPRECATED PATH\n return (source: Observable<T>) =>\n concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n\n return mergeMap((value, index) => innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)));\n}\n", "import { MonoTypeOperatorFunction } from '../types';\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * <span class=\"informal\">Takes the first `count` values from the source, then\n * completes.</span>\n *\n * \n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * ## Example\n *\n * Take the first 5 seconds of an infinite 1-second interval Observable\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const intervalCount = interval(1000);\n * const takeFive = intervalCount.pipe(take(5));\n * takeFive.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param count The maximum number of `next` values to emit.\n * @return A function that returns an Observable that emits only the first\n * `count` values emitted by the source Observable, or all of the values from\n * the source if the source emits fewer than `count` values.\n */\nexport function take<T>(count: number): MonoTypeOperatorFunction<T> {\n return count <= 0\n ? // If we are taking no values, that's empty.\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n // Increment the number of values we have seen,\n // then check it against the allowed count to see\n // if we are still letting values through.\n if (++seen <= count) {\n subscriber.next(value);\n // If we have met or passed our allowed count,\n // we need to complete. We have to do <= here,\n // because re-entrant code will increment `seen` twice.\n if (count <= seen) {\n subscriber.complete();\n }\n }\n })\n );\n });\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\n\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * \n *\n * The `ignoreElements` operator suppresses all items emitted by the source Observable,\n * but allows its termination notification (either `error` or `complete`) to pass through unchanged.\n *\n * If you do not care about the items being emitted by an Observable, but you do want to be notified\n * when it completes or when it terminates with an error, you can apply the `ignoreElements` operator\n * to the Observable, which will ensure that it will never call its observers\u2019 `next` handlers.\n *\n * ## Example\n *\n * Ignore all `next` emissions from the source\n *\n * ```ts\n * import { of, ignoreElements } from 'rxjs';\n *\n * of('you', 'talking', 'to', 'me')\n * .pipe(ignoreElements())\n * .subscribe({\n * next: word => console.log(word),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // result:\n * // 'the end'\n * ```\n *\n * @return A function that returns an empty Observable that only calls\n * `complete` or `error`, based on which one is called by the source\n * Observable.\n */\nexport function ignoreElements(): OperatorFunction<unknown, never> {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n", "import { OperatorFunction } from '../types';\nimport { map } from './map';\n\n/** @deprecated To be removed in v9. Use {@link map} instead: `map(() => value)`. */\nexport function mapTo<R>(value: R): OperatorFunction<unknown, R>;\n/**\n * @deprecated Do not specify explicit type parameters. Signatures with type parameters\n * that cannot be inferred will be removed in v8. `mapTo` itself will be removed in v9,\n * use {@link map} instead: `map(() => value)`.\n * */\nexport function mapTo<T, R>(value: R): OperatorFunction<T, R>;\n\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * <span class=\"informal\">Like {@link map}, but it maps every source value to\n * the same output value every time.</span>\n *\n * \n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * ## Example\n *\n * Map every click to the string `'Hi'`\n *\n * ```ts\n * import { fromEvent, mapTo } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const greetings = clicks.pipe(mapTo('Hi'));\n *\n * greetings.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param value The value to map each source value to.\n * @return A function that returns an Observable that emits the given `value`\n * every time the source Observable emits.\n * @deprecated To be removed in v9. Use {@link map} instead: `map(() => value)`.\n */\nexport function mapTo<R>(value: R): OperatorFunction<unknown, R> {\n return map(() => value);\n}\n", "import { MonoTypeOperatorFunction } from '../types';\nimport { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function distinctUntilChanged<T>(comparator?: (previous: T, current: T) => boolean): MonoTypeOperatorFunction<T>;\nexport function distinctUntilChanged<T, K>(\n comparator: (previous: K, current: K) => boolean,\n keySelector: (value: T) => K\n): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns a result {@link Observable} that emits all values pushed by the source observable if they\n * are distinct in comparison to the last value the result observable emitted.\n *\n * When provided without parameters or with the first parameter (`{@link distinctUntilChanged#comparator comparator}`),\n * it behaves like this:\n *\n * 1. It will always emit the first value from the source.\n * 2. For all subsequent values pushed by the source, they will be compared to the previously emitted values\n * using the provided `comparator` or an `===` equality check.\n * 3. If the value pushed by the source is determined to be unequal by this check, that value is emitted and\n * becomes the new \"previously emitted value\" internally.\n *\n * When the second parameter (`{@link distinctUntilChanged#keySelector keySelector}`) is provided, the behavior\n * changes:\n *\n * 1. It will always emit the first value from the source.\n * 2. The `keySelector` will be run against all values, including the first value.\n * 3. For all values after the first, the selected key will be compared against the key selected from\n * the previously emitted value using the `comparator`.\n * 4. If the keys are determined to be unequal by this check, the value (not the key), is emitted\n * and the selected key from that value is saved for future comparisons against other keys.\n *\n * ## Examples\n *\n * A very basic example with no `{@link distinctUntilChanged#comparator comparator}`. Note that `1` is emitted more than once,\n * because it's distinct in comparison to the _previously emitted_ value,\n * not in comparison to _all other emitted values_.\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * of(1, 1, 1, 2, 2, 2, 1, 1, 3, 3)\n * .pipe(distinctUntilChanged())\n * .subscribe(console.log);\n * // Logs: 1, 2, 1, 3\n * ```\n *\n * With a `{@link distinctUntilChanged#comparator comparator}`, you can do custom comparisons. Let's say\n * you only want to emit a value when all of its components have\n * changed:\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * const totallyDifferentBuilds$ = of(\n * { engineVersion: '1.1.0', transmissionVersion: '1.2.0' },\n * { engineVersion: '1.1.0', transmissionVersion: '1.4.0' },\n * { engineVersion: '1.3.0', transmissionVersion: '1.4.0' },\n * { engineVersion: '1.3.0', transmissionVersion: '1.5.0' },\n * { engineVersion: '2.0.0', transmissionVersion: '1.5.0' }\n * ).pipe(\n * distinctUntilChanged((prev, curr) => {\n * return (\n * prev.engineVersion === curr.engineVersion ||\n * prev.transmissionVersion === curr.transmissionVersion\n * );\n * })\n * );\n *\n * totallyDifferentBuilds$.subscribe(console.log);\n *\n * // Logs:\n * // { engineVersion: '1.1.0', transmissionVersion: '1.2.0' }\n * // { engineVersion: '1.3.0', transmissionVersion: '1.4.0' }\n * // { engineVersion: '2.0.0', transmissionVersion: '1.5.0' }\n * ```\n *\n * You can also provide a custom `{@link distinctUntilChanged#comparator comparator}` to check that emitted\n * changes are only in one direction. Let's say you only want to get\n * the next record temperature:\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * const temps$ = of(30, 31, 20, 34, 33, 29, 35, 20);\n *\n * const recordHighs$ = temps$.pipe(\n * distinctUntilChanged((prevHigh, temp) => {\n * // If the current temp is less than\n * // or the same as the previous record,\n * // the record hasn't changed.\n * return temp <= prevHigh;\n * })\n * );\n *\n * recordHighs$.subscribe(console.log);\n * // Logs: 30, 31, 34, 35\n * ```\n *\n * Selecting update events only when the `updatedBy` field shows\n * the account changed hands.\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * // A stream of updates to a given account\n * const accountUpdates$ = of(\n * { updatedBy: 'blesh', data: [] },\n * { updatedBy: 'blesh', data: [] },\n * { updatedBy: 'ncjamieson', data: [] },\n * { updatedBy: 'ncjamieson', data: [] },\n * { updatedBy: 'blesh', data: [] }\n * );\n *\n * // We only want the events where it changed hands\n * const changedHands$ = accountUpdates$.pipe(\n * distinctUntilChanged(undefined, update => update.updatedBy)\n * );\n *\n * changedHands$.subscribe(console.log);\n * // Logs:\n * // { updatedBy: 'blesh', data: Array[0] }\n * // { updatedBy: 'ncjamieson', data: Array[0] }\n * // { updatedBy: 'blesh', data: Array[0] }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param comparator A function used to compare the previous and current keys for\n * equality. Defaults to a `===` check.\n * @param keySelector Used to select a key value to be passed to the `comparator`.\n *\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values.\n */\nexport function distinctUntilChanged<T, K>(\n comparator?: (previous: K, current: K) => boolean,\n keySelector: (value: T) => K = identity as (value: T) => K\n): MonoTypeOperatorFunction<T> {\n // We've been allowing `null` do be passed as the `compare`, so we can't do\n // a default value for the parameter, because that will only work\n // for `undefined`.\n comparator = comparator ?? defaultCompare;\n\n return operate((source, subscriber) => {\n // The previous key, used to compare against keys selected\n // from new arrivals to determine \"distinctiveness\".\n let previousKey: K;\n // Whether or not this is the first value we've gotten.\n let first = true;\n\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n // We always call the key selector.\n const currentKey = keySelector(value);\n\n // If it's the first value, we always emit it.\n // Otherwise, we compare this key to the previous key, and\n // if the comparer returns false, we emit.\n if (first || !comparator!(previousKey, currentKey)) {\n // Update our state *before* we emit the value\n // as emission can be the source of re-entrant code\n // in functional libraries like this. We only really\n // need to do this if it's the first value, or if the\n // key we're tracking in previous needs to change.\n first = false;\n previousKey = currentKey;\n\n // Emit the value!\n subscriber.next(value);\n }\n })\n );\n });\n}\n\nfunction defaultCompare(a: any, b: any) {\n return a === b;\n}\n", "import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { Subscription } from '../Subscription';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * The {@link retry} operator configuration object. `retry` either accepts a `number`\n * or an object described by this interface.\n */\nexport interface RetryConfig {\n /**\n * The maximum number of times to retry. If `count` is omitted, `retry` will try to\n * resubscribe on errors infinite number of times.\n */\n count?: number;\n /**\n * The number of milliseconds to delay before retrying, OR a function to\n * return a notifier for delaying. If a function is given, that function should\n * return a notifier that, when it emits will retry the source. If the notifier\n * completes _without_ emitting, the resulting observable will complete without error,\n * if the notifier errors, the error will be pushed to the result.\n */\n delay?: number | ((error: any, retryCount: number) => ObservableInput<any>);\n /**\n * Whether or not to reset the retry counter when the retried subscription\n * emits its first value.\n */\n resetOnSuccess?: boolean;\n}\n\nexport function retry<T>(count?: number): MonoTypeOperatorFunction<T>;\nexport function retry<T>(config: RetryConfig): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`.\n *\n * If the source Observable calls `error`, this method will resubscribe to the source Observable for a maximum of\n * `count` resubscriptions rather than propagating the `error` call.\n *\n * \n *\n * The number of retries is determined by the `count` parameter. It can be set either by passing a number to\n * `retry` function or by setting `count` property when `retry` is configured using {@link RetryConfig}. If\n * `count` is omitted, `retry` will try to resubscribe on errors infinite number of times.\n *\n * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those\n * emitted during failed subscriptions. For example, if an Observable fails at first but emits `[1, 2]` then\n * succeeds the second time and emits: `[1, 2, 3, 4, 5, complete]` then the complete stream of emissions and\n * notifications would be: `[1, 2, 1, 2, 3, 4, 5, complete]`.\n *\n * ## Example\n *\n * ```ts\n * import { interval, mergeMap, throwError, of, retry } from 'rxjs';\n *\n * const source = interval(1000);\n * const result = source.pipe(\n * mergeMap(val => val > 5 ? throwError(() => 'Error!') : of(val)),\n * retry(2) // retry 2 times on error\n * );\n *\n * result.subscribe({\n * next: value => console.log(value),\n * error: err => console.log(`${ err }: Retried 2 times then quit!`)\n * });\n *\n * // Output:\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // 'Error!: Retried 2 times then quit!'\n * ```\n *\n * @see {@link retryWhen}\n *\n * @param configOrCount - Either number of retry attempts before failing or a {@link RetryConfig} object.\n * @return A function that returns an Observable that will resubscribe to the\n * source stream when the source stream errors, at most `count` times.\n */\nexport function retry<T>(configOrCount: number | RetryConfig = Infinity): MonoTypeOperatorFunction<T> {\n let config: RetryConfig;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n } else {\n config = {\n count: configOrCount as number,\n };\n }\n const { count = Infinity, delay, resetOnSuccess: resetOnSuccess = false } = config;\n\n return count <= 0\n ? identity\n : operate((source, subscriber) => {\n let soFar = 0;\n let innerSub: Subscription | null;\n const subscribeForRetry = () => {\n let syncUnsub = false;\n innerSub = source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // If we're resetting on success\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n },\n // Completions are passed through to consumer.\n undefined,\n (err) => {\n if (soFar++ < count) {\n // We are still under our retry count\n const resub = () => {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n } else {\n syncUnsub = true;\n }\n };\n\n if (delay != null) {\n // The user specified a retry delay.\n // They gave us a number, use a timer, otherwise, it's a function,\n // and we're going to call it to get a notifier.\n const notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n const notifierSubscriber = createOperatorSubscriber(\n subscriber,\n () => {\n // After we get the first notification, we\n // unsubscribe from the notifier, because we don't want anymore\n // and we resubscribe to the source.\n notifierSubscriber.unsubscribe();\n resub();\n },\n () => {\n // The notifier completed without emitting.\n // The author is telling us they want to complete.\n subscriber.complete();\n }\n );\n notifier.subscribe(notifierSubscriber);\n } else {\n // There was no notifier given. Just resub immediately.\n resub();\n }\n } else {\n // We're past our maximum number of retries.\n // Just send along the error.\n subscriber.error(err);\n }\n }\n )\n );\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\n", "import { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/* tslint:disable:max-line-length */\nexport function switchMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switchAll}.</span>\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n *\n * Generate new Observable according to source Observable values\n *\n * ```ts\n * import { of, switchMap } from 'rxjs';\n *\n * const switched = of(1, 2, 3).pipe(switchMap(x => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // 3\n * // 9\n * // 27\n * ```\n *\n * Restart an interval Observable on every click event\n *\n * ```ts\n * import { fromEvent, switchMap, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * only the values from the most recently projected inner Observable.\n */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n return operate((source, subscriber) => {\n let innerSubscriber: Subscriber<ObservedValueOf<O>> | null = null;\n let index = 0;\n // Whether or not the source subscription has completed\n let isComplete = false;\n\n // We only complete the result if the source is complete AND we don't have an active inner subscription.\n // This is called both when the source completes and when the inners complete.\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // Cancel the previous inner subscription if there was one\n innerSubscriber?.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n // Start the next inner subscription\n innerFrom(project(value, outerIndex)).subscribe(\n (innerSubscriber = createOperatorSubscriber(\n subscriber,\n // When we get a new inner value, next it through. Note that this is\n // handling the deprecate result selector here. This is because with this architecture\n // it ends up being smaller than using the map operator.\n (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue),\n () => {\n // The inner has completed. Null out the inner subscriber to\n // free up memory and to signal that we have no inner subscription\n // currently.\n innerSubscriber = null!;\n checkComplete();\n }\n ))\n );\n },\n () => {\n isComplete = true;\n checkComplete();\n }\n )\n );\n });\n}\n", "import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * <span class=\"informal\">Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.</span>\n *\n * \n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n *\n * Tick every second until the first click happens\n *\n * ```ts\n * import { interval, fromEvent, takeUntil } from 'rxjs';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return A function that returns an Observable that emits the values from the\n * source Observable until `notifier` emits its first value.\n */\nexport function takeUntil<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n", "import { MonoTypeOperatorFunction, Observer } from '../types';\nimport { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\n\n/**\n * An extension to the {@link Observer} interface used only by the {@link tap} operator.\n *\n * It provides a useful set of callbacks a user can register to do side-effects in\n * cases other than what the usual {@link Observer} callbacks are\n * ({@link guide/glossary-and-semantics#next next},\n * {@link guide/glossary-and-semantics#error error} and/or\n * {@link guide/glossary-and-semantics#complete complete}).\n *\n * ## Example\n *\n * ```ts\n * import { fromEvent, switchMap, tap, interval, take } from 'rxjs';\n *\n * const source$ = fromEvent(document, 'click');\n * const result$ = source$.pipe(\n * switchMap((_, i) => i % 2 === 0\n * ? fromEvent(document, 'mousemove').pipe(\n * tap({\n * subscribe: () => console.log('Subscribed to the mouse move events after click #' + i),\n * unsubscribe: () => console.log('Mouse move events #' + i + ' unsubscribed'),\n * finalize: () => console.log('Mouse move events #' + i + ' finalized')\n * })\n * )\n * : interval(1_000).pipe(\n * take(5),\n * tap({\n * subscribe: () => console.log('Subscribed to the 1-second interval events after click #' + i),\n * unsubscribe: () => console.log('1-second interval events #' + i + ' unsubscribed'),\n * finalize: () => console.log('1-second interval events #' + i + ' finalized')\n * })\n * )\n * )\n * );\n *\n * const subscription = result$.subscribe({\n * next: console.log\n * });\n *\n * setTimeout(() => {\n * console.log('Unsubscribe after 60 seconds');\n * subscription.unsubscribe();\n * }, 60_000);\n * ```\n */\nexport interface TapObserver<T> extends Observer<T> {\n /**\n * The callback that `tap` operator invokes at the moment when the source Observable\n * gets subscribed to.\n */\n subscribe: () => void;\n /**\n * The callback that `tap` operator invokes when an explicit\n * {@link guide/glossary-and-semantics#unsubscription unsubscribe} happens. It won't get invoked on\n * `error` or `complete` events.\n */\n unsubscribe: () => void;\n /**\n * The callback that `tap` operator invokes when any kind of\n * {@link guide/glossary-and-semantics#finalization finalization} happens - either when\n * the source Observable `error`s or `complete`s or when it gets explicitly unsubscribed\n * by the user. There is no difference in using this callback or the {@link finalize}\n * operator, but if you're already using `tap` operator, you can use this callback\n * instead. You'd get the same result in either case.\n */\n finalize: () => void;\n}\nexport function tap<T>(observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void)): MonoTypeOperatorFunction<T>;\n/** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\nexport function tap<T>(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction<T>;\n\n/**\n * Used to perform side-effects for notifications from the source observable\n *\n * <span class=\"informal\">Used when you want to affect outside state with a notification without altering the notification</span>\n *\n * \n *\n * Tap is designed to allow the developer a designated place to perform side effects. While you _could_ perform side-effects\n * inside of a `map` or a `mergeMap`, that would make their mapping functions impure, which isn't always a big deal, but will\n * make it so you can't do things like memoize those functions. The `tap` operator is designed solely for such side-effects to\n * help you remove side-effects from other operations.\n *\n * For any notification, next, error, or complete, `tap` will call the appropriate callback you have provided to it, via a function\n * reference, or a partial observer, then pass that notification down the stream.\n *\n * The observable returned by `tap` is an exact mirror of the source, with one exception: Any error that occurs -- synchronously -- in a handler\n * provided to `tap` will be emitted as an error from the returned observable.\n *\n * > Be careful! You can mutate objects as they pass through the `tap` operator's handlers.\n *\n * The most common use of `tap` is actually for debugging. You can place a `tap(console.log)` anywhere\n * in your observable `pipe`, log out the notifications as they are emitted by the source returned by the previous\n * operation.\n *\n * ## Examples\n *\n * Check a random number before it is handled. Below is an observable that will use a random number between 0 and 1,\n * and emit `'big'` or `'small'` depending on the size of that number. But we wanted to log what the original number\n * was, so we have added a `tap(console.log)`.\n *\n * ```ts\n * import { of, tap, map } from 'rxjs';\n *\n * of(Math.random()).pipe(\n * tap(console.log),\n * map(n => n > 0.5 ? 'big' : 'small')\n * ).subscribe(console.log);\n * ```\n *\n * Using `tap` to analyze a value and force an error. Below is an observable where in our system we only\n * want to emit numbers 3 or less we get from another source. We can force our observable to error\n * using `tap`.\n *\n * ```ts\n * import { of, tap } from 'rxjs';\n *\n * const source = of(1, 2, 3, 4, 5);\n *\n * source.pipe(\n * tap(n => {\n * if (n > 3) {\n * throw new TypeError(`Value ${ n } is greater than 3`);\n * }\n * })\n * )\n * .subscribe({ next: console.log, error: err => console.log(err.message) });\n * ```\n *\n * We want to know when an observable completes before moving on to the next observable. The system\n * below will emit a random series of `'X'` characters from 3 different observables in sequence. The\n * only way we know when one observable completes and moves to the next one, in this case, is because\n * we have added a `tap` with the side effect of logging to console.\n *\n * ```ts\n * import { of, concatMap, interval, take, map, tap } from 'rxjs';\n *\n * of(1, 2, 3).pipe(\n * concatMap(n => interval(1000).pipe(\n * take(Math.round(Math.random() * 10)),\n * map(() => 'X'),\n * tap({ complete: () => console.log(`Done with ${ n }`) })\n * ))\n * )\n * .subscribe(console.log);\n * ```\n *\n * @see {@link finalize}\n * @see {@link TapObserver}\n *\n * @param observerOrNext A next handler or partial observer\n * @param error An error handler\n * @param complete A completion handler\n * @return A function that returns an Observable identical to the source, but\n * runs the specified Observer or callback(s) for each item.\n */\nexport function tap<T>(\n observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void) | null,\n error?: ((e: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction<T> {\n // We have to check to see not only if next is a function,\n // but if error or complete were passed. This is because someone\n // could technically call tap like `tap(null, fn)` or `tap(null, null, fn)`.\n const tapObserver =\n isFunction(observerOrNext) || error || complete\n ? // tslint:disable-next-line: no-object-literal-type-assertion\n ({ next: observerOrNext as Exclude<typeof observerOrNext, Partial<TapObserver<T>>>, error, complete } as Partial<TapObserver<T>>)\n : observerOrNext;\n\n return tapObserver\n ? operate((source, subscriber) => {\n tapObserver.subscribe?.();\n let isUnsub = true;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n tapObserver.next?.(value);\n subscriber.next(value);\n },\n () => {\n isUnsub = false;\n tapObserver.complete?.();\n subscriber.complete();\n },\n (err) => {\n isUnsub = false;\n tapObserver.error?.(err);\n subscriber.error(err);\n },\n () => {\n if (isUnsub) {\n tapObserver.unsubscribe?.();\n }\n tapObserver.finalize?.();\n }\n )\n );\n })\n : // Tap was called with no valid tap observer or handler\n // (e.g. `tap(null, null, null)` or `tap(null)` or `tap()`)\n // so we're going to just mirror the source.\n identity;\n}\n", "import type { NavigationRouteMap } from 'domains/navigation';\nimport type { CatalogSelectorCategory } from 'types/catalog_types';\n\ntype ConfigEntry = {\n enabled: boolean;\n value: string;\n};\n\n// This is all from application_helper\ntype FrontEndData = {\n api_root_url: string;\n api_url: string;\n api_token: string;\n session_id: string;\n deploy_env: string;\n is_production: boolean;\n catalog_selector_data: { categories?: CatalogSelectorCategory[] };\n maintenance_message: ConfigEntry;\n site_wide_message: ConfigEntry;\n smarty_api_public_key: string;\n filestack_api_key: string;\n braintree_token: string;\n enable_apple_pay: boolean | null;\n titles: {\n wos: string;\n cart: string;\n projects: string;\n pricetool: string;\n checkout: string;\n };\n mybayphoto: {\n base_url: string;\n oauth_client_id: string;\n oauth_client_secret: string;\n }\n};\n\nconst frontendDataTag = document.head.querySelector('#frontend_data');\nif (!frontendDataTag) {\n throw new Error('Missing frontend_data script tag');\n}\nif (!frontendDataTag.textContent) {\n throw new Error('Missing frontend_data script tag content');\n}\n\nconst frontendData: FrontEndData = JSON.parse(frontendDataTag.textContent);\n\nexport const API_URL = frontendData.api_url;\nexport const API_ROOT_URL = frontendData.api_root_url;\nexport const API_TOKEN = frontendData.api_token;\n\nexport const BRAINTREE_TOKEN = frontendData.braintree_token;\nexport const ENABLE_APPLE_PAY = !!frontendData.enable_apple_pay;\n\nexport const DEPLOY_ENV = frontendData.deploy_env;\nexport const IS_PRODUCTION = frontendData.is_production;\nexport const SESSION_ID = frontendData.session_id;\nexport const CATALOG_SELECTOR_DATA = frontendData.catalog_selector_data.categories;\nexport const FILESTACK_API_KEY = frontendData.filestack_api_key;\nexport const MAINTENANCE_MESSAGE = frontendData.maintenance_message;\nexport const SITE_WIDE_MESSAGE = frontendData.site_wide_message;\n\nconst titles = frontendData.titles || {};\nexport const CHECKOUT_TITLE = titles.checkout;\nexport const DOCUMENT_TITLES: Record<keyof NavigationRouteMap, string | undefined> = {\n cart: titles.cart,\n priceTool: titles.pricetool,\n projects: titles.projects,\n catalogSelector: titles.wos,\n editor: titles.wos,\n};\n\nconst mybayphoto = frontendData.mybayphoto || {};\nexport const MYBAYPHOTO_BASE_URL = mybayphoto.base_url;\nexport const MYBAYPHOTO_OAUTH_CLIENT_ID = mybayphoto.oauth_client_id;\nexport const MYBAYPHOTO_OAUTH_CLIENT_SECRET = mybayphoto.oauth_client_secret;\n\nexport const LOCALSTORAGE_COLLECTION_KEY = 'bpselcol';\n\nexport const GIFT_NOTE_RESERVED_COLLECTION = 'bayphoto_giftnoteupload_reserved';\nexport const OPTIONS_PARAM = 'bpopts';\nexport const HEIGHT_PARAM = 'height';\nexport const WIDTH_PARAM = 'width';\nexport const EDIT_CART_PRODUCT_PARAM = 'cart_product';\nexport const FILTER_DETAIL_PARAM = 'detail';\n\nexport const ROUTE_MAP: NavigationRouteMap = {\n catalogSelector: '/',\n cart: '/cart',\n editor: '/c/',\n priceTool: '/price-tool/',\n projects: '/projects',\n};\n\n// Public key to access smarty API\n// Access is hostname limited to *.bayphoto.com\n// Provided by Elijah Taylor etaylor@circlegraphicsonline.com\n// https://www.smarty.com/docs/cloud/authentication#htmlkeys\nexport const SMARTY_API_PUBLIC_KEY = frontendData.smarty_api_public_key;\n\nconst params = new URL(window.location.href).searchParams;\nexport const paramOptions = params.get(OPTIONS_PARAM);\nexport const paramHeight = params.get(HEIGHT_PARAM);\nexport const paramWidth = params.get(WIDTH_PARAM);\nexport const paramFilterDetail = params.get(FILTER_DETAIL_PARAM) === 'true';\n\n// Grab localstorage values for initial state\nexport const hideBranding = window.localStorage.getItem('hideBranding') === 'true';\nexport const showFilenames = window.localStorage.getItem('showFilenames') === 'true';\nexport const theme = window.localStorage.getItem('theme');\n", "import * as Sentry from '@sentry/react';\nimport { RewriteFrames } from '@sentry/integrations';\nimport { DEPLOY_ENV } from 'utils/globals';\n\n// From Webpack Define Plugin\n// TODO: Switch to esbuild\ndeclare global {\n const VERSION: string;\n}\n\nfunction init() {\n Sentry.init({\n dsn: 'https://a4afae1e484b44e39c99481d78ed2e18@o290440.ingest.sentry.io/1529933',\n // version constant from package.json\n release: VERSION,\n environment: DEPLOY_ENV,\n normalizeDepth: 10,\n ignoreErrors: [\n // safari extension errors\n '@webkit-masked-url',\n ],\n beforeBreadcrumb(breadcrumb) {\n if (breadcrumb.category === 'xhr' && breadcrumb.data) {\n const analyticsRegex = /(clarity)*(analytics)*(doubleclick)*/gi;\n if (analyticsRegex.test(breadcrumb.data.url)) {\n return null;\n }\n }\n\n return breadcrumb;\n },\n integrations: [\n new RewriteFrames({\n /*\n * We need to remove the rails-generated fingerprint hash from the\n * stack trace source file so sentry knows to compare the correct\n * index.bundle.js to its index.bundle.map.js file\n */\n iteratee: (frame) => {\n if (!frame.filename) {\n return frame;\n }\n\n // eslint-disable-next-line no-param-reassign\n frame.filename = frame.filename.replace(/(bundle-[\\w\\d]*)/, 'bundle');\n return frame;\n },\n }),\n ],\n });\n}\n\nexport default {\n init,\n addBreadcrumb: Sentry.addBreadcrumb,\n captureException: Sentry.captureException,\n captureMessage: Sentry.captureMessage,\n setUser: Sentry.setUser,\n setTag: Sentry.setTag,\n createReduxEnhancer: Sentry.createReduxEnhancer,\n};\n", "export * from '@sentry/browser';\nexport { init } from './sdk.js';\nexport { Profiler, useProfiler, withProfiler } from './profiler.js';\nexport { ErrorBoundary, withErrorBoundary } from './errorboundary.js';\nexport { createReduxEnhancer } from './redux.js';\nexport { reactRouterV3BrowserTracingIntegration, reactRouterV3Instrumentation } from './reactrouterv3.js';\nexport { reactRouterV4BrowserTracingIntegration, reactRouterV4Instrumentation, reactRouterV5BrowserTracingIntegration, reactRouterV5Instrumentation, withSentryRouting } from './reactrouter.js';\nexport { reactRouterV6BrowserTracingIntegration, reactRouterV6Instrumentation, withSentryReactRouterV6Routing, wrapCreateBrowserRouter, wrapUseRoutes } from './reactrouterv6.js';\n//# sourceMappingURL=index.js.map\n", "export { applyAggregateErrorsToEvent } from './aggregate-errors.js';\nexport { getComponentName, getDomElement, getLocationHref, htmlTreeAsString } from './browser.js';\nexport { dsnFromString, dsnToString, makeDsn } from './dsn.js';\nexport { SentryError } from './error.js';\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton } from './worldwide.js';\nexport { addInstrumentationHandler } from './instrument/index.js';\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel } from './is.js';\nexport { isBrowser } from './isBrowser.js';\nexport { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods } from './logger.js';\nexport { memoBuilder } from './memo.js';\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 } from './misc.js';\nexport { dynamicRequire, isNodeEnv, loadModule } from './node.js';\nexport { normalize, normalizeToSize, normalizeUrlToBase, walk } from './normalize.js';\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode } from './object.js';\nexport { basename, dirname, isAbsolute, join, normalizePath, relative, resolve } from './path.js';\nexport { makePromiseBuffer } from './promisebuffer.js';\nexport { DEFAULT_USER_INCLUDES, addRequestDataToEvent, addRequestDataToTransaction, extractPathForTransaction, extractRequestData, winterCGHeadersToDict, winterCGRequestToRequestData } from './requestdata.js';\nexport { severityFromString, severityLevelFromString, validSeverityLevels } from './severity.js';\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse } from './stacktrace.js';\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate } from './string.js';\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver } from './supports.js';\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise.js';\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs } from './time.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, propagationContextFromHeaders, tracingContextFromHeaders } from './tracing.js';\nexport { getSDKSource, isBrowserBundle } from './env.js';\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope } from './envelope.js';\nexport { createClientReportEnvelope } from './clientreport.js';\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits } from './ratelimit.js';\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from './baggage.js';\nexport { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment } from './url.js';\nexport { addOrUpdateIntegration } from './userIntegrations.js';\nexport { makeFifoCache } from './cache.js';\nexport { eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames } from './eventbuilder.js';\nexport { callFrameToStackFrame, watchdogTimer } from './anr.js';\nexport { LRUMap } from './lru.js';\nexport { _asyncNullishCoalesce } from './buildPolyfills/_asyncNullishCoalesce.js';\nexport { _asyncOptionalChain } from './buildPolyfills/_asyncOptionalChain.js';\nexport { _asyncOptionalChainDelete } from './buildPolyfills/_asyncOptionalChainDelete.js';\nexport { _nullishCoalesce } from './buildPolyfills/_nullishCoalesce.js';\nexport { _optionalChain } from './buildPolyfills/_optionalChain.js';\nexport { _optionalChainDelete } from './buildPolyfills/_optionalChainDelete.js';\nexport { addConsoleInstrumentationHandler } from './instrument/console.js';\nexport { addClickKeypressInstrumentationHandler } from './instrument/dom.js';\nexport { SENTRY_XHR_DATA_KEY, addXhrInstrumentationHandler } from './instrument/xhr.js';\nexport { addFetchInstrumentationHandler } from './instrument/fetch.js';\nexport { addHistoryInstrumentationHandler } from './instrument/history.js';\nexport { addGlobalErrorInstrumentationHandler } from './instrument/globalError.js';\nexport { addGlobalUnhandledRejectionInstrumentationHandler } from './instrument/globalUnhandledRejection.js';\nexport { resetInstrumentationHandlers } from './instrument/_handlers.js';\nexport { filenameIsInApp } from './node-stack-trace.js';\nexport { escapeStringForRegex } from './vendor/escapeStringForRegex.js';\nexport { supportsHistory } from './vendor/supportsHistory.js';\n//# sourceMappingURL=index.js.map\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport type { ParameterizedString, PolymorphicEvent, 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/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n return objectToString.call(wat) === `[object ${className}]`;\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 string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\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 || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\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): wat is PolymorphicEvent {\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\ninterface VueViewModel {\n // Vue3\n __isVue?: boolean;\n // Vue2\n _isVue?: boolean;\n}\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): boolean {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue));\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", "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 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", "/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { logger } from './logger';\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 markFunctionWrapped(wrapped, original);\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: object, name: string, value: unknown): void {\n try {\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 } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\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 try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\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 `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject<V>(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\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: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record<string, unknown>)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\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 */\nexport function extractExceptionKeysForMessage(exception: Record<string, unknown>, 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 a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys<T>(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map<unknown, unknown>();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys<T>(inputValue: T, memoizationMap: Map<unknown, unknown>): T {\n if (isPojo(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record<string, unknown> {\n if (!isPlainObject(input)) {\n return false;\n }\n\n try {\n const name = (Object.getPrototypeOf(input) as { constructor: { name: string } }).constructor.name;\n return !name || name === 'Object';\n } catch {\n return true;\n }\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", "import type { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nimport type { GetModuleFn } from './node-stack-trace';\nimport { filenameIsInApp, node } from './node-stack-trace';\n\nexport { filenameIsInApp };\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\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 const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray<StackFrame>): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\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 (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\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 (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\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\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n getRandomValues(array: Uint8Array): Uint8Array;\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = (): number => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => {\n // crypto.getRandomValues might return undefined instead of the typed array\n // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n // However, `typedArray` is still filled in-place.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n const typedArray = new Uint8Array(1);\n crypto.getRandomValues(typedArray);\n return typedArray[0];\n };\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\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 // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.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 * 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\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify<T = unknown>(maybeArray: T | T[]): T[] {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n", "import { DEBUG_BUILD } from './debug-build';\nimport { logger } from './logger';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\ndeclare const EdgeRuntime: string | undefined;\n\nexport { supportsHistory } from './vendor/supportsHistory';\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-expect-error 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 WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\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 (typeof EdgeRuntime === 'string') {\n return true;\n }\n\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.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 = WINDOW.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 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 WINDOW;\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", "// 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", "/*\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", "/* 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", "/* 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", "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 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", "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", "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", "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", "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 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 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 { 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", "export const SDK_VERSION = '7.120.3';\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", "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", "export type { ClientClass } from './sdk';\nexport type { AsyncContextStrategy, Carrier, Layer, RunWithAsyncContextOptions } from './hub';\nexport type { OfflineStore, OfflineTransportOptions } from './transports/offline';\nexport type { ServerRuntimeClientOptions } from './server-runtime-client';\nexport type { RequestDataIntegrationOptions } from './integrations/requestdata';\nexport type { IntegrationIndex } from './integration';\n\nexport * from './tracing';\nexport * from './semanticAttributes';\nexport { createEventEnvelope, createSessionEnvelope } from './envelope';\nexport {\n addBreadcrumb,\n captureCheckIn,\n withMonitor,\n captureException,\n captureEvent,\n captureMessage,\n close,\n // eslint-disable-next-line deprecation/deprecation\n configureScope,\n flush,\n lastEventId,\n // eslint-disable-next-line deprecation/deprecation\n startTransaction,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n withScope,\n withIsolationScope,\n getClient,\n isInitialized,\n getCurrentScope,\n startSession,\n endSession,\n captureSession,\n withActiveSpan,\n} from './exports';\nexport {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub,\n getIsolationScope,\n getHubFromCarrier,\n // eslint-disable-next-line deprecation/deprecation\n Hub,\n // eslint-disable-next-line deprecation/deprecation\n makeMain,\n getMainCarrier,\n runWithAsyncContext,\n setHubOnCarrier,\n ensureHubOnCarrier,\n setAsyncContextStrategy,\n} from './hub';\nexport { makeSession, closeSession, updateSession } from './session';\nexport { SessionFlusher } from './sessionflusher';\nexport { Scope, getGlobalScope, setGlobalScope } from './scope';\nexport {\n notifyEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n addGlobalEventProcessor,\n} from './eventProcessors';\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint } from './api';\nexport { BaseClient, addEventProcessor } from './baseclient';\nexport { ServerRuntimeClient } from './server-runtime-client';\nexport { initAndBind, setCurrentClient } from './sdk';\nexport { createTransport } from './transports/base';\nexport { makeOfflineTransport } from './transports/offline';\nexport { makeMultiplexedTransport } from './transports/multiplexed';\nexport { SDK_VERSION } from './version';\nexport {\n getIntegrationsToSetup,\n addIntegration,\n defineIntegration,\n // eslint-disable-next-line deprecation/deprecation\n convertIntegrationFnToClass,\n} from './integration';\nexport { applyScopeDataToEvent, mergeScopeData } from './utils/applyScopeDataToEvent';\nexport { prepareEvent } from './utils/prepareEvent';\nexport { createCheckInEnvelope } from './checkin';\nexport { createSpanEnvelope } from './span';\nexport { hasTracingEnabled } from './utils/hasTracingEnabled';\nexport { isSentryRequestUrl } from './utils/isSentryRequestUrl';\nexport { handleCallbackErrors } from './utils/handleCallbackErrors';\nexport { parameterize } from './utils/parameterize';\nexport { spanToTraceHeader, spanToJSON, spanIsSampled, spanToTraceContext } from './utils/spanUtils';\nexport { getRootSpan } from './utils/getRootSpan';\nexport { applySdkMetadata } from './utils/sdkMetadata';\nexport { DEFAULT_ENVIRONMENT } from './constants';\n/* eslint-disable deprecation/deprecation */\nexport { ModuleMetadata } from './integrations/metadata';\nexport { RequestData } from './integrations/requestdata';\nexport { InboundFilters } from './integrations/inboundfilters';\nexport { FunctionToString } from './integrations/functiontostring';\nexport { LinkedErrors } from './integrations/linkederrors';\n/* eslint-enable deprecation/deprecation */\nimport * as INTEGRATIONS from './integrations';\nexport { functionToStringIntegration } from './integrations/functiontostring';\nexport { inboundFiltersIntegration } from './integrations/inboundfilters';\nexport { linkedErrorsIntegration } from './integrations/linkederrors';\nexport { moduleMetadataIntegration } from './integrations/metadata';\nexport { requestDataIntegration } from './integrations/requestdata';\nexport { metrics } from './metrics/exports';\n\n/** @deprecated Import the integration function directly, e.g. `inboundFiltersIntegration()` instead of `new Integrations.InboundFilter(). */\nconst Integrations = INTEGRATIONS;\n\n// eslint-disable-next-line deprecation/deprecation\nexport { Integrations };\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 { 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", "/* 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", "export { CaptureConsole, captureConsoleIntegration } from './captureconsole.js';\nexport { Debug, debugIntegration } from './debug.js';\nexport { Dedupe, dedupeIntegration } from './dedupe.js';\nexport { ExtraErrorData, extraErrorDataIntegration } from './extraerrordata.js';\nexport { Offline } from './offline.js';\nexport { ReportingObserver, reportingObserverIntegration } from './reportingobserver.js';\nexport { RewriteFrames, rewriteFramesIntegration } from './rewriteframes.js';\nexport { SessionTiming, sessionTimingIntegration } from './sessiontiming.js';\nexport { Transaction } from './transaction.js';\nexport { HttpClient, httpClientIntegration } from './httpclient.js';\nexport { ContextLines, contextLinesIntegration } from './contextlines.js';\n//# sourceMappingURL=index.js.map\n", "export { applyAggregateErrorsToEvent } from './aggregate-errors.js';\nexport { getComponentName, getDomElement, getLocationHref, htmlTreeAsString } from './browser.js';\nexport { dsnFromString, dsnToString, makeDsn } from './dsn.js';\nexport { SentryError } from './error.js';\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton } from './worldwide.js';\nexport { addInstrumentationHandler } from './instrument/index.js';\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel } from './is.js';\nexport { isBrowser } from './isBrowser.js';\nexport { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods } from './logger.js';\nexport { memoBuilder } from './memo.js';\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 } from './misc.js';\nexport { dynamicRequire, isNodeEnv, loadModule } from './node.js';\nexport { normalize, normalizeToSize, normalizeUrlToBase, walk } from './normalize.js';\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode } from './object.js';\nexport { basename, dirname, isAbsolute, join, normalizePath, relative, resolve } from './path.js';\nexport { makePromiseBuffer } from './promisebuffer.js';\nexport { DEFAULT_USER_INCLUDES, addRequestDataToEvent, addRequestDataToTransaction, extractPathForTransaction, extractRequestData, winterCGHeadersToDict, winterCGRequestToRequestData } from './requestdata.js';\nexport { severityFromString, severityLevelFromString, validSeverityLevels } from './severity.js';\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse } from './stacktrace.js';\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate } from './string.js';\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver } from './supports.js';\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise.js';\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs } from './time.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, propagationContextFromHeaders, tracingContextFromHeaders } from './tracing.js';\nexport { getSDKSource, isBrowserBundle } from './env.js';\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope } from './envelope.js';\nexport { createClientReportEnvelope } from './clientreport.js';\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits } from './ratelimit.js';\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from './baggage.js';\nexport { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment } from './url.js';\nexport { addOrUpdateIntegration } from './userIntegrations.js';\nexport { makeFifoCache } from './cache.js';\nexport { eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames } from './eventbuilder.js';\nexport { callFrameToStackFrame, watchdogTimer } from './anr.js';\nexport { LRUMap } from './lru.js';\nexport { _asyncNullishCoalesce } from './buildPolyfills/_asyncNullishCoalesce.js';\nexport { _asyncOptionalChain } from './buildPolyfills/_asyncOptionalChain.js';\nexport { _asyncOptionalChainDelete } from './buildPolyfills/_asyncOptionalChainDelete.js';\nexport { _nullishCoalesce } from './buildPolyfills/_nullishCoalesce.js';\nexport { _optionalChain } from './buildPolyfills/_optionalChain.js';\nexport { _optionalChainDelete } from './buildPolyfills/_optionalChainDelete.js';\nexport { addConsoleInstrumentationHandler } from './instrument/console.js';\nexport { addClickKeypressInstrumentationHandler } from './instrument/dom.js';\nexport { SENTRY_XHR_DATA_KEY, addXhrInstrumentationHandler } from './instrument/xhr.js';\nexport { addFetchInstrumentationHandler } from './instrument/fetch.js';\nexport { addHistoryInstrumentationHandler } from './instrument/history.js';\nexport { addGlobalErrorInstrumentationHandler } from './instrument/globalError.js';\nexport { addGlobalUnhandledRejectionInstrumentationHandler } from './instrument/globalUnhandledRejection.js';\nexport { resetInstrumentationHandlers } from './instrument/_handlers.js';\nexport { filenameIsInApp } from './node-stack-trace.js';\nexport { escapeStringForRegex } from './vendor/escapeStringForRegex.js';\nexport { supportsHistory } from './vendor/supportsHistory.js';\n//# sourceMappingURL=index.js.map\n", "// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js\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/** JSDoc */\nfunction normalizeArray(parts: string[], allowAboveRoot?: boolean): string[] {\n // if the path tries to go above the root, `up` ends up > 0\n let up = 0;\n for (let i = parts.length - 1; i >= 0; i--) {\n const last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\S+:\\\\|\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^/\\\\]+?|)(\\.[^./\\\\]*|))(?:[/\\\\]*)$/;\n/** JSDoc */\nfunction splitPath(filename: string): string[] {\n // Truncate files names greater than 1024 characters to avoid regex dos\n // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172\n const truncated = filename.length > 1024 ? `<truncated>${filename.slice(-1024)}` : filename;\n const parts = splitPathRe.exec(truncated);\n return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nexport function resolve(...args: string[]): string {\n let resolvedPath = '';\n let resolvedAbsolute = false;\n\n for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? args[i] : '/';\n\n // Skip empty entries\n if (!path) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(\n resolvedPath.split('/').filter(p => !!p),\n !resolvedAbsolute,\n ).join('/');\n\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr: string[]): string[] {\n let start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') {\n break;\n }\n }\n\n let end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') {\n break;\n }\n }\n\n if (start > end) {\n return [];\n }\n return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nexport function relative(from: string, to: string): string {\n /* eslint-disable no-param-reassign */\n from = resolve(from).slice(1);\n to = resolve(to).slice(1);\n /* eslint-enable no-param-reassign */\n\n const fromParts = trim(from.split('/'));\n const toParts = trim(to.split('/'));\n\n const length = Math.min(fromParts.length, toParts.length);\n let samePartsLength = length;\n for (let i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n let outputParts = [];\n for (let i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nexport function normalizePath(path: string): string {\n const isPathAbsolute = isAbsolute(path);\n const trailingSlash = path.slice(-1) === '/';\n\n // Normalize the path\n let normalizedPath = normalizeArray(\n path.split('/').filter(p => !!p),\n !isPathAbsolute,\n ).join('/');\n\n if (!normalizedPath && !isPathAbsolute) {\n normalizedPath = '.';\n }\n if (normalizedPath && trailingSlash) {\n normalizedPath += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nexport function isAbsolute(path: string): boolean {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nexport function join(...args: string[]): string {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nexport function dirname(path: string): string {\n const result = splitPath(path);\n const root = result[0];\n let dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.slice(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\n/** JSDoc */\nexport function basename(path: string, ext?: string): string {\n let f = splitPath(path)[2];\n if (ext && f.slice(ext.length * -1) === ext) {\n f = f.slice(0, f.length - ext.length);\n }\n return f;\n}\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport slice from './option_groups.slice';\nimport optionGroupsAdapter from './option_groups.adapter';\n\nimport { byId } from 'utils/common';\nimport { notNull } from 'utils/type_guards';\n\nimport type { CartProductForCreate } from 'domains/cart_products';\nimport type { CanvasConfiguration } from 'domains/canvases';\nimport type { Dictionary } from 'types/common_types';\nimport type { OptionGroupAPIData } from './option_groups.types';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst defaultSelectors = optionGroupsAdapter.getSelectors();\n\nconst selectEmptyTemplateIds = (state: LocalState) => state.emptyTemplateIds;\n\nexport const selectAllOptionGroupsByTemplateId = createSelector(\n [defaultSelectors.selectAll, selectEmptyTemplateIds],\n (optionGroups, empties) => {\n const result: Dictionary<number[]> = {};\n\n // This selector is used to determine if option groups for a canvas product\n // have been loaded correctly -- so we need an empty array returned for\n // template ids that have no option groups, bc undefined indicates it has not\n // been loaded or has had an error\n empties.forEach((id) => (result[id] = []));\n\n return optionGroups.reduce((acc: Dictionary<number[]>, og: OptionGroupAPIData) => {\n const arr = acc[og.parentId];\n\n if (arr) {\n acc[og.parentId] = arr.concat([og.id]);\n } else {\n acc[og.parentId] = [og.id];\n }\n\n return acc;\n }, result);\n }\n);\n\nexport const selectOptionGroupsForTemplateId = createSelector(\n [defaultSelectors.selectAll, (state: LocalState, templateId: number) => templateId],\n (ogs, templateId) => {\n return ogs.filter((og) => og.parentId === templateId);\n }\n);\n\nexport const selectAllOrderOptionGroups = createSelector([defaultSelectors.selectAll], (ogs) =>\n ogs.filter((og) => og.parentId === 'order-options')\n);\n\nexport const selectAppliedOptionGroupFilters = (state: LocalState) => state.appliedFilters;\n\nexport const selectOptionsForCreateCartProduct = (\n state: LocalState,\n canvas: CanvasConfiguration\n): CartProductForCreate['cart_product_options_attributes'] | undefined => {\n if (!canvas.options) return;\n\n return Object.entries(canvas.options)\n .map(([ogId, oId]) => {\n const og = state.entities[ogId];\n if (!og) return;\n\n const o = og.options.find(byId(oId));\n if (!o) return;\n\n // We filter out the crate options, since there is more complicated logic that happens on order-api\n // for determining how many products per crate, pricing, etc. Since these options show up directly on each\n // individual cart product, we don't want them here\n if (!og.options.some((o) => o.handling_fee)) {\n return { option_api_id: o.id, quantity: 1 };\n }\n })\n .filter(notNull);\n};\n\nexport default {\n ...optionGroupsAdapter.getSelectors(localState),\n allByTemplateId: compose(selectAllOptionGroupsByTemplateId, localState),\n appliedFilters: compose(selectAppliedOptionGroupFilters, localState),\n forTemplateId: (state: GlobalState, id: number) =>\n selectOptionGroupsForTemplateId(localState(state), id),\n forCreateCartProduct: (state: GlobalState, canvas: CanvasConfiguration) =>\n selectOptionsForCreateCartProduct(localState(state), canvas),\n allOrderOptions: compose(selectAllOrderOptionGroups, localState),\n};\n", "import type { BaseAPIData, ProductCustomOptionsAPIData, NodeAPIData } from 'types/catalog_types';\n\n/** Shared across API Option Data - Option Groups & Options */\nexport interface BaseOptionAPIData extends BaseAPIData {\n disable_ids: string;\n uid: string;\n required: boolean;\n multiple: boolean;\n custom_options: string | null | ProductCustomOptionsAPIData;\n service_type: string;\n price_multiplier: boolean;\n parent_id: number | null;\n hidden: boolean;\n unavailable: boolean;\n handling_fee: boolean;\n handling_group: '' | 'crate' | 'freight' | 'acrylicfreight';\n}\n\nexport interface RawOptionGroupAPIData extends BaseOptionAPIData {\n service: null;\n custom_options: null;\n options: RawOptionAPIData[];\n nodes: [];\n}\n\nexport interface OptionGroupAPIData extends RawOptionGroupAPIData {\n /** Id of product */\n parentId: number | 'order-options';\n options: OptionAPIData[];\n}\n\nexport interface RawOptionAPIData extends BaseOptionAPIData {\n service: OptionServiceAPIData;\n options: [];\n parent_id: number;\n custom_options: string | null | ProductCustomOptionsAPIData;\n nodes: NodeAPIData[];\n}\n\nexport interface OptionAPIData extends RawOptionAPIData {\n custom_options: ProductCustomOptionsAPIData | null;\n}\n\nexport interface DisabledOption {\n id: string;\n by: string;\n}\n\nexport interface OptionServiceAPIData {\n id: number;\n xml_import_id: number;\n snapshot_id: number;\n uid: string;\n name: string;\n billing_code: string;\n price: string;\n service_type: number;\n apply_to: number;\n tier_pricing: string;\n tier_type: number;\n}\n", "import actions from './svgs.actions';\nimport selectors from './svgs.selectors';\nimport slice from './svgs.slice';\nimport utils from './svgs.utils';\n\nexport * from './svgs.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n utils,\n};\n\nexport { default as slice } from './svgs.slice';\n\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\nimport { SVGAPIData } from './svgs.types';\n\nconst getSVGImage = {\n pending: createAction<string>('svgs/getSVGImage/pending'),\n fulfilled: createAction<SVGAPIData>('svgs/getSVGImage/fulfilled'),\n rejected: createAction('svgs/getSVGImage/rejected'),\n};\n\nexport default {\n getSVGImage,\n};\n", "import { combineReducers } from '@reduxjs/toolkit';\n\nimport slice from './svgs.slice';\nimport svgAdapter from './svgs.adapter';\n\nimport type { NodeAPIData } from 'types/catalog_types';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nexport default {\n ...svgAdapter.getSelectors(localState),\n};\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport svgAdapter from './svgs.adapter';\nimport actions from './svgs.actions';\n\nimport type { LoadingStatus } from 'types/common_types';\n\ntype SVGSliceInitialState = {\n status: LoadingStatus;\n};\n\nconst initialState: SVGSliceInitialState = {\n status: 'idle',\n};\n\nconst svgs = createSlice({\n name: 'svgs',\n initialState: svgAdapter.getInitialState(initialState),\n reducers: {},\n extraReducers(builder) {\n builder\n .addCase(actions.getSVGImage.pending, (state, { payload }) => {\n const update = svgAdapter.addOne(state, { uid: payload, status: 'loading' });\n update.status = 'loading';\n })\n .addCase(actions.getSVGImage.fulfilled, (state, { payload }) => {\n const update = svgAdapter.updateOne(state, {\n id: payload.uid,\n changes: {\n ...payload,\n status: 'loaded',\n },\n });\n update.status = 'idle';\n return update;\n })\n .addCase(actions.getSVGImage.rejected, (state) => {\n return { ...state, status: 'error' };\n });\n },\n});\n\nexport default svgs;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { SVGAPIData } from './svgs.types';\n\nconst svgAdapter = createEntityAdapter<SVGAPIData>({\n selectId: (svgData) => svgData.uid,\n});\n\nexport default svgAdapter;\n", "function toParseableSVG(svg: string) {\n const container = document.createElement('div');\n container.innerHTML = svg;\n\n return container;\n}\n\nexport default {\n toParseableSVG,\n};\n", "export type RawSVGAPIData = {\n id: number;\n data: string;\n uid: string;\n};\n\nexport type SVGAPIData = Omit<RawSVGAPIData, 'id' | 'data'> & {\n status: 'loading' | 'loaded';\n uid: string;\n data?: string;\n hasBorderColor?: boolean;\n hideBorderColor?: boolean;\n};\n", "import { maxBy, minBy, partial } from 'lodash';\nimport { byId } from 'utils/common';\n\nimport products from 'domains/products';\n\nimport type {\n SavedArrangementCanvas,\n UnavailableArrangementItem,\n} from 'domains/saved_arrangements';\nimport type { Dimension, Point } from 'types/common_types';\nimport type { CanvasConfiguration } from 'domains/canvases';\nimport type { RootState } from 'store/wos_store';\nimport type { ProductTemplateAPIData } from 'types/catalog_types';\n\ntype CanvasPosition = Pick<CanvasConfiguration, 'position' | 'id'>;\n\nexport const calculateArrangementWidth = partial(calculateArrangementDimension, 'width');\nexport const calculateArrangementHeight = partial(calculateArrangementDimension, 'height');\nfunction calculateArrangementDimension(\n dimension: 'width' | 'height',\n canvasPositions: CanvasPosition[],\n canvasesById: Record<string, CanvasConfiguration>,\n productsById: Record<number, ProductTemplateAPIData>\n) {\n if (\n canvasPositions.length === 0 ||\n Object.keys(canvasesById).length === 0 ||\n Object.keys(productsById).length === 0\n ) {\n return 0;\n }\n\n const configuredCanvases = canvasPositions\n .map((c) => canvasesById[c.id])\n .filter((c) => !!c.product);\n\n if (configuredCanvases.length !== canvasPositions.length) return 0;\n\n const point = dimension === 'width' ? 'x' : 'y';\n const start = minBy(canvasPositions, (c) => c.position[point]);\n\n const end = maxBy(canvasPositions, (canvasPosition) => {\n const canvas = canvasesById[canvasPosition.id];\n const canvasProduct = productsById[canvas.product as number]; // safe since we already checked for this\n const dimensionSize = products.utils.calculateProductSize(canvasProduct, canvas)[dimension];\n\n return canvasPosition.position[point] + dimensionSize;\n });\n\n if (!end || !start) return 0;\n\n const endCanvas = canvasesById[end.id];\n const endProduct = productsById[endCanvas.product as number]; // safe since we already checked for this\n const endDimensions = products.utils.calculateProductSize(endProduct, endCanvas);\n\n return Math.abs(end.position[point] + endDimensions[dimension]) - start.position[point];\n}\n\nexport function findArrangementPositionToCenter(\n arrangementDimensions: Dimension,\n screenDimensions: Dimension\n): Point {\n const { width: arrWidth, height: arrHeight } = arrangementDimensions;\n const { width: screenWidth, height: screenHeight } = screenDimensions;\n\n const x = screenWidth / 2 - arrWidth / 2;\n const y = screenHeight / 2 - arrHeight / 2;\n\n return { x, y };\n}\n\n// Calculates the positions of canvases within the arrangement\n// Need to use this to recalculate when a canvas is moved or removed\nexport function calculateArrangementCanvasPositions(canvases: CanvasPosition[]): {\n updates: { id: string; changes: CanvasPosition }[];\n leftmost?: CanvasPosition;\n topmost?: CanvasPosition;\n} {\n const leftmost = minBy(canvases, (c) => c.position.x);\n const topmost = minBy(canvases, (c) => c.position.y);\n\n if (!leftmost || !topmost) {\n return { updates: [] };\n }\n\n // Update the other canvas positions within the repositioned arrangement\n const updates = canvases.map((canvasToUpdate) => {\n const changes = {\n id: canvasToUpdate.id,\n position: {\n x: canvasToUpdate.position.x - leftmost.position.x,\n y: canvasToUpdate.position.y - topmost.position.y,\n },\n };\n return { id: canvasToUpdate.id, changes };\n });\n\n return { updates, leftmost, topmost };\n}\n\n// Determines which canvases in a saved arrangement are currently unavailable or discontinued\nexport function getArrangementAvailability(state: RootState, canvases: SavedArrangementCanvas[]) {\n const unavailability: UnavailableArrangementItem[] = [];\n const discontinued = 'discontinued';\n const unavailable = 'unavailable';\n\n canvases.forEach((canvas) => {\n const { id, product: productId, options: optionConfig } = canvas.config;\n const product = state.products.entities[productId];\n\n // Very unlikely that a product would be temporarily unavailable, even less likely\n // that a temporarily unavailable product is able to be in an arrangement\n if (product && product.unavailable) {\n unavailability.push({\n type: 'product',\n reason: unavailable,\n item: { id, name: product.name_long, parentName: 'Size' },\n });\n } else if (!product) {\n unavailability.push({ type: 'product', reason: discontinued, item: { id } });\n }\n\n // No sense to check the options if product can't be loaded\n if (!product || product.unavailable) return;\n\n Object.entries(optionConfig).forEach(([optionGroupId, optionId]) => {\n const optionGroup = state.optionGroups.entities[optionGroupId];\n const option = optionGroup?.options.find(byId(optionId));\n\n // Will never be the case that an option group is temporarily unavailable\n if (!optionGroup) {\n unavailability.push({ type: 'option-group', reason: discontinued, item: { id } });\n return;\n }\n\n if (option && option.unavailable) {\n unavailability.push({\n type: 'option',\n reason: unavailable,\n item: { id, name: option.name, parentName: optionGroup.name },\n });\n } else if (!option) {\n unavailability.push({ type: 'option', reason: discontinued, item: { id } });\n }\n });\n });\n\n return unavailability;\n}\n", "import slice from './products.slice';\nimport selectors from './products.selectors';\nimport utils from './products.utils';\n\nconst module = {\n actions: { ...slice.actions },\n selectors,\n utils,\n};\n\nexport { default as slice } from './products.slice';\n\nexport default module;\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport catalogs from 'domains/catalogs';\nimport subcatalogs from 'domains/subcatalogs';\n\nimport productsAdapter from './products.adapter';\nimport utils from './products.utils';\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\n\nconst products = createSlice({\n name: 'products',\n initialState: productsAdapter.getInitialState({\n appliedFilter: 'All',\n }),\n reducers: {\n addMany: productsAdapter.addMany,\n setProductFilter(state, { payload }: PayloadAction<string>) {\n return { ...state, appliedFilter: payload };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(catalogs.actions.getAllDeep.fulfilled, (state, { payload }) => {\n const templates = utils.flattenProductsFromCatalogs(payload);\n return productsAdapter.addMany(state, templates);\n })\n .addCase(subcatalogs.actions.fetchSubcatalogs.fulfilled, (state, { payload }) => {\n if (payload) {\n const result = utils.flattenProductsFromSubcatalogs(payload.subcatalogs);\n return productsAdapter.addMany(state, result);\n } else {\n return state;\n }\n });\n },\n});\n\nexport default products;\n", "import actions from './catalogs.actions';\nimport slice from './catalogs.slice';\nimport selectors from './catalogs.selectors';\n\nconst allActions = { ...actions, ...slice.actions };\n\nconst module = {\n actions: allActions,\n selectors,\n};\n\nexport { default as slice } from './catalogs.slice';\n\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\nimport type { RawCatalogAPIData } from 'types/catalog_types';\n\nconst getAllShallow = {\n pending: createAction('catalogs/getAllShallow/pending'),\n fulfilled: createAction<RawCatalogAPIData[]>('catalogs/getAllShallow/fulfilled'),\n rejected: createAction('catalogs/getAllShallow/rejected'),\n};\n\nconst getAllDeep = {\n pending: createAction('catalogs/getAllDeep/pending'),\n fulfilled: createAction<RawCatalogAPIData[]>('catalogs/getAllDeep/fulfilled'),\n rejected: createAction('catalogs/getAllDeep/rejected'),\n};\n\nexport default { getAllShallow, getAllDeep };\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport actions from './catalogs.actions';\nimport catalogsAdapter from './catalogs.adapter';\nimport utils from './catalogs.utils';\n\nimport type { LoadingStatus } from 'types/common_types';\nimport type { RawCatalogAPIData } from 'types/catalog_types';\n\ntype CatalogSliceInitialState = {\n status: LoadingStatus;\n};\n\nconst { getAllShallow, getAllDeep } = actions;\n\nconst initialState: CatalogSliceInitialState = {\n status: 'idle',\n};\n\nconst catalogs = createSlice({\n name: 'catalogs',\n initialState: catalogsAdapter.getInitialState(initialState),\n reducers: {\n addMany(state, { payload }: PayloadAction<RawCatalogAPIData[]>) {\n const formatted = payload.map(utils.flattenCatalogTemplates);\n return catalogsAdapter.addMany(state, formatted);\n },\n reset() {\n return catalogsAdapter.getInitialState(initialState);\n },\n },\n extraReducers(builder) {\n builder\n .addCase(getAllShallow.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(getAllShallow.fulfilled, (state, { payload }) => {\n const formatted = payload.map(utils.flattenCatalogTemplates);\n const update = catalogsAdapter.addMany(state, formatted);\n update.status = 'idle';\n return update;\n })\n .addCase(getAllShallow.rejected, (state) => {\n return { ...state, status: 'error' };\n })\n .addCase(getAllDeep.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(getAllDeep.fulfilled, (state, { payload }) => {\n const formatted = payload.map(utils.flattenCatalogTemplates);\n const update = catalogsAdapter.setMany(state, formatted);\n update.status = 'idle';\n return update;\n })\n .addCase(getAllDeep.rejected, (state) => {\n return { ...state, status: 'error' };\n });\n },\n});\n\nexport default catalogs;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { CatalogAPIData } from 'types/catalog_types';\n\nconst catalogsAdapter = createEntityAdapter<CatalogAPIData>();\n\nexport default catalogsAdapter;\n", "import { CatalogAPIData, RawCatalogAPIData } from 'types/catalog_types';\n\nconst flattenCatalogTemplates = (catalog: RawCatalogAPIData): CatalogAPIData => ({\n ...catalog,\n templates: catalog.templates?.map((t) => t.id) || [],\n});\n\nexport default {\n flattenCatalogTemplates,\n};\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport slice from './catalogs.slice';\nimport catalogsAdapter from './catalogs.adapter';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\n// Localized Selectors\nconst defaultSelectors = catalogsAdapter.getSelectors();\n\nexport const selectAllCatalogIdsBySlug = createSelector(\n [defaultSelectors.selectAll],\n (allCatalogs) =>\n allCatalogs.reduce((acc: Record<string, number>, catalog) => {\n acc[catalog.slug] = catalog.id;\n return acc;\n }, {})\n);\n\nexport const selectCartAddOnsCatalog = (state: LocalState) => {\n const addOnsCatalog = defaultSelectors.selectAll(state).find((c) => c.slug === 'cart_add-ons');\n return addOnsCatalog;\n};\n\n/**\n * Globalized selectors that know how to select data from the RootState\n */\nexport default {\n ...catalogsAdapter.getSelectors(localState),\n idsBySlug: compose(selectAllCatalogIdsBySlug, localState),\n cartAddOns: compose(selectCartAddOnsCatalog, localState),\n};\n", "import slice from './subcatalogs.slice';\nimport actions from './subcatalogs.actions';\nimport selectors from './subcatalogs.selectors';\n\nconst allActions = { ...actions, ...slice.actions };\n\nconst module = {\n actions: allActions,\n selectors,\n};\n\nexport { default as slice } from './subcatalogs.slice';\n\nexport default module;\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport actions from './subcatalogs.actions';\nimport subcatalogsAdapter from './subcatalogs.adapter';\nimport utils from './subcatalogs.utils';\n\nimport catalogs from 'domains/catalogs';\n\nimport type { LoadingStatus } from 'types/common_types';\n\nconst { fetchSubcatalogs } = actions;\n\ntype SubcatalogSliceInitialState = {\n status: LoadingStatus;\n};\n\nconst initialState: SubcatalogSliceInitialState = {\n status: 'idle',\n};\n\nconst slice = createSlice({\n name: 'subcatalogs',\n initialState: subcatalogsAdapter.getInitialState(initialState),\n reducers: {\n addMany: subcatalogsAdapter.addMany,\n reset: () => subcatalogsAdapter.getInitialState(initialState),\n },\n extraReducers(builder) {\n builder\n .addCase(fetchSubcatalogs.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(fetchSubcatalogs.fulfilled, (state, { payload }) => {\n if (payload) {\n const { subcatalogs, catalogId } = payload;\n\n const update = subcatalogsAdapter.addMany(\n state,\n utils.flattenSubcatalogs(subcatalogs, catalogId)\n );\n\n update.status = 'idle';\n\n return update;\n } else {\n return { ...state, status: 'idle' };\n }\n })\n .addCase(fetchSubcatalogs.rejected, (state) => {\n // Handle an error, send more details to sentry, etc\n return { ...state, status: 'error' };\n })\n .addCase(catalogs.actions.getAllDeep.fulfilled, (state, { payload }) => {\n const subcatalogs = utils.flattenSubcatalogsFromCatalogs(payload);\n const update = subcatalogsAdapter.addMany(state, subcatalogs);\n\n return update;\n });\n },\n});\n\nexport default slice;\n", "import { createAction } from '@reduxjs/toolkit';\nimport type { RawSubcatalogAPIData } from 'types/catalog_types';\n\nexport type FetchSubcatalogsFulfilledPayload = {\n subcatalogs: RawSubcatalogAPIData[];\n catalogId: number;\n};\n\nconst fetchSubcatalogs = {\n pending: createAction<number>('subcatalogs/fetchSubcatalogs/pending'),\n fulfilled: createAction<FetchSubcatalogsFulfilledPayload | null>(\n 'subcatalogs/fetchSubcatalogs/fulfilled'\n ),\n rejected: createAction('subcatalogs/fetchSubcatalogs/rejected'),\n};\n\nexport default { fetchSubcatalogs };\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { SubcatalogAPIData } from 'types/catalog_types';\n\nconst subcatalogsAdapter = createEntityAdapter<SubcatalogAPIData>();\n\nexport default subcatalogsAdapter;\n", "import type {\n RawCatalogAPIData,\n RawSubcatalogAPIData,\n SubcatalogAPIData,\n} from 'types/catalog_types';\n\nconst flattenSubcatalogsFromCatalogs = (catalogs: RawCatalogAPIData[]): SubcatalogAPIData[] =>\n catalogs.reduce((acc: SubcatalogAPIData[], catalog) => {\n const subcatalogs = catalog.templates || [];\n return acc.concat(flattenSubcatalogs(subcatalogs, catalog.id));\n }, []);\n\nconst flattenSubcatalogs = (\n subcatalogs: RawSubcatalogAPIData[],\n catalogId: number\n): SubcatalogAPIData[] => subcatalogs.map((s) => formatSubcatalog(s, catalogId));\n\nconst formatSubcatalog = (s: RawSubcatalogAPIData, catalogId: number): SubcatalogAPIData => ({\n ...s,\n parentId: catalogId,\n templates: s.templates.map((p) => p.id),\n});\n\nexport default {\n flattenSubcatalogsFromCatalogs,\n flattenSubcatalogs,\n formatSubcatalog,\n};\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport slice from './subcatalogs.slice';\nimport subcatalogsAdapter from './subcatalogs.adapter';\n\nimport type { SubcatalogAPIData } from 'types/catalog_types';\nimport type { Dictionary } from 'types/common_types';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\n// Localized Selectors\nconst defaultSelectors = subcatalogsAdapter.getSelectors();\n\nexport const selectAllSubcatalogsByCatalogId = createSelector(\n [defaultSelectors.selectAll],\n (subcatalogs) =>\n subcatalogs.reduce((acc: Dictionary<SubcatalogAPIData[]>, s: SubcatalogAPIData) => {\n const arr = acc[s.parentId];\n\n if (arr) {\n acc[s.parentId] = arr.concat([s]);\n } else {\n acc[s.parentId] = [s];\n }\n\n return acc;\n }, {})\n);\n\nexport const selectAllSubcatalogIdsBySlug = createSelector(\n [defaultSelectors.selectAll],\n (allSubcatalogs) =>\n allSubcatalogs.reduce((acc: Record<string, number>, subcatalog) => {\n acc[subcatalog.slug] = subcatalog.id;\n return acc;\n }, {})\n);\n\n/**\n * Globalized selectors that know how to select data from the RootState\n */\nexport default {\n ...subcatalogsAdapter.getSelectors(localState),\n idsBySlug: compose(selectAllSubcatalogIdsBySlug, localState),\n allByCatalogId: compose(selectAllSubcatalogsByCatalogId, localState),\n};\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { ProductTemplateAPIData } from 'types/catalog_types';\n\nconst productsAdapter = createEntityAdapter<ProductTemplateAPIData>({});\n\nexport default productsAdapter;\n", "import reporter from 'utils/reporter';\n\nimport type {\n BaseAPIData,\n CustomProductTemplateAPIData,\n CustomSizeProductCustomOptions,\n ProductCustomOptionsAPIData,\n ProductTemplateAPIData,\n RawCatalogAPIData,\n RawProductTemplateAPIData,\n RawSubcatalogAPIData,\n} from 'types/catalog_types';\nimport { Dimension } from 'types/common_types';\nimport { orientationAndRatioPercentage, realNumber } from 'utils/math_util';\n\nfunction flattenProductsFromCatalogs(catalogs: RawCatalogAPIData[]): ProductTemplateAPIData[] {\n return catalogs\n .flatMap((c) => (c.templates ?? []).flatMap((s) => s.templates))\n .map((p) => formatProductData(p));\n}\n\nfunction flattenProductsFromSubcatalogs(subcatalogs: RawSubcatalogAPIData[]) {\n return subcatalogs.flatMap((s) => s.templates).map(formatProductData);\n}\n\nfunction formatProductData(product: RawProductTemplateAPIData): ProductTemplateAPIData {\n let customOptions = null;\n\n if (product.custom_options && typeof product.custom_options === 'string') {\n try {\n customOptions = JSON.parse(product.custom_options);\n } catch (error) {\n reporter.addBreadcrumb({\n level: 'info',\n message: 'Failed to parse this custom option JSON',\n data: { json: product.custom_options },\n });\n\n reporter.captureException(error);\n }\n }\n\n return { ...product, ...product.product, custom_options: customOptions };\n}\n\nfunction isCustomSizeProduct(p: ProductTemplateAPIData): p is CustomProductTemplateAPIData {\n if (!p.custom_options) return false;\n\n const ex = ['related'];\n return Object.keys(p.custom_options).filter((k) => ex.indexOf(k) === -1).length > 0;\n}\n\n/**\n * Calculates a product's base width and height\n */\nfunction calculateProductSize(\n product: ProductTemplateAPIData,\n { height, width, rotation }: { height?: number; width?: number; rotation?: number },\n ignoreRotation?: boolean\n) {\n if (isCustomSizeProduct(product)) {\n const w = width || 0;\n const h = height || 0;\n return {\n ...buildCombinedCustomSize(w, h, product.custom_options as CustomSizeProductCustomOptions),\n };\n }\n\n const { print_size_x, print_size_y } = product;\n const printX = parseFloat(print_size_x);\n const printY = parseFloat(print_size_y);\n\n if (ignoreRotation) {\n return {\n width: printX,\n height: printY,\n };\n }\n\n return {\n width: !rotation || rotation === 0 ? printX : printY,\n height: !rotation || rotation === 0 ? printY : printX,\n };\n}\n\nfunction findDefaultTemplateId<T extends BaseAPIData>(arr: T[]) {\n const found = arr.find((c) => !!c.default) || arr.find((c) => !c.read_only);\n\n return found ? { id: found.id, item: found } : {};\n}\n\nfunction getProductFilters(product: ProductTemplateAPIData | RawProductTemplateAPIData) {\n return product.filter_group ? product.filter_group.trim().split(',') : [];\n}\n\nfunction getProductIdFromDimensions(\n width: string | number,\n height: string | number,\n products: ProductTemplateAPIData[]\n) {\n const w = typeof width === 'string' ? parseFloat(width) : width;\n const h = typeof height === 'string' ? parseFloat(height) : height;\n\n // get standard sizes\n const std = getStandardSizes(products);\n const standardMatch = std.find((s) => s.w === w && s.h === h);\n return standardMatch ? standardMatch.id : null;\n}\n\nfunction getStandardSizes(products: ProductTemplateAPIData[]) {\n return products\n .filter((p) => !p.custom_options)\n .map((s) => {\n const { id, name } = s;\n const [w, h] = name.split('x').map((v) => parseFloat(v));\n return { id, w, h };\n });\n}\n\nfunction productIsMultiNode(product: ProductTemplateAPIData) {\n return product.nodes.filter((n) => n.node_type === 1).length > 1;\n}\n\nfunction canRotateProduct(product: ProductTemplateAPIData) {\n const widthNum = parseFloat(product.print_size_x);\n const heightNum = parseFloat(product.print_size_y);\n const { orientation } = orientationAndRatioPercentage(widthNum, heightNum);\n\n return (\n product.rotation_allowed &&\n orientation !== 'square' &&\n !isCustomSizeProduct(product) &&\n !productIsMultiNode(product)\n );\n}\n\n// Extracts & calculates the bleed, frame, and wrap sizes for a whole product\nfunction getBleedFrameWrapOptions(customOptions: ProductTemplateAPIData['custom_options']) {\n let { bleed, frame, wrap } = customOptions ?? { bleed: 0, frame: 0, wrap: 0 };\n\n // multiply by 2 to account for both sides\n bleed = (bleed && realNumber(bleed) && bleed * 2) || 0;\n frame = (frame && realNumber(frame) && frame * 2) || 0;\n wrap = (wrap && realNumber(wrap) && wrap * 2) || 0;\n\n return { bleed, frame, wrap };\n}\n\n// Calculates a custom size product's width and height with it's custom options\nfunction buildCombinedCustomSize(\n width: number,\n height: number,\n customOptions: ProductCustomOptionsAPIData\n) {\n const { bleed, frame, wrap } = getBleedFrameWrapOptions(customOptions);\n\n return {\n height: height + bleed + frame + wrap,\n width: width + bleed + frame + wrap,\n };\n}\n\n/** Check if this is a valid custom size */\nfunction validateCustomSize(\n width: number,\n height: number,\n options: CustomSizeProductCustomOptions\n) {\n const { shortmin, shortmax, longmin, longmax } = options;\n const { orientation } = orientationAndRatioPercentage(width, height);\n\n switch (orientation) {\n case 'square':\n return width >= shortmin && width <= shortmax && height >= shortmin && height <= shortmax;\n case 'landscape':\n return width >= longmin && width <= longmax && height >= shortmin && height <= shortmax;\n case 'portrait':\n return width >= shortmin && width <= shortmax && height >= longmin && height <= longmax;\n }\n}\n\n/**\n * Print sizes are not really reflective of a product's understood dimensions, and typically the bounds\n * of the image node are the closest representation of what the user will think is the product's dimension\n */\nfunction getProductRealDimension(product: ProductTemplateAPIData): Dimension {\n const xywh = product.nodes.find((n) => n.node_type === 1)?.bounds.split(',');\n\n if (isCustomSizeProduct(product) || !xywh) {\n return {\n height: parseInt(product.print_size_y),\n width: parseInt(product.print_size_x),\n };\n }\n\n const [, , w, h] = xywh;\n\n return {\n height: parseInt(h),\n width: parseInt(w),\n };\n}\n\nexport default {\n flattenProductsFromCatalogs,\n flattenProductsFromSubcatalogs,\n formatProductData,\n calculateProductSize,\n isCustomSizeProduct,\n productIsMultiNode,\n canRotateProduct,\n getProductRealDimension,\n validateCustomSize,\n getProductFilters,\n findDefaultTemplateId,\n buildCombinedCustomSize,\n getBleedFrameWrapOptions,\n getProductIdFromDimensions,\n};\n", "import { partialRight, round } from 'lodash';\nimport type { Dimension, Orientation } from 'types/common_types';\n\ntype OrientationAndRatio = {\n orientation: Orientation;\n ratioPercentage: number;\n};\n\nexport type FeetInchesPair = [feet: number, inches: number];\n\n// How large is the wall preview image when rendered on the background\nexport function calculateWallPreviewImageSize(\n screenDimensions: Dimension,\n imageDimensions: Dimension\n) {\n if (\n !screenDimensions.height ||\n !screenDimensions.width ||\n !imageDimensions.height ||\n !imageDimensions.width\n )\n return { height: 0, width: 0 };\n\n const sar = screenDimensions.width / screenDimensions.height;\n const iar = imageDimensions.width / imageDimensions.height;\n\n // If screen is wider than the image, constrain the image by the height of the screen\n const constraint: keyof Dimension = sar > iar ? 'height' : 'width';\n const other: keyof Dimension = constraint === 'width' ? 'height' : 'width';\n\n // If we're constraining by the height (because screen is wider), we use the image's original aspect ratio\n // to determine the image's width\n // If we're contstraining by width, we need to use the inverse to determine the image's height\n const ratioAdjustment = sar > iar ? iar : 1 / iar;\n\n return {\n [constraint]: screenDimensions[constraint],\n [other]: screenDimensions[constraint] * ratioAdjustment,\n } as Dimension;\n}\n\nexport function orientationAndRatioPercentage(width: number, height: number) {\n let orientation: Orientation;\n let ratioPercentage: number;\n\n const { nom, dom } = aspectRatio(width, height);\n\n if (nom > dom) {\n orientation = 'landscape';\n ratioPercentage = dom / nom; // small first to produce a %\n } else if (nom === dom) {\n orientation = 'square';\n ratioPercentage = dom / nom; // doesn't matter which first\n } else {\n orientation = 'portrait';\n ratioPercentage = nom / dom; // small first to produce a %\n }\n\n return { orientation, ratioPercentage } as OrientationAndRatio;\n}\n\nexport const roundToHalf = partialRight(roundvalue, 0.5);\nexport const roundToQuarter = partialRight(roundvalue, 0.25);\n\n// TODO: should probably add a precision arg to this as well\nexport function roundvalue(value: number, increment: number | string) {\n let rounded = value;\n const remainder = rounded % 1;\n\n const incrementFloat = typeof increment === 'string' ? parseFloat(increment) : increment;\n\n if (remainder) {\n const base = Math.floor(value);\n let fraction = incrementFloat;\n while (fraction % 1 && fraction < remainder) {\n fraction += incrementFloat;\n }\n const ceil = fraction;\n const floor = fraction - incrementFloat;\n const addition = ceil - remainder > remainder - floor ? floor : ceil;\n rounded = base + addition;\n }\n\n return rounded;\n}\n\nexport function inchesToFeetInches(inches: number): FeetInchesPair {\n let ft = Math.floor(inches / 12);\n let inch = round(inches % 12);\n\n // round 12 inches up to an even foot\n if (inch === 12) {\n inch = 0;\n ft += 1;\n }\n\n return [ft, inch];\n}\n\nexport function realNumber(n: number) {\n return !Number.isNaN(n) && Number.isFinite(n);\n}\n\nfunction gcd(a: number, b: number): number {\n if (!b) {\n return a;\n }\n return gcd(b, a % b);\n}\n\nfunction aspectRatio(w: number, h: number) {\n const r = gcd(w, h);\n\n return {\n nom: w / r,\n dom: h / r,\n };\n}\n\n/** Find the inverse of a percent-cropped dimension -- crop must not be zero */\nexport function invertCroppedDimension(dimension: number, crop: number) {\n if (crop === 0) return 0;\n\n return dimension * (1 / crop);\n}\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport slice from './products.slice';\nimport productsAdapter from './products.adapter';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst defaultSelectors = productsAdapter.getSelectors();\n\nexport const selectAppliedProductFilter = (state: LocalState) => state.appliedFilter;\n\nexport const selectAllProductIdsBySlug = createSelector(\n [defaultSelectors.selectAll],\n (allProducts) =>\n allProducts.reduce((acc: Record<string, number>, product) => {\n acc[product.slug] = product.id;\n return acc;\n }, {})\n);\n\nexport const selectProductNode = (state: LocalState, id: number, uid: string) =>\n state.entities[id]?.nodes.find((n) => n.uid === uid);\n\nexport default {\n ...productsAdapter.getSelectors(localState),\n bySlug: compose(selectAllProductIdsBySlug, localState),\n appliedFilter: compose(selectAppliedProductFilter, localState),\n findNode: (state: GlobalState, id: number, uid: string) =>\n selectProductNode(localState(state), id, uid),\n};\n", "import { byId } from 'utils/common';\nimport { notNull } from 'utils/type_guards';\n\nimport type { Dictionary } from '@reduxjs/toolkit';\nimport type { OptionGroupAPIData } from 'domains/option_groups';\nimport type { NodeAPIData, ProductTemplateAPIData } from 'types/catalog_types';\nimport type { OverrideNode } from 'types/node_types';\nimport type { CanvasOptionConfiguration } from './canvases.types';\n\nfunction buildCanvasProductNodes(productsById: Dictionary<ProductTemplateAPIData>, id?: number) {\n if (!id) return [];\n\n const product = productsById[id];\n\n if (!product) return [];\n\n return [...product.nodes].sort((a, b) => a.sort_order - b.sort_order);\n}\n\nfunction buildCanvasOverrideNodes(\n optionGroupsById: Dictionary<OptionGroupAPIData>,\n optionConfig?: CanvasOptionConfiguration\n) {\n return Object.entries(optionConfig || [])\n .map(([ogId, oId]) => optionGroupsById[ogId]?.options.find(byId(oId)))\n .flatMap((o) => o?.nodes.map(formatAsOverrideNode))\n .filter(notNull);\n}\n\n// Removes props from option node data that we don't want to overwrite on the product node data\nfunction formatAsOverrideNode(node: NodeAPIData) {\n const updated: Record<string, string | number | boolean> = {};\n\n Object.entries(node).forEach((pair) => {\n const key = pair[0] as keyof NodeAPIData;\n const value = pair[1] as NodeAPIData[typeof key];\n\n const exclude =\n key === 'sort_order' || // sorting always lives on product node data\n key === 'id' || // Don't overwrite the product id\n value === null ||\n value === 'null' || // remove nulls\n (value === '' && key === 'node_image'); // remove empty strings if they aren't the node_image\n\n if (!exclude) {\n updated[key] = value;\n }\n });\n\n return { ...updated, uid: node.uid } as OverrideNode;\n}\n\nexport default {\n buildCanvasProductNodes,\n buildCanvasOverrideNodes,\n formatAsOverrideNode,\n};\n", "import { realNumber } from 'utils/math_util';\n\nimport productsModule from 'domains/products';\n\nimport type { ProductTemplateAPIData } from 'types/catalog_types';\n\nexport function calculateBoundDimension(\n bound: string,\n nodeType: 'image' | 'mask',\n product: ProductTemplateAPIData,\n customSize: { height?: number; width?: number }\n) {\n let w;\n let h;\n\n // The bounds of a node always correspond to the natural/unrotated dimensions of a product\n const { height, width } = productsModule.utils.calculateProductSize(product, customSize, true);\n\n switch (nodeType) {\n case 'image':\n // Remove frame size from image nodes\n // Custom frame/wrap will be 0 on non-custom products\n const { frame, wrap } = productsModule.utils.getBleedFrameWrapOptions(product.custom_options);\n\n w = width - frame;\n h = height - frame;\n\n // Remove the wrap size from image nodes on bordered canvas products\n if (product.custom_options?.isBordered) {\n w -= wrap;\n h -= wrap;\n }\n break;\n case 'mask':\n w = width;\n h = height;\n break;\n default:\n throw new Error('getCalculatedBound needs a nodeType');\n }\n\n return calculateBoundsExpression(bound, w, h);\n}\n\nexport function calculateBoundsExpression(\n bound: string,\n productWidth: number,\n productHeight: number\n) {\n let newBound = parseFloat(bound);\n\n const stringMath = {\n '+': function (x: number, y: number) {\n return x + y;\n },\n '-': function (x: number, y: number) {\n return x - y;\n },\n };\n\n if (!realNumber(newBound)) {\n const expressionRegx = /(\\[\\w+\\])/;\n const expression = expressionRegx.exec(bound);\n let size;\n let boundExpression;\n\n if (expression) {\n switch (expression[0]) {\n case '[width]':\n boundExpression = bound.split('[width]');\n size = productWidth;\n break;\n case '[height]':\n boundExpression = bound.split('[height]');\n size = productHeight;\n break;\n case '[width_center]':\n boundExpression = bound.split('[width_center]');\n size = productWidth / 2;\n break;\n case '[height_center]':\n boundExpression = bound.split('[height_center]');\n size = productHeight / 2;\n break;\n default:\n // If bound wasn't a number or a defined bound expression, return 0 for it\n return 0;\n }\n\n // get math operator\n const operator = boundExpression[1].slice(0, 1);\n if (operator) {\n // get size offset\n const sizeOffset = parseFloat(boundExpression[1].split(operator)[1]);\n\n if (!realNumber(sizeOffset)) return 0;\n\n // apply math\n newBound = stringMath[operator as '+' | '-'](size, sizeOffset);\n } else {\n newBound = size;\n }\n } else {\n return 0;\n }\n }\n\n return newBound;\n}\n", "import type { OptionGroupAPIData } from 'domains/option_groups';\nimport type { CustomProductTemplateAPIData, ProductTemplateAPIData } from 'types/catalog_types';\nimport type { Dictionary, Dimension, LoadingStatus, OptionalPair, Point } from 'types/common_types';\n\nexport type CanvasesSliceInitialState = {\n active: string | null;\n activeLock: boolean;\n arrangementPosition: Point;\n nextCanvasPosition: number;\n status: LoadingStatus;\n /**\n * undefined: Not on custom size\n * 0 - currently pending both product & option success or both error\n * 1 - one is successful, pending or error on other\n * 2 - both successful\n */\n priceFetchSuccessCount?: 0 | 1 | 2;\n};\n\nexport type CanvasConfiguration = {\n id: string;\n catalog?: number;\n subcatalog?: number;\n product?: number;\n options?: CanvasOptionConfiguration;\n height?: number;\n width?: number;\n cartProductId?: number;\n text_nodes_json?: string;\n customPrice?: string;\n customOptionPrices?: Record<string, string>;\n rotation: number;\n userRotated: boolean;\n /** 8 character Hex value */\n borderColor?: string;\n position: Point;\n};\n\nexport type CanvasOptionConfiguration = Dictionary<number>;\n\nexport type ConfigChange = Pick<CanvasConfiguration, 'catalog' | 'subcatalog' | 'product'>;\n\nexport type CanvasOptionChangePayload = {\n options: OptionalPair<number, number>[];\n /** Replace entire option set */\n replace?: boolean;\n};\n\nexport type CanvasMovementPayload = {\n id?: string;\n movementX: number;\n movementY: number;\n leftLimit?: number;\n rightLimit?: number;\n bottomLimit?: number;\n topLimit?: number;\n};\n\nexport type NextSizePayload = {\n product: ProductTemplateAPIData;\n printX: number;\n printY: number;\n width: number;\n height: number;\n rotate: boolean;\n};\n\nexport type CustomSizePayload = {\n height?: number;\n width?: number;\n};\n\nexport type CustomSizePricePayload = {\n size: Dimension;\n product: CustomProductTemplateAPIData;\n};\n\nexport type CustomSizeOptionPayload = {\n size: Dimension;\n optionGroups: OptionGroupAPIData[];\n configuredOptions: CanvasOptionConfiguration;\n};\n\nexport type PriceToolSizePayload = {\n product: number;\n height: number;\n width: number;\n};\n", "import selectors from './navigation.selectors';\nimport slice from './navigation.slice';\nimport services from './navigation.services';\n\nexport * from './navigation.types';\nexport type NavigateThunk = typeof services.navigateTo;\n\nconst module = {\n actions: { ...slice.actions, ...services },\n selectors,\n};\n\nexport { default as slice } from './navigation.slice';\nexport default module;\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport slice from './navigation.slice';\n\nimport activeEditor from 'domains/active_editor';\nimport catalogs from 'domains/catalogs';\nimport products from 'domains/products';\nimport subcatalogs from 'domains/subcatalogs';\n\nimport { HEIGHT_PARAM, WIDTH_PARAM } from 'utils/globals';\nimport { serializeOptionQueryParam } from 'utils/option_util';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectShowCatalogSelector = (state: LocalState) => state.routes.catalogSelector;\nconst selectShowCart = (state: LocalState) => state.routes.cart;\nconst selectShowEditor = (state: LocalState) => state.routes.editor;\nconst selectShowPriceTool = (state: LocalState) => state.routes.priceTool;\nconst selectShowProjects = (state: LocalState) => state.routes.projects;\nconst selectWasEditorPopstate = (state: LocalState) => state.wasEditorPopstate;\nconst selectPathHistory = (state: LocalState) => state.configuredPathHistory;\n\nconst selectCurrentRoute = (state: LocalState) => {\n const active = Object.entries(state.routes).find(([, value]) => !!value);\n return active ? active[0] : null;\n};\n\nconst selectCanvasConfigPath = createSelector(\n [\n activeEditor.selectors.canvas,\n catalogs.selectors.selectEntities,\n subcatalogs.selectors.selectEntities,\n products.selectors.selectEntities,\n ],\n (activeCanvas, catalogsById, subcatalogsById, productsById) => {\n if (\n activeCanvas &&\n !activeCanvas.cartProductId &&\n activeCanvas.catalog &&\n activeCanvas.subcatalog &&\n activeCanvas.product\n ) {\n const { catalog: c, subcatalog: s, product: p } = activeCanvas;\n\n const catalog = catalogsById[c];\n const subcatalog = subcatalogsById[s];\n const product = productsById[p];\n\n return catalog && subcatalog && product\n ? `${catalog.slug}/${subcatalog.slug}/${product.slug}`\n : '';\n }\n\n return '';\n }\n);\n\n// Using dashes and underscores since they are not escaped in the url\n// Each pair as optionGroupId_optionId\nconst selectCanvasOptionsQueryParam = createSelector(\n [activeEditor.selectors.canvas, activeEditor.selectors.optionConfig],\n (activeCanvas, activeOptions) => {\n if (activeCanvas && activeCanvas.cartProductId) return '';\n\n return serializeOptionQueryParam(activeOptions);\n }\n);\n\nconst selectCustomSizeQueryParam = createSelector(\n [activeEditor.selectors.canvas, products.selectors.selectEntities],\n (activeCanvas, productsById) => {\n if (!activeCanvas) return '';\n\n const { product: productId, height, width } = activeCanvas;\n if (!productId || !height || !width) return '';\n\n const product = productsById[productId];\n if (!product) return '';\n\n const isCustom = products.utils.isCustomSizeProduct(product);\n if (!isCustom) return '';\n\n return `${HEIGHT_PARAM}=${height}&${WIDTH_PARAM}=${width}`;\n }\n);\n\nexport default {\n showCatalogSelector: compose(selectShowCatalogSelector, localState),\n showCart: compose(selectShowCart, localState),\n showEditor: compose(selectShowEditor, localState),\n showPriceTool: compose(selectShowPriceTool, localState),\n showProjects: compose(selectShowProjects, localState),\n wasEditorPopstate: compose(selectWasEditorPopstate, localState),\n history: compose(selectPathHistory, localState),\n current: compose(selectCurrentRoute, localState),\n // Globalized\n canvasConfigPath: selectCanvasConfigPath,\n optionsQueryParam: selectCanvasOptionsQueryParam,\n customSizeQueryParam: selectCustomSizeQueryParam,\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport {\n NavigationRoutes,\n NavigationRoute,\n NavigationSliceInitialState,\n InitializeNavigationPayload,\n} from './navigation.types';\n\nconst initialState: NavigationSliceInitialState = {\n routes: {\n catalogSelector: false,\n cart: false,\n editor: false,\n priceTool: false,\n projects: false,\n },\n wasEditorPopstate: false,\n configuredPathHistory: [],\n initialRoute: 'catalogSelector',\n};\n\nconst navigation = createSlice({\n name: 'navigation',\n initialState,\n reducers: {\n initializeNavigation(state, { payload }: PayloadAction<InitializeNavigationPayload>) {\n const { priceTool, catalogSelector, cart, projects } = payload;\n\n const routes: NavigationRoutes = {\n catalogSelector: !!catalogSelector,\n cart: !!cart,\n projects: !!projects,\n priceTool: !!priceTool,\n editor: !priceTool && !catalogSelector && !cart && !projects,\n };\n\n // Gotta do this cast since Object.entries types the keys as strings\n const routeEntries = Object.entries(routes) as [NavigationRoute, boolean][];\n\n // We can be sure of a found value here & cast as such since one of the routes has to be true\n const initialRoute = routeEntries.find(([, value]) => !!value) as [NavigationRoute, boolean];\n\n return { ...state, routes, initialRoute: initialRoute[0] };\n },\n updateCurrentRoute(state, { payload }: PayloadAction<NavigationRoute>) {\n const update = { ...state.routes };\n const routes = Object.keys(update) as NavigationRoute[];\n\n routes.forEach((r) => {\n update[r] = false;\n });\n\n update[payload] = true;\n\n return { ...state, routes: update };\n },\n setWasEditorPopstate(state, { payload }: PayloadAction<boolean>) {\n return { ...state, wasEditorPopstate: payload };\n },\n addConfiguredPathHistory(state, { payload }: PayloadAction<string>) {\n const update = [...state.configuredPathHistory, payload];\n return { ...state, configuredPathHistory: update };\n },\n },\n});\n\nexport default navigation;\n", "import selectors from './active_editor.selectors';\n\nconst module = {\n selectors,\n};\n\nexport default module;\n", "import { createSelector } from '@reduxjs/toolkit';\n\nimport FilterData from 'components/features/Shuffler/data/filters';\n\nimport { notNull, validCustomSize } from 'utils/type_guards';\nimport { byId } from 'utils/common';\n\nimport canvases from 'domains/canvases';\nimport catalogs from 'domains/catalogs';\nimport subcatalogs from 'domains/subcatalogs';\nimport products from 'domains/products';\nimport optionGroups from 'domains/option_groups';\nimport svgs from 'domains/svgs';\n\nimport type { RootState } from 'store/wos_store';\nimport type { DisabledOption } from 'domains/option_groups';\nimport type { NodeAPIData } from 'types/catalog_types';\n\nconst selectActiveCanvasId = (state: RootState) => state.canvases.active;\n\nconst selectActiveCanvas = (state: RootState) => {\n const id = selectActiveCanvasId(state);\n if (!id) return;\n\n return canvases.selectors.selectById(state, id);\n};\n\n/*\n * Active Catalog Data\n */\nconst selectActiveCatalogId = (state: RootState) => selectActiveCanvas(state)?.catalog;\n\nconst selectActiveCatalog = (state: RootState) => {\n const id = selectActiveCatalogId(state);\n if (!id) return;\n\n return catalogs.selectors.selectById(state, id);\n};\n\n// if the activeCatalog is in FilterData then catalog has Advanced Filters (shuffler)\nconst selectHasAdvancedFilters = createSelector(\n [selectActiveCatalog],\n (activeCatalog) => !!activeCatalog && Object.keys(FilterData).indexOf(activeCatalog.name) > -1\n);\n\nconst selectSubcatalogsForActiveCatalog = (state: RootState) => {\n const catalogId = selectActiveCatalogId(state);\n if (!catalogId) return [];\n\n return subcatalogs.selectors.allByCatalogId(state)[catalogId] || [];\n};\n\n/*\n * Active Subcatalog Data\n */\nconst selectActiveSubcatalogId = (state: RootState) => selectActiveCanvas(state)?.subcatalog;\n\nconst selectActiveSubcatalog = (state: RootState) => {\n const id = selectActiveSubcatalogId(state);\n if (!id) return;\n\n return subcatalogs.selectors.selectById(state, id);\n};\n\nconst selectActiveSubcatalogFilters = (state: RootState) => {\n const subcatalog = selectActiveSubcatalog(state);\n if (!subcatalog) return [];\n\n return subcatalog.filter_default.trim().split(',');\n};\n\nconst selectProductsForActiveSubcatalog = createSelector(\n [selectActiveSubcatalog, products.selectors.selectEntities],\n (subcatalog, allProductsById) => {\n if (!subcatalog) return [];\n return subcatalog.templates.map((id) => allProductsById[id]).filter(notNull);\n }\n);\n\nconst selectFilteredProductsForActiveSubcatalog = createSelector(\n [products.selectors.appliedFilter, selectProductsForActiveSubcatalog],\n (filter, productsBySubcatalog) => {\n if (!filter || filter === '') {\n return productsBySubcatalog;\n }\n\n return productsBySubcatalog.filter((product) => {\n if (filter === 'All') {\n return !products.utils.isCustomSizeProduct(product);\n }\n\n return products.utils.getProductFilters(product).indexOf(filter) > -1;\n });\n }\n);\n\n/*\n * Active Product Data\n */\nconst selectActiveProductId = (state: RootState) => selectActiveCanvas(state)?.product;\n\nconst selectActiveProduct = (state: RootState) => {\n const id = selectActiveProductId(state);\n if (!id) return;\n\n return products.selectors.selectById(state, id);\n};\n\nconst selectActiveProductIsCustomProduct = createSelector(\n [selectActiveProduct],\n (activeProduct) => activeProduct && products.utils.isCustomSizeProduct(activeProduct)\n);\n\nconst selectOptionGroupsForActiveProduct = createSelector(\n [\n selectActiveProductId,\n optionGroups.selectors.selectEntities,\n optionGroups.selectors.allByTemplateId,\n ],\n (activeProductId, optionGroupsById, optionGroupsByTemplateId) => {\n if (!activeProductId) return [];\n\n const optionGroupIds = optionGroupsByTemplateId[activeProductId] || [];\n return optionGroupIds.map((id) => optionGroupsById[id]).filter(notNull);\n }\n);\n\n/*\n * Active Options Data\n */\nconst selectActiveCanvasOptionConfig = createSelector([selectActiveCanvas], (activeCanvas) => {\n return activeCanvas && activeCanvas.options ? activeCanvas.options : {};\n});\n\nconst selectActiveOptionGroupFilters = createSelector(\n [selectOptionGroupsForActiveProduct],\n (activeOptionGroups) => {\n return activeOptionGroups.reduce((acc: Record<number, string[]>, optionGroup) => {\n const filters = optionGroup.filter_default.trim().split(',');\n if (optionGroup.filter_default.length > 0) {\n acc[optionGroup.id] = filters;\n }\n\n return acc;\n }, {});\n }\n);\n\nconst selectDisabledOptions = createSelector(\n [optionGroups.selectors.selectEntities, selectActiveCanvasOptionConfig],\n (allOptionGroupsById, activeOptions) => {\n const allDisableIds = Object.entries(activeOptions).reduce(\n (acc: Record<string, DisabledOption>, [optionGroupId, optionId]) => {\n const optionGroup = allOptionGroupsById[optionGroupId];\n if (!optionGroup) return acc;\n\n const option = optionGroup.options.find(byId(optionId));\n if (!option || option.disable_ids.length === 0) return acc;\n\n option.disable_ids.split(',').forEach((disableId) => {\n acc[disableId] = { id: disableId, by: option.name_long };\n });\n\n return acc;\n },\n {}\n );\n\n return allDisableIds;\n }\n);\n\nconst selectActiveOptions = createSelector(\n [optionGroups.selectors.selectEntities, selectActiveCanvasOptionConfig],\n (allOptionGroupsById, activeOptionConfig) => {\n if (activeOptionConfig) {\n return Object.entries(activeOptionConfig)\n .map(([optionGroupId, optionId]) =>\n allOptionGroupsById[optionGroupId]?.options.find(byId(optionId))\n )\n .filter(notNull);\n }\n\n return [];\n }\n);\n\n/*\n * Active Custom Size Data\n */\nconst selectActiveCanvasCustomSizes = createSelector([selectActiveCanvas], (activeCanvas) => {\n if (!activeCanvas || !validCustomSize(activeCanvas)) return { height: 0, width: 0 };\n\n return { height: activeCanvas.height, width: activeCanvas.width };\n});\n\nconst selectActiveCanvasCustomPrice = createSelector([selectActiveCanvas], (activeCanvas) =>\n activeCanvas && activeCanvas.customPrice ? activeCanvas.customPrice : '0'\n);\n\n/**\n * Active Nodes\n */\nconst selectActiveProductNodes = createSelector([selectActiveProduct], (activeProduct) => {\n return activeProduct ? activeProduct.nodes : [];\n});\n\nconst selectActiveOptionNodes = createSelector([selectActiveOptions], (activeOptions) => {\n return activeOptions.length > 0 ? activeOptions.flatMap((option) => option.nodes) : [];\n});\n\nconst selectAllActiveNodes = createSelector(\n [selectActiveProductNodes, selectActiveOptionNodes],\n (productNodes, optionNodes) => {\n return [...productNodes, ...optionNodes];\n }\n);\n\n/*\n * Other Active Canvas Data\n */\n\nconst selectHasBorderColor = createSelector(\n [selectActiveProductNodes, selectActiveOptionNodes, svgs.selectors.selectEntities],\n (productNodes, optionNodes, svgsById) => {\n const merge: Record<string, boolean> = {};\n\n const checkHasBorderColor = (node: NodeAPIData) => {\n if (!node.svg_id) return false;\n\n const svg = svgsById[node.svg_id];\n merge[node.uid] = !!svg && !!svg.hasBorderColor;\n };\n\n // Check product nodes first, then override with option nodes\n productNodes.forEach(checkHasBorderColor);\n optionNodes.forEach(checkHasBorderColor);\n\n return Object.values(merge).some((hasColor) => hasColor);\n }\n);\n\nconst selectActiveCanvasBorderColor = createSelector(\n [selectActiveCanvas],\n (activeCanvas) => activeCanvas?.borderColor\n);\n\nconst selectEditingCartProductId = createSelector([selectActiveCanvas], (activeCanvas) =>\n activeCanvas ? activeCanvas.cartProductId : null\n);\n\nconst selectIsCartProduct = (state: RootState) => {\n const canvas = selectActiveCanvas(state);\n\n return !!canvas && !!canvas.cartProductId;\n};\n\nconst selectCanvasHasRotatedNodes = createSelector([selectActiveProduct], (product) => {\n if (product && product.nodes && product.nodes.length > 0) {\n const imageAndTextNodes = product.nodes.filter((n) => n.node_type === 1 || n.node_type === 3);\n\n return imageAndTextNodes.some((n) => !!n.rotation);\n }\n\n return false;\n});\n\nexport const selectCanRotateActiveCanvas = (state: RootState) => {\n const product = selectActiveProduct(state);\n if (!product) return false;\n\n return products.utils.canRotateProduct(product);\n};\n\nexport default {\n canvasId: selectActiveCanvasId,\n canvas: selectActiveCanvas,\n catalogId: selectActiveCatalogId,\n catalog: selectActiveCatalog,\n hasAdvancedFilters: selectHasAdvancedFilters,\n subcatalogs: selectSubcatalogsForActiveCatalog,\n subcatalogId: selectActiveSubcatalogId,\n subcatalog: selectActiveSubcatalog,\n subcatalogFilters: selectActiveSubcatalogFilters,\n products: selectProductsForActiveSubcatalog,\n filteredProducts: selectFilteredProductsForActiveSubcatalog,\n productId: selectActiveProductId,\n product: selectActiveProduct,\n isCustomProduct: selectActiveProductIsCustomProduct,\n optionGroups: selectOptionGroupsForActiveProduct,\n optionGroupFilters: selectActiveOptionGroupFilters,\n optionConfig: selectActiveCanvasOptionConfig,\n disabledOptions: selectDisabledOptions,\n selectedOptions: selectActiveOptions,\n customSize: selectActiveCanvasCustomSizes,\n customPrice: selectActiveCanvasCustomPrice,\n nodes: selectAllActiveNodes,\n hasBorderColor: selectHasBorderColor,\n borderColor: selectActiveCanvasBorderColor,\n cartProductId: selectEditingCartProductId,\n isCartProduct: selectIsCartProduct,\n hasRotatedNodes: selectCanvasHasRotatedNodes,\n canRotate: selectCanRotateActiveCanvas,\n};\n", "import CardsFilters from './filters_cards';\n\nconst FilterData = { ...CardsFilters };\n\nexport default FilterData;\n", "import { ShufflerFilterData } from './filters.types';\n\nconst CardsFilters: { [key: string]: ShufflerFilterData } = {\n Cards: {\n searchText: 'Search by Product Name or Occasion',\n searchParams: ['name', 'uid'],\n searchFilters: ['collections'],\n detailFilters: ['size', 'format', 'orientation'],\n detailContrast: false,\n optionGroups: ['Foil Color', 'Paper Surface', 'Envelopes', 'Corners'],\n featured: [\n 'P1218_57Ph',\n 'P1218_57P',\n 'P1218_57F_H',\n 'P1218_57F_V',\n 'P1218_55TF',\n 'P1218_455Ph',\n 'P1218_455Pv',\n 'P1218_455F_H',\n 'P1218_455F_V',\n 'P1218_455A4v',\n ],\n filters: [\n {\n groupname: 'category',\n groupLabel: 'Category',\n groupfilters: [\n {\n name: 'Press Printed Cards',\n description: 'Create the perfect Classic Press Printed card.',\n products: [],\n },\n {\n name: 'Foil Cards',\n description: 'Create the perfect Foil Stamped card.',\n products: [],\n },\n {\n name: 'Creative Edge Cards',\n description: 'Create the perfect Creative Edge Die-Cut card.',\n products: [],\n },\n {\n name: 'Photo Paper Cards',\n description: '',\n products: [],\n },\n ],\n },\n {\n groupname: 'collections',\n groupLabel: 'Collections',\n groupfilters: [\n {\n name: 'Graduation',\n description: 'Graduation announcements for School Seniors and students.',\n default: true,\n products: [\n 'WOS_P57P_540h',\n 'WOS_P57P_540v',\n 'WOS_P57P_542h',\n 'WOS_P57P_542v',\n 'WOS_P57P_544h',\n 'WOS_P57P_544v',\n 'WOS_P57P_546h',\n 'WOS_P57P_546v',\n 'WOS_P57P_548h',\n 'WOS_P57P_548v',\n 'WOS_P57P_550h',\n 'WOS_P57P_550v',\n 'WOS_P57P_552h',\n 'WOS_P57P_552v',\n 'WOS_P57P_554h',\n 'WOS_P57P_554v',\n 'WOS_P57P_556h',\n 'WOS_P57P_556v',\n 'WOS_P57P_560h',\n 'WOS_P57P_560v',\n 'WOS_P57P_562h',\n 'WOS_P57P_562v',\n 'WOS_P57P_564h',\n 'WOS_P57P_564v',\n 'WOS_P57P_566h',\n 'WOS_P57P_566v',\n 'WOS_P57P_568h_22',\n 'WOS_P57P_568v_22',\n 'WOS_P57F_540h',\n 'WOS_P57F_540v',\n 'WOS_P57F_542h',\n 'WOS_P57F_542v',\n 'WOS_P57F_544h',\n 'WOS_P57F_544v',\n 'WOS_P57F_546h',\n 'WOS_P57F_546v',\n 'WOS_P57F_548h',\n 'WOS_P57F_548v',\n 'WOS_P57F_550h',\n 'WOS_P57F_550v',\n 'WOS_P57F_552h',\n 'WOS_P57F_552v',\n 'WOS_P57F_554h',\n 'WOS_P57F_554v',\n 'WOS_P57F_556h',\n 'WOS_P57F_556v',\n 'WOS_P57F_560h',\n 'WOS_P57F_560v',\n 'WOS_P57F_562h',\n 'WOS_P57F_562v',\n 'WOS_P57F_564h',\n 'WOS_P57F_564v',\n 'WOS_P57F_566h',\n 'WOS_P57F_566v',\n 'WOS_P57F_568h',\n 'WOS_P57F_568v',\n ],\n },\n {\n name: 'Happy Holidays',\n description: 'Say Happy Holidays with these festive cards',\n products: [\n 'WOS_P57P_F192h',\n 'WOS_P57P_F192v',\n 'WOS_P455P_F192h',\n 'WOS_P455P_F192v',\n 'WOS_P57F_F192h',\n 'WOS_P57F_F192v',\n 'WOS_P455F_F192h',\n 'WOS_P455F_F192v',\n 'WOS_P55T_F192',\n 'WOS_P455A_F192',\n 'WOS_P57P_F238h',\n 'WOS_P57P_F238v',\n 'WOS_P455P_F238h',\n 'WOS_P455P_F238v',\n 'WOS_P57F_F238h',\n 'WOS_P57F_F238v',\n 'WOS_P455F_F238h',\n 'WOS_P455F_F238v',\n 'WOS_P55T_F238',\n 'WOS_P455A_F238',\n 'WOS_P57P_F246h',\n 'WOS_P57P_F246v',\n 'WOS_P455P_F246h',\n 'WOS_P455P_F246v',\n 'WOS_P57F_F246h',\n 'WOS_P57F_F246v',\n 'WOS_P455F_F246h',\n 'WOS_P455F_F246v',\n 'WOS_P55T_F246',\n 'WOS_P455A_F246',\n 'P57P_250h',\n 'P57P_250v',\n 'P455P_250h',\n 'P455P_250v',\n 'P57F_250h',\n 'P57F_250v',\n 'P455F_250h',\n 'P455F_250v',\n 'P55T_250',\n 'P455A_250',\n 'P57P_252h',\n 'P57P_252v',\n 'P455P_252h',\n 'P455P_252v',\n 'P57F_252h',\n 'P57F_252v',\n 'P455F_252h',\n 'P455F_252v',\n 'P55T_252',\n 'P455A_252',\n 'P57P_256h',\n 'P57P_256v',\n 'P455P_256h',\n 'P455P_256v',\n 'P57F_256h',\n 'P57F_256v',\n 'P455F_256h',\n 'P455F_256v',\n 'P55T_256',\n 'P455A_256',\n 'P57P_258h',\n 'P57P_258v',\n 'P455P_258h',\n 'P455P_258v',\n 'P57F_258h',\n 'P57F_258v',\n 'P455F_258h',\n 'P455F_258v',\n 'P55T_258',\n 'P455A_258',\n 'P57P_260h',\n 'P57P_260v',\n 'P455P_260h',\n 'P455P_260v',\n 'P57F_260h',\n 'P57F_260v',\n 'P455F_260h',\n 'P455F_260v',\n 'P55T_260',\n 'P455A_260',\n 'P57P_272h',\n 'P57P_272v',\n 'P455P_272h',\n 'P455P_272v',\n 'P57F_272h',\n 'P57F_272v',\n 'P455F_272h',\n 'P455F_272v',\n 'P55T_272',\n 'P455A_272',\n 'WOS_P455P_F192h',\n 'WOS_P455P_F192v',\n 'WOS_P455P_F238h',\n 'WOS_P455P_F238v',\n 'WOS_P57P_576ah',\n 'WOS_P57P_576bh',\n 'WOS_P57P_578ah',\n 'WOS_P57P_580eh',\n 'WOS_P57P_582ah',\n 'WOS_P57P_588bh',\n 'WOS_P57P_592bv',\n 'WOS_P57P_594bv',\n 'WOS_P57P_598ah',\n 'WOS_P57P_604dh',\n 'WOS_P57P_612cv',\n 'WOS_P57P_614cv',\n 'WOS_P57P_616dv',\n 'WOS_P57F_578ahh',\n 'WOS_P57F_578-2ahh',\n 'WOS_P57F_580ehh',\n 'WOS_P57F_582-ahh',\n 'WOS_P57F_582-2ahh',\n 'WOS_P57F_588bhh',\n 'WOS_P57F_588-2bhh',\n 'WOS_P57F_592bv',\n 'WOS_P57F_592-2bv',\n 'WOS_P57F_594bv',\n 'WOS_P57F_594-2bv',\n 'WOS_P57F_598ahh',\n 'WOS_P57F_598-2ahh',\n 'WOS_P57F_604dhh',\n 'WOS_P57F_604-2dhh',\n 'WOS_P57F_612cv',\n 'WOS_P57F_612-2cv',\n 'WOS_P57F_614cv',\n 'WOS_P57F_614-2cv',\n 'WOS_P57F_616dv',\n 'WOS_P57F_616-2dv',\n ],\n },\n {\n name: 'Seasons Greetings',\n description: 'Send your best for the season!',\n products: [\n 'WOS_P57P_F178h',\n 'WOS_P57P_F178v',\n 'WOS_P57P_F186h',\n 'WOS_P57P_F186v',\n 'WOS_P57P_F190h',\n 'WOS_P57P_F190v',\n 'WOS_P455P_F178h',\n 'WOS_P455P_F178v',\n 'WOS_P455P_F186h',\n 'WOS_P455P_F186v',\n 'WOS_P455P_F190h',\n 'WOS_P455P_F190v',\n 'WOS_P57F_F178h',\n 'WOS_P57F_F178v',\n 'WOS_P57F_F186h',\n 'WOS_P57F_F186v',\n 'WOS_P57F_F190h',\n 'WOS_P57F_F190v',\n 'WOS_P57F_F242h',\n 'WOS_P57F_F242v',\n 'WOS_P455F_F178h',\n 'WOS_P455F_F178v',\n 'WOS_P455F_F186h',\n 'WOS_P455F_F186v',\n 'WOS_P455F_F190h',\n 'WOS_P455F_F190v',\n 'WOS_P455F_F242h',\n 'WOS_P455F_F242v',\n 'WOS_P55T_F178',\n 'WOS_P55T_F186',\n 'WOS_P55T_F190',\n 'WOS_P55T_F242',\n 'WOS_P455A_F178',\n 'WOS_P455A_F186',\n 'WOS_P455A_F190',\n 'WOS_P455A_F242',\n 'P57P_FL003Ph',\n 'P57P_FL005Ph',\n 'P57P_FL015Pv',\n 'WOS_PCE57P_F224h',\n 'WOS_PCE57P_F224v',\n 'WOS_PCE48P_F202h',\n 'WOS_PCE48P_F202v',\n 'WOS_PCE57P_F300v',\n 'WOS_PCE57P_F308v',\n 'WOS_PCE57P_F310v',\n 'PCE57P_332v',\n 'Y5BB21h-48',\n 'Y5BB21v-48',\n ],\n },\n {\n name: 'Christmas',\n description: 'Wish them the Merriest Christmas',\n products: [\n 'WOS_P57P_F204h',\n 'WOS_P57P_F204v',\n 'WOS_P57P_F236h',\n 'WOS_P57P_F236v',\n 'P57P_264h',\n 'P57P_264v',\n 'P57P_268h',\n 'P57P_268v',\n 'P57P_270h',\n 'P57P_270v',\n 'WOS_P455P_F204h',\n 'WOS_P455P_F204v',\n 'WOS_P455P_F236h',\n 'WOS_P455P_F236v',\n 'P455P_264h',\n 'P455P_264v',\n 'P455P_268h',\n 'P455P_268v',\n 'P455P_270h',\n 'P455P_270v',\n 'WOS_P57F_F204h',\n 'WOS_P57F_F204v',\n 'WOS_P57F_F236h',\n 'WOS_P57F_F236v',\n 'P57F_270h',\n 'P57F_270v',\n 'P455F_270h',\n 'P455F_270v',\n 'P55T_270',\n 'P455A_270',\n 'WOS_P455F_F204h',\n 'WOS_P455F_F204v',\n 'WOS_P55T_F204',\n 'WOS_P455A_F204',\n 'WOS_P455F_F236h',\n 'WOS_P455F_F236v',\n 'WOS_P55T_F236',\n 'WOS_P455A_F236',\n 'P57F_264h',\n 'P57F_264v',\n 'P455F_264h',\n 'P455F_264v',\n 'P55T_264',\n 'P455A_264',\n 'P57F_268h',\n 'P57F_268v',\n 'P455F_268h',\n 'P455F_268v',\n 'P55T_268',\n 'P455A_268',\n 'P57P_FL001Ph',\n 'P57P_FL002Ph',\n 'P57P_FL012Pv',\n 'P57P_FL013Pv',\n 'PCE57P_340v',\n 'PCE57P_340h',\n 'WOS_PCE55P_F208',\n 'PCE48P_342h',\n 'PCE48P_342v',\n 'WOS_PCE57P_F302v',\n 'WOS_PCE57P_F304v',\n 'WOS_PCE57P_F312v',\n 'WOS_PCE57P_F318v',\n 'PCE57P_330v',\n 'Y10BA603h-57',\n 'Y10BA603v-57',\n 'Y10BA800h-57',\n 'Y10BA800v-57',\n 'Y13BA455h-57',\n 'Y13BA455v-57',\n 'Y13BA1295h-57',\n 'Y13BA1295v-57',\n 'Y17BR009h-57',\n 'Y17BR009v-57',\n 'Y3BB01h-48',\n 'Y3BB01v-48',\n 'Y4BB22h-48',\n 'Y4BB22v-48',\n 'Y5BA125h-48',\n 'Y5BA125v-48',\n 'Y10BP116h-48',\n 'Y10BP116v-48',\n 'Y17BR003h-48',\n 'Y17BR003v-48',\n 'WOS_P57P_576bh',\n 'WOS_P57P_578bh',\n 'WOS_P57P_580bh',\n 'WOS_P57P_588ah',\n 'WOS_P57P_588dh',\n 'WOS_P57P_590cv',\n 'WOS_P57P_592av',\n 'WOS_P57P_592cv',\n 'WOS_P57P_594av',\n 'WOS_P57P_598bh',\n 'WOS_P57P_598dh',\n 'WOS_P57P_600h',\n 'WOS_P57P_604ah',\n 'WOS_P57P_604bh',\n 'WOS_P57P_610av',\n 'WOS_P57P_612av',\n 'WOS_P57P_614av',\n 'WOS_P57P_616av',\n 'WOS_P57F_576bhh',\n 'WOS_P57F_576-2bhh',\n 'WOS_P57F_578bhh',\n 'WOS_P57F_578-2bhh',\n 'WOS_P57F_580bhh',\n 'WOS_P57F_580-2bhh',\n 'WOS_P57F_588ahh',\n 'WOS_P57F_588-2ahh',\n 'WOS_P57F_588dhh',\n 'WOS_P57F_588-2dhh',\n 'WOS_P57F_590cv',\n 'WOS_P57F_590-2cv',\n 'WOS_P57F_592av',\n 'WOS_P57F_592-2av',\n 'WOS_P57F_592cv',\n 'WOS_P57F_592-2cv',\n 'WOS_P57F_594av',\n 'WOS_P57F_594-2av',\n 'WOS_P57F_598bhh',\n 'WOS_P57F_598-2bhh',\n 'WOS_P57F_598dhh',\n 'WOS_P57F_598-2dhh',\n 'WOS_P57F_600hh',\n 'WOS_P57F_600-2hh',\n 'WOS_P57F_604ahh',\n 'WOS_P57F_604-2ahh',\n 'WOS_P57F_604bhh',\n 'WOS_P57F_604-2bhh',\n 'WOS_P57F_608hh',\n 'WOS_P57F_608-2hh',\n 'WOS_P57F_610av',\n 'WOS_P57F_610-2av',\n 'WOS_P57F_612av',\n 'WOS_P57F_612-2av',\n 'WOS_P57F_614av',\n 'WOS_P57F_614-2av',\n 'WOS_P57F_616av',\n 'WOS_P57F_616-2av',\n ],\n },\n {\n name: 'Joy',\n description: 'Share some joy!',\n products: [\n 'WOS_P57P_F154h',\n 'WOS_P57P_F154v',\n 'WOS_P455P_F154h',\n 'WOS_P455P_F154v',\n 'WOS_P57F_F154h',\n 'WOS_P57F_F154v',\n 'WOS_P455F_F154h',\n 'WOS_P455F_F154v',\n 'WOS_P55T_F154',\n 'WOS_P455A_F154',\n 'P57P_254h',\n 'P57P_254v',\n 'P455P_254h',\n 'P455P_254v',\n 'P57F_254h',\n 'P57F_254v',\n 'P455F_254h',\n 'P455F_254v',\n 'P55T_254',\n 'P455A_254',\n 'P57P_258h',\n 'P57P_258v',\n 'P455P_258h',\n 'P455P_258v',\n 'P57F_258h',\n 'P57F_258v',\n 'P455F_258h',\n 'P455F_258v',\n 'P55T_258',\n 'P455A_258',\n 'P57P_262h',\n 'P57P_262v',\n 'P455P_262h',\n 'P455P_262v',\n 'P57F_262h',\n 'P57F_262v',\n 'P455F_262h',\n 'P455F_262v',\n 'P55T_262',\n 'P455A_262',\n 'P57P_266h',\n 'P57P_266v',\n 'P455P_266h',\n 'P455P_266v',\n 'P57F_266h',\n 'P57F_266v',\n 'P455F_266h',\n 'P455F_266v',\n 'P55T_266',\n 'P455A_266',\n 'P57P_274h',\n 'P57P_274v',\n 'P455P_274h',\n 'P455P_274v',\n 'P57F_274h',\n 'P57F_274v',\n 'P455F_274h',\n 'P455F_274v',\n 'P55T_274',\n 'P455A_274',\n 'P57P_FL007Ph',\n 'P57P_FL009Ph',\n 'P57P_FL017Pv',\n 'WOS_PCE57P_F220h',\n 'WOS_PCE48P_F200h',\n 'WOS_PCE57P_F220h',\n 'PCE57P_332v',\n 'Y10BP102h-57',\n 'Y10BP102v-57',\n 'Y10BA196h-48',\n 'Y10BA196v-48',\n 'P57P_FL007Ph',\n 'P57P_FL017Pv',\n 'WOS_P57P_572ch',\n 'WOS_P57P_574ah',\n 'WOS_P57P_576ch',\n 'WOS_P57P_596cv',\n 'WOS_P57P_592dv',\n 'WOS_P57P_598ah',\n 'WOS_P57P_598bh',\n 'WOS_P57P_598ch',\n 'WOS_P57P_598dh',\n 'WOS_P57P_610cv',\n 'WOS_P57P_610dv',\n 'WOS_P57F_572chh',\n 'WOS_P57F_572-2chh',\n 'WOS_P57F_574ahh',\n 'WOS_P57F_574-2ahh',\n 'WOS_P57F_576chh',\n 'WOS_P57F_576-2chh',\n 'WOS_P57F_596cv',\n 'WOS_P57F_596-2cv',\n 'WOS_P57F_598ahh',\n 'WOS_P57F_598-2ahh',\n 'WOS_P57F_598bhh',\n 'WOS_P57F_598-2bhh',\n 'WOS_P57F_598chh',\n 'WOS_P57F_598-2chh',\n 'WOS_P57F_598dhh',\n 'WOS_P57F_598-2dhh',\n 'WOS_P57F_610cv',\n 'WOS_P57F_610-2cv',\n ],\n },\n {\n name: 'Merry',\n description: 'Tis the season to be merry!',\n products: [\n 'WOS_P57P_F236h',\n 'WOS_P57P_F236v',\n 'WOS_P455P_F236h',\n 'WOS_P455P_F236v',\n 'WOS_P57F_F236h',\n 'WOS_P57F_F236v',\n 'WOS_P455F_F236h',\n 'WOS_P455F_F236v',\n 'WOS_P55T_F236',\n 'WOS_P455A_F236',\n 'WOS_P57P_F242h',\n 'WOS_P57P_F242v',\n 'WOS_P455P_F242h',\n 'WOS_P455P_F242v',\n 'WOS_P57F_F242h',\n 'WOS_P57F_F242v',\n 'WOS_P455F_F242h',\n 'WOS_P455F_F242v',\n 'WOS_P55T_F242',\n 'WOS_P455A_F242',\n 'WOS_P57P_F246h',\n 'WOS_P57P_F246v',\n 'WOS_P455P_F246h',\n 'WOS_P455P_F246v',\n 'WOS_P57F_F246h',\n 'WOS_P57F_F246v',\n 'WOS_P455F_F246h',\n 'WOS_P455F_F246v',\n 'WOS_P55T_F246',\n 'WOS_P455A_F246',\n 'P57P_264h',\n 'P57P_264v',\n 'P455P_264h',\n 'P455P_264v',\n 'P57F_264h',\n 'P57F_264v',\n 'P455F_264h',\n 'P455F_264v',\n 'P55T_264',\n 'P455A_264',\n 'P57P_268h',\n 'P57P_268v',\n 'P455P_268h',\n 'P455P_268v',\n 'P57F_268h',\n 'P57F_268v',\n 'P455F_268h',\n 'P455F_268v',\n 'P55T_268',\n 'P455A_268',\n 'P57P_270h',\n 'P57P_270v',\n 'P455P_270h',\n 'P455P_270v',\n 'P57F_270h',\n 'P57F_270v',\n 'P455F_270h',\n 'P455F_270v',\n 'P55T_270',\n 'P455A_270',\n 'P57P_FL001Ph',\n 'P57P_FL002Ph',\n 'P57P_FL012Pv',\n 'P57P_FL013Pv',\n 'WOS_PCE57P_F274h',\n 'WOS_PCE57P_F274v',\n 'PCE57P_340v',\n 'PCE57P_340h',\n 'WOS_PCE55P_F208',\n 'WOS_PCE48P_F206h',\n 'WOS_PCE48P_F206v',\n 'PCE48P_342h',\n 'PCE48P_342v',\n 'WOS_PCE57P_F300v',\n 'WOS_PCE57P_F302v',\n 'WOS_PCE57P_F304v',\n 'WOS_PCE57P_F312v',\n 'WOS_PCE57P_F316v',\n 'WOS_PCE57P_F318v',\n 'WOS_PCE57P_F324v',\n 'PCE57P_330v',\n 'Y10BA603h-57',\n 'Y10BA603v-57',\n 'Y10BA800h-57',\n 'Y10BA800v-57',\n 'Y13BA455h-57',\n 'Y13BA455v-57',\n 'Y13BA1295h-57',\n 'Y13BA1295v-57',\n 'Y17BR001h-57',\n 'Y17BR001v-57',\n 'Y17BR009h-57',\n 'Y17BR009v-57',\n 'Y3BB01h-48',\n 'Y3BB01v-48',\n 'Y4BB22h-48',\n 'Y4BB22v-48',\n 'Y17BR003h-48',\n 'Y17BR003v-48',\n 'Y17BR005h-48',\n 'Y17BR005v-48',\n 'WOS_P57P_',\n 'WOS_P57P_572ah',\n 'WOS_P57P_574dh',\n 'WOS_P57P_576bh',\n 'WOS_P57P_578bh',\n 'WOS_P57P_582dh',\n 'WOS_P57P_586h',\n 'WOS_P57P_588ah',\n 'WOS_P57P_590av',\n 'WOS_P57P_592av',\n 'WOS_P57P_594av',\n 'WOS_P57P_596av',\n 'WOS_P57P_598dh',\n 'WOS_P57P_600h',\n 'WOS_P57P_604ah',\n 'WOS_P57P_610av',\n 'WOS_P57P_612av',\n 'WOS_P57P_614av',\n 'WOS_P57P_616av',\n 'WOS_P57F_572ahh',\n 'WOS_P57F_572-2ahh',\n 'WOS_P57F_574dhh',\n 'WOS_P57F_574-2dhh',\n 'WOS_P57F_576bhh',\n 'WOS_P57F_576-2bhh',\n 'WOS_P57F_578bhh',\n 'WOS_P57F_578-2bhh',\n 'WOS_P57F_582dhh',\n 'WOS_P57F_582-2dhh',\n 'WOS_P57F_586hh',\n 'WOS_P57F_586-2hh',\n 'WOS_P57F_588ahh',\n 'WOS_P57F_588-2ahh',\n 'WOS_P57F_590av',\n 'WOS_P57F_590-2av',\n 'WOS_P57F_592av',\n 'WOS_P57F_592-2av',\n 'WOS_P57F_594av',\n 'WOS_P57F_594-2av',\n 'WOS_P57F_596av',\n 'WOS_P57F_596-2av',\n 'WOS_P57F_598dhh',\n 'WOS_P57F_598-2dhh',\n 'WOS_P57F_600hh',\n 'WOS_P57F_600-2hh',\n 'WOS_P57F_604ahh',\n 'WOS_P57F_604-2ahh',\n 'WOS_P57F_608hh',\n 'WOS_P57F_608-2hh',\n 'WOS_P57F_610av',\n 'WOS_P57F_610-2av',\n 'WOS_P57F_612av',\n 'WOS_P57F_612-2av',\n 'WOS_P57F_614av',\n 'WOS_P57F_614-2av',\n 'WOS_P57F_616av',\n 'WOS_P57F_616-2av',\n ],\n },\n {\n name: 'Sending Wishes',\n description: 'Send your very best wishes',\n products: [\n 'P57P_FL008Ph',\n 'WOS_P57P_F154h',\n 'WOS_P57P_F154v',\n 'WOS_P455P_F154h',\n 'WOS_P455P_F154v',\n 'WOS_P57F_F154h',\n 'WOS_P57F_F154v',\n 'WOS_P455F_F154h',\n 'WOS_P455F_F154v',\n 'WOS_P55T_F154',\n 'WOS_P455A_F154',\n 'WOS_PCE57P_F308v',\n 'Y10BA839h-48',\n 'Y10BA839v-48',\n 'Y13BA1424h-48',\n 'Y13BA1424v-48',\n 'WOS_P57P_580bh',\n 'WOS_P57P_608h',\n 'WOS_P57P_610bv',\n 'WOS_P57F_580bhh',\n 'WOS_P57F_580-2bhh',\n 'WOS_P57F_590cv',\n 'WOS_P57F_590-2cv',\n 'WOS_P57F_608hh',\n 'WOS_P57F_608-2hh',\n 'WOS_P57F_610bv',\n 'WOS_P57F_610-2bv',\n ],\n },\n {\n name: 'Religious',\n description: 'Share your faith with holiday cards.',\n products: [\n 'P57P_274h',\n 'P57P_274v',\n 'P455P_274h',\n 'P455P_274v',\n 'P57F_274h',\n 'P57F_274v',\n 'P455F_274h',\n 'P455F_274v',\n 'P55T_274',\n 'P455A_274',\n 'P57P_FL009Ph',\n 'WOS_P57P_572dh',\n 'WOS_P57P_574ch',\n 'WOS_P57P_580ah',\n 'WOS_P57P_580dh',\n 'WOS_P57P_582bh',\n 'WOS_P57P_588dh',\n 'WOS_P57P_590dv',\n 'WOS_P57P_592cv',\n 'WOS_P57P_596bv',\n 'WOS_P57P_598bh',\n 'WOS_P57P_604bh',\n 'WOS_P57P_604ch',\n 'WOS_P57P_612bv',\n 'WOS_P57P_612ev',\n 'WOS_P57P_614bv',\n 'WOS_P57P_614ev',\n 'WOS_P57P_616cv',\n 'WOS_P57P_616ev',\n 'WOS_P57F_572dhh',\n 'WOS_P57F_572-2dhh',\n 'WOS_P57F_574chh',\n 'WOS_P57F_574-2chh',\n 'WOS_P57F_580ahh',\n 'WOS_P57F_580-2ahh',\n 'WOS_P57F_580dhh',\n 'WOS_P57F_580-2dhh',\n 'WOS_P57F_582bhh',\n 'WOS_P57F_582-2bhh',\n 'WOS_P57F_588dhh',\n 'WOS_P57F_588-2dhh',\n 'WOS_P57F_590dv',\n 'WOS_P57F_590-2dv',\n 'WOS_P57F_592cv',\n 'WOS_P57F_592-2cv',\n 'WOS_P57F_596bv',\n 'WOS_P57F_596-2bv',\n 'WOS_P57F_598bhh',\n 'WOS_P57F_598-2bhh',\n 'WOS_P57F_604bhh',\n 'WOS_P57F_604-2bhh',\n 'WOS_P57F_604chh',\n 'WOS_P57F_604-2chh',\n 'WOS_P57F_612bv',\n 'WOS_P57F_612-2bv',\n 'WOS_P57F_612ev',\n 'WOS_P57F_612-2ev',\n 'WOS_P57F_614bv',\n 'WOS_P57F_614-2bv',\n 'WOS_P57F_614ev',\n 'WOS_P57F_614-2ev',\n 'WOS_P57F_616cv',\n 'WOS_P57F_616-2cv',\n 'WOS_P57F_616ev',\n 'WOS_P57F_616-2ev',\n ],\n },\n {\n name: 'Peace',\n description: 'Send a message of peace',\n products: [\n 'Y12BP164h-48',\n 'Y12BP164v-48',\n 'Y10BA196h-48',\n 'Y10BA196v-48',\n 'PCE57P_332v',\n 'P455P_266h',\n 'P455P_266v',\n 'P57F_266h',\n 'P57F_266v',\n 'P455F_266h',\n 'P455F_266v',\n 'P55T_266',\n 'P455A_266',\n 'WOS_P57P_610cv',\n 'WOS_P57F_610cv',\n 'WOS_P57F_610-2cv',\n ],\n },\n {\n name: 'New Year',\n description: 'Ring in the New Year in the finest style!',\n products: [\n 'P57P_FL002Ph',\n 'P57P_FL006Ph',\n 'P57P_FL008Ph',\n 'P57P_FL013Pv',\n 'WOS_PCE55P_F208',\n 'WOS_PCE57P_F304v',\n 'Y10BA800h-57',\n 'Y10BA800v-57',\n 'Y13BA1325h-48',\n 'WOS_P57P_578ch',\n 'WOS_P57P_580ch',\n 'WOS_P57P_582ch',\n 'WOS_P57P_588ch',\n 'WOS_P57P_590bv',\n 'WOS_P57P_592dv',\n 'WOS_P57P_594cv',\n 'WOS_P57P_596dv',\n 'WOS_P57P_598ch',\n 'WOS_P57P_604eh',\n 'WOS_P57P_610dv',\n 'WOS_P57P_612dv',\n 'WOS_P57P_614dv',\n 'WOS_P57P_616bv',\n 'WOS_P57F_572bhh',\n 'WOS_P57F_572-2bhh',\n 'WOS_P57F_574bh',\n 'WOS_P57F_574-2bhh',\n 'WOS_P57F_578chh',\n 'WOS_P57F_578-2chh',\n 'WOS_P57F_580chh',\n 'WOS_P57F_580-2chh',\n 'WOS_P57F_582chh',\n 'WOS_P57F_582-2chh',\n 'WOS_P57F_588chh',\n 'WOS_P57F_588-2chh',\n 'WOS_P57F_590bv',\n 'WOS_P57F_590-2bv',\n 'WOS_P57F_592dv',\n 'WOS_P57F_592-2dv',\n 'WOS_P57F_594cv',\n 'WOS_P57F_594-2cv',\n 'WOS_P57F_596dv',\n 'WOS_P57F_596-2dv',\n 'WOS_P57F_598chh',\n 'WOS_P57F_598-2chh',\n 'WOS_P57F_610dv',\n 'WOS_P57F_610-2dv',\n 'WOS_P57F_612dv',\n 'WOS_P57F_612-2dv',\n 'WOS_P57F_614dv',\n 'WOS_P57F_614-2dv',\n 'WOS_P57F_616bv',\n 'WOS_P57F_616-2bv',\n ],\n },\n {\n name: 'Other Holiday',\n description: \"It's the best time of the year!\",\n products: [\n 'WOS_P57P_F202h',\n 'WOS_P57P_F202v',\n 'WOS_P455P_F202h',\n 'WOS_P455P_F202v',\n 'WOS_P57F_F202h',\n 'WOS_P57F_F202v',\n 'WOS_P455F_F202h',\n 'WOS_P455F_F202v',\n 'WOS_P55T_F202',\n 'WOS_P455A_F202',\n 'WOS_P57P_F204h',\n 'WOS_P57P_F204v',\n 'WOS_P455P_F204h',\n 'WOS_P455P_F204v',\n 'WOS_P57F_F204h',\n 'WOS_P57F_F204v',\n 'WOS_P455F_F204h',\n 'WOS_P455F_F204v',\n 'WOS_P55T_F204',\n 'WOS_P455A_F204',\n 'P57P_FL008Ph',\n 'P57P_FL018Pv',\n 'P57P_FL019Pv',\n 'P57P_FL020Pv',\n 'P57P_FL021Pv',\n 'WOS_PCE55P_F212',\n 'WOS_PCE57P_F220h',\n 'Y11BP158h-57',\n 'Y11BP158v-57',\n 'Y13BA1424h-48',\n 'Y13BA1424v-48',\n 'Y10BA839h-48',\n 'Y10BA839v-48',\n 'Y10BP116h-48',\n 'Y10BP116v-48',\n 'WOS_P57P_582ch',\n 'WOS_P57P_602h',\n 'WOS_P57F_582chh',\n 'WOS_P57F_582-2chh',\n 'WOS_P57F_602hh',\n 'WOS_P57F_602-2hh',\n ],\n },\n {\n name: 'Thank You',\n description: 'Give thanks!',\n default: true,\n products: ['P57P_FL010Ph', 'P57P_FL022Pv'],\n },\n {\n name: 'Custom Message',\n description: 'Cards for every occassion',\n products: [\n 'WOS_P57P_F228h',\n 'WOS_P57P_F228v',\n 'WOS_P455P_F228h',\n 'WOS_P455P_F228v',\n 'WOS_P57F_F228h',\n 'WOS_P57F_F228v',\n 'WOS_P455F_F228h',\n 'WOS_P455F_F228v',\n 'WOS_P55T_F228',\n 'WOS_P455A_F228',\n 'WOS_P57P_F212h',\n 'WOS_P57P_F212v',\n 'WOS_P455P_F212h',\n 'WOS_P455P_F212v',\n 'WOS_P57F_F212h',\n 'WOS_P57F_F212v',\n 'WOS_P455F_F212h',\n 'WOS_P455F_F212v',\n 'WOS_P55T_F212',\n 'WOS_P455A_F212',\n 'WOS_PCE55P_F212',\n 'P57P_FL008Ph',\n 'P57P_FL009Ph',\n 'P57P_FL011Ph',\n 'P57P_FL023Pv',\n 'P57P_FL024Pv',\n 'WOS_PCE57P_F216h',\n 'WOS_PCE57P_F216v',\n 'PCE1218_55P',\n 'WOS_PCE55P_F125',\n 'WOS_PCE48P_F180h',\n 'WOS_PCE48P_F180v',\n 'WOS_PCE48P_F185h',\n 'WOS_PCE48P_F185v',\n 'WOS_PCE48P_FGAL226h',\n 'PCE1218_57F_H',\n 'PCE1218_57F_V',\n 'WOS_PCE57F_F262h',\n 'WOS_PCE57F_F262v',\n 'WOS_PCE57F_F270h',\n 'WOS_PCE57F_F270v',\n 'Y9BP100h-57',\n 'Y9BP100v-57',\n 'YSLOPBh-57',\n 'YSLOPBv-57',\n 'Y7BP111h-48',\n 'Y7BP111v-48',\n 'Y7BP118h-48',\n 'Y7BP118v-48',\n 'Y7BP124h-48',\n 'Y7BP124v-48',\n 'Y7BP125h-48',\n 'Y7BP125v-48',\n 'Y8BP102h-48',\n 'Y8BP102v-48',\n 'Y8BP112h-48',\n 'Y8BP112v-48',\n 'WOS_P57P_570h',\n 'WOS_P57P_584h',\n 'WOS_P57F_570h',\n 'WOS_P57F_570-2hh',\n 'WOS_P57F_584hh',\n 'WOS_P57F_584-2hh',\n ],\n },\n {\n name: 'Your Own Design',\n description: 'Blank card products for adding your own design.',\n default: true,\n products: [\n 'P1218_57Ph',\n 'P1218_57P',\n 'P1218_57F_H',\n 'P1218_57F_V',\n 'P1218_55TF',\n 'P1218_455Ph',\n 'P1218_455Pv',\n 'P1218_455A4v',\n 'P1218_455F_H',\n 'P1218_455F_V',\n ],\n },\n ],\n },\n {\n groupname: 'size',\n groupLabel: 'Size',\n groupfilters: [\n {\n name: '5x7',\n description: 'See only 5x7 cards',\n products: [\n 'WOS_P57P_540h',\n 'WOS_P57P_540v',\n 'WOS_P57P_542h',\n 'WOS_P57P_542v',\n 'WOS_P57P_544h',\n 'WOS_P57P_544v',\n 'WOS_P57P_546h',\n 'WOS_P57P_546v',\n 'WOS_P57P_548h',\n 'WOS_P57P_548v',\n 'WOS_P57P_550h',\n 'WOS_P57P_550v',\n 'WOS_P57P_552h',\n 'WOS_P57P_552v',\n 'WOS_P57P_554h',\n 'WOS_P57P_554v',\n 'WOS_P57P_556h',\n 'WOS_P57P_556v',\n 'WOS_P57P_560h',\n 'WOS_P57P_560v',\n 'WOS_P57P_562h',\n 'WOS_P57P_562v',\n 'WOS_P57P_564h',\n 'WOS_P57P_564v',\n 'WOS_P57P_566h',\n 'WOS_P57P_566v',\n 'WOS_P57P_568h_22',\n 'WOS_P57P_568v_22',\n 'WOS_P57F_540h',\n 'WOS_P57F_540v',\n 'WOS_P57F_542h',\n 'WOS_P57F_542v',\n 'WOS_P57F_544h',\n 'WOS_P57F_544v',\n 'WOS_P57F_546h',\n 'WOS_P57F_546v',\n 'WOS_P57F_548h',\n 'WOS_P57F_548v',\n 'WOS_P57F_550h',\n 'WOS_P57F_550v',\n 'WOS_P57F_552h',\n 'WOS_P57F_552v',\n 'WOS_P57F_554h',\n 'WOS_P57F_554v',\n 'WOS_P57F_556h',\n 'WOS_P57F_556v',\n 'WOS_P57F_560h',\n 'WOS_P57F_560v',\n 'WOS_P57F_562h',\n 'WOS_P57F_562v',\n 'WOS_P57F_564h',\n 'WOS_P57F_564v',\n 'WOS_P57F_566h',\n 'WOS_P57F_566v',\n 'WOS_P57F_568h',\n 'WOS_P57F_568v',\n 'P1218_57Ph',\n 'P1218_57P',\n 'WOS_P57P_F154h',\n 'WOS_P57P_F154v',\n 'WOS_P57P_F178h',\n 'WOS_P57P_F178v',\n 'WOS_P57P_F186h',\n 'WOS_P57P_F186v',\n 'WOS_P57P_F190h',\n 'WOS_P57P_F190v',\n 'WOS_P57P_F192h',\n 'WOS_P57P_F192v',\n 'WOS_P57P_F202h',\n 'WOS_P57P_F202v',\n 'WOS_P57P_F204h',\n 'WOS_P57P_F204v',\n 'WOS_P57P_F212h',\n 'WOS_P57P_F212v',\n 'WOS_P57P_F228h',\n 'WOS_P57P_F228v',\n 'WOS_P57P_F236h',\n 'WOS_P57P_F236v',\n 'WOS_P57P_F238h',\n 'WOS_P57P_F238v',\n 'WOS_P57P_F242h',\n 'WOS_P57P_F242v',\n 'WOS_P57P_F246h',\n 'WOS_P57P_F246v',\n 'P57P_250h',\n 'P57P_250v',\n 'P57P_252h',\n 'P57P_252v',\n 'P57P_254h',\n 'P57P_254v',\n 'P57P_256h',\n 'P57P_256v',\n 'P57P_258h',\n 'P57P_258v',\n 'P57P_260h',\n 'P57P_260v',\n 'P57P_262h',\n 'P57P_262v',\n 'P57P_264h',\n 'P57P_264v',\n 'P57P_266h',\n 'P57P_266v',\n 'P57P_268h',\n 'P57P_268v',\n 'P57P_270h',\n 'P57P_270v',\n 'P57P_272h',\n 'P57P_272v',\n 'P57P_274h',\n 'P57P_274v',\n 'P1218_57F_H',\n 'P1218_57F_V',\n 'WOS_P57F_F154h',\n 'WOS_P57F_F154v',\n 'WOS_P57F_F178h',\n 'WOS_P57F_F178v',\n 'WOS_P57F_F186h',\n 'WOS_P57F_F186v',\n 'WOS_P57F_F190h',\n 'WOS_P57F_F190v',\n 'WOS_P57F_F192h',\n 'WOS_P57F_F192v',\n 'WOS_P57F_F202h',\n 'WOS_P57F_F202v',\n 'WOS_P57F_F204h',\n 'WOS_P57F_F204v',\n 'WOS_P57F_F212h',\n 'WOS_P57F_F212v',\n 'WOS_P57F_F228h',\n 'WOS_P57F_F228v',\n 'WOS_P57F_F236h',\n 'WOS_P57F_F236v',\n 'WOS_P57F_F238h',\n 'WOS_P57F_F238v',\n 'WOS_P57F_F242h',\n 'WOS_P57F_F242v',\n 'WOS_P57F_F246h',\n 'WOS_P57F_F246v',\n 'P57F_250h',\n 'P57F_250v',\n 'P57F_252h',\n 'P57F_252v',\n 'P57F_254h',\n 'P57F_254v',\n 'P57F_256h',\n 'P57F_256v',\n 'P57F_258h',\n 'P57F_258v',\n 'P57F_260h',\n 'P57F_260v',\n 'P57F_262h',\n 'P57F_262v',\n 'P57F_264h',\n 'P57F_264v',\n 'P57F_266h',\n 'P57F_266v',\n 'P57F_268h',\n 'P57F_268v',\n 'P57F_270h',\n 'P57F_270v',\n 'P57F_272h',\n 'P57F_272v',\n 'P57F_274h',\n 'P57F_274v',\n 'P57P_FL001Ph',\n 'P57P_FL002Ph',\n 'P57P_FL003Ph',\n 'P57P_FL004Ph',\n 'P57P_FL005Ph',\n 'P57P_FL006Ph',\n 'P57P_FL007Ph',\n 'P57P_FL009Ph',\n 'P57P_FL010Ph',\n 'P57P_FL011Ph',\n 'P57P_FL012Pv',\n 'P57P_FL013Pv',\n 'P57P_FL014Pv',\n 'P57P_FL015Pv',\n 'P57P_FL016Pv',\n 'P57P_FL017Pv',\n 'P57P_FL018Pv',\n 'P57P_FL019Pv',\n 'P57P_FL020Pv',\n 'P57P_FL021Pv',\n 'P57P_FL022Pv',\n 'P57P_FL023Pv',\n 'P57P_FL024Pv',\n 'PCE1218_57Ph',\n 'PCE1218_57P',\n 'WOS_PCE57P_F120h',\n 'WOS_PCE57P_F120v',\n 'WOS_PCE57P_F216h',\n 'WOS_PCE57P_F216v',\n 'WOS_PCE57P_F220h',\n 'WOS_PCE57P_F220v',\n 'WOS_PCE57P_F224h',\n 'WOS_PCE57P_F224v',\n 'WOS_PCE57P_F274h',\n 'WOS_PCE57P_F274v',\n 'PCE57P_340v',\n 'PCE57P_340h',\n 'PCE1218_57F_H',\n 'PCE1218_57F_V',\n 'PCE57F_334h',\n 'PCE57F_334v',\n 'WOS_PCE57F_F262h',\n 'WOS_PCE57F_F262v',\n 'WOS_PCE57F_F270h',\n 'WOS_PCE57F_F270v',\n 'PCE1218_57Ph_PopOut-Round',\n 'WOS_PCE57P_F302v',\n 'WOS_PCE57P_F312v',\n 'WOS_PCE57P_F316v',\n 'PCE1218_57Ph_PopOut-Scalloped',\n 'WOS_PCE57P_F300v',\n 'WOS_PCE57P_F304v',\n 'WOS_PCE57P_F308v',\n 'WOS_PCE57P_F324v',\n 'PCE57P_332v',\n 'PCE1218_57Ph_PopOut-Tapered',\n 'WOS_PCE57P_F310v',\n 'WOS_PCE57P_F314v',\n 'WOS_PCE57P_F318v',\n 'PCE57P_330v',\n 'GCARD57',\n 'Y6CD01h',\n 'Y6CD01v',\n 'Y9BP100h-57',\n 'Y9BP100v-57',\n 'Y10BA603h-57',\n 'Y10BA603v-57',\n 'Y10BA800h-57',\n 'Y10BA800v-57',\n 'Y10BP102h-57',\n 'Y10BP102v-57',\n 'Y10BP108h-57',\n 'Y10BP108v-57',\n 'Y11BP158h-57',\n 'Y11BP158v-57',\n 'Y13BA455h-57',\n 'Y13BA455v-57',\n 'Y13BA487h-57',\n 'Y13BA487v-57',\n 'Y13BA488h-57',\n 'Y13BA488v-57',\n 'Y13BA1295h-57',\n 'Y13BA1295v-57',\n 'Y13BA1391h-57',\n 'Y13BA1391v-57',\n 'YSLOPBh-57',\n 'YSLOPBv-57',\n 'Y17BR001h-57',\n 'Y17BR001v-57',\n 'Y17BR009h-57',\n 'Y17BR009v-57',\n 'Y17BR011h-57',\n 'Y17BR011v-57',\n 'WOS_P57P_570h',\n 'WOS_P57P_572ah',\n 'WOS_P57P_572bh',\n 'WOS_P57P_572ch',\n 'WOS_P57P_572dh',\n 'WOS_P57P_574ah',\n 'WOS_P57P_574bh',\n 'WOS_P57P_574ch',\n 'WOS_P57P_574dh',\n 'WOS_P57P_576ah',\n 'WOS_P57P_576bh',\n 'WOS_P57P_576ch',\n 'WOS_P57P_578ah',\n 'WOS_P57P_578bh',\n 'WOS_P57P_578ch',\n 'WOS_P57P_580ah',\n 'WOS_P57P_580bh',\n 'WOS_P57P_580ch',\n 'WOS_P57P_580dh',\n 'WOS_P57P_580eh',\n 'WOS_P57P_582ah',\n 'WOS_P57P_582bh',\n 'WOS_P57P_582ch',\n 'WOS_P57P_582dh',\n 'WOS_P57P_584h',\n 'WOS_P57P_586h',\n 'WOS_P57P_588ah',\n 'WOS_P57P_588bh',\n 'WOS_P57P_588ch',\n 'WOS_P57P_588dh',\n 'WOS_P57P_598ah',\n 'WOS_P57P_598bh',\n 'WOS_P57P_598ch',\n 'WOS_P57P_598dh',\n 'WOS_P57P_600h',\n 'WOS_P57P_602h',\n 'WOS_P57P_604ah',\n 'WOS_P57P_604bh',\n 'WOS_P57P_604ch',\n 'WOS_P57P_604dh',\n 'WOS_P57P_604eh',\n 'WOS_P57P_606h',\n 'WOS_P57P_608h',\n 'WOS_P57P_590av',\n 'WOS_P57P_590bv',\n 'WOS_P57P_590cv',\n 'WOS_P57P_590dv',\n 'WOS_P57P_592av',\n 'WOS_P57P_592bv',\n 'WOS_P57P_592cv',\n 'WOS_P57P_592dv',\n 'WOS_P57P_594av',\n 'WOS_P57P_594bv',\n 'WOS_P57P_594cv',\n 'WOS_P57P_596av',\n 'WOS_P57P_596bv',\n 'WOS_P57P_596cv',\n 'WOS_P57P_596dv',\n 'WOS_P57P_610av',\n 'WOS_P57P_610bv',\n 'WOS_P57P_610cv',\n 'WOS_P57P_610dv',\n 'WOS_P57P_612av',\n 'WOS_P57P_612bv',\n 'WOS_P57P_612cv',\n 'WOS_P57P_612dv',\n 'WOS_P57P_612ev',\n 'WOS_P57P_614av',\n 'WOS_P57P_614bv',\n 'WOS_P57P_614cv',\n 'WOS_P57P_614dv',\n 'WOS_P57P_614ev',\n 'WOS_P57P_616av',\n 'WOS_P57P_616bv',\n 'WOS_P57P_616cv',\n 'WOS_P57P_616dv',\n 'WOS_P57P_616ev',\n 'WOS_P57F_570h',\n 'WOS_P57F_570-2hh',\n 'WOS_P57F_572ahh',\n 'WOS_P57F_572bhh',\n 'WOS_P57F_572chh',\n 'WOS_P57F_572dhh',\n 'WOS_P57F_572-2ahh',\n 'WOS_P57F_572-2bhh',\n 'WOS_P57F_572-2chh',\n 'WOS_P57F_572-2dhh',\n 'WOS_P57F_574ahh',\n 'WOS_P57F_574bh',\n 'WOS_P57F_574chh',\n 'WOS_P57F_574dhh',\n 'WOS_P57F_574-2ahh',\n 'WOS_P57F_574-2bhh',\n 'WOS_P57F_574-2chh',\n 'WOS_P57F_574-2dhh',\n 'WOS_P57F_576ahh',\n 'WOS_P57F_576bhh',\n 'WOS_P57F_576chh',\n 'WOS_P57F_576-2ahh',\n 'WOS_P57F_576-2bhh',\n 'WOS_P57F_576-2chh',\n 'WOS_P57F_578ahh',\n 'WOS_P57F_578bhh',\n 'WOS_P57F_578chh',\n 'WOS_P57F_578-2ahh',\n 'WOS_P57F_578-2bhh',\n 'WOS_P57F_578-2chh',\n 'WOS_P57F_580ahh',\n 'WOS_P57F_580bhh',\n 'WOS_P57F_580chh',\n 'WOS_P57F_580dhh',\n 'WOS_P57F_580ehh',\n 'WOS_P57F_580-2ahh',\n 'WOS_P57F_580-2bhh',\n 'WOS_P57F_580-2chh',\n 'WOS_P57F_580-2dhh',\n 'WOS_P57F_580-2ehh',\n 'WOS_P57F_582ahh',\n 'WOS_P57F_582bhh',\n 'WOS_P57F_582chh',\n 'WOS_P57F_582dhh',\n 'WOS_P57F_582-2ahh',\n 'WOS_P57F_582-2bhh',\n 'WOS_P57F_582-2chh',\n 'WOS_P57F_582-2dhh',\n 'WOS_P57F_584hh',\n 'WOS_P57F_584-2hh',\n 'WOS_P57F_586hh',\n 'WOS_P57F_586-2hh',\n 'WOS_P57F_588ahh',\n 'WOS_P57F_588bhh',\n 'WOS_P57F_588chh',\n 'WOS_P57F_588dhh',\n 'WOS_P57F_588-2ahh',\n 'WOS_P57F_588-2bhh',\n 'WOS_P57F_588-2chh',\n 'WOS_P57F_588-2dhh',\n 'WOS_P57F_590av',\n 'WOS_P57F_590bv',\n 'WOS_P57F_590cv',\n 'WOS_P57F_590dv',\n 'WOS_P57F_590-2av',\n 'WOS_P57F_590-2bv',\n 'WOS_P57F_590-2cv',\n 'WOS_P57F_590-2dv',\n 'WOS_P57F_592av',\n 'WOS_P57F_592bv',\n 'WOS_P57F_592cv',\n 'WOS_P57F_592dv',\n 'WOS_P57F_592-2av',\n 'WOS_P57F_592-2bv',\n 'WOS_P57F_592-2cv',\n 'WOS_P57F_592-2dv',\n 'WOS_P57F_594av',\n 'WOS_P57F_594bv',\n 'WOS_P57F_594cv',\n 'WOS_P57F_594-2av',\n 'WOS_P57F_594-2bv',\n 'WOS_P57F_594-2cv',\n 'WOS_P57F_596av',\n 'WOS_P57F_596bv',\n 'WOS_P57F_596cv',\n 'WOS_P57F_596dv',\n 'WOS_P57F_596-2av',\n 'WOS_P57F_596-2bv',\n 'WOS_P57F_596-2cv',\n 'WOS_P57F_596-2dv',\n 'WOS_P57F_598ahh',\n 'WOS_P57F_598bhh',\n 'WOS_P57F_598chh',\n 'WOS_P57F_598dhh',\n 'WOS_P57F_598-2ahh',\n 'WOS_P57F_598-2bhh',\n 'WOS_P57F_598-2chh',\n 'WOS_P57F_598-2dhh',\n 'WOS_P57F_600hh',\n 'WOS_P57F_600-2hh',\n 'WOS_P57F_602hh',\n 'WOS_P57F_602-2hh',\n 'WOS_P57F_604ahh',\n 'WOS_P57F_604bhh',\n 'WOS_P57F_604chh',\n 'WOS_P57F_604dhh',\n 'WOS_P57F_604-2ahh',\n 'WOS_P57F_604-2bhh',\n 'WOS_P57F_604-2chh',\n 'WOS_P57F_604-2dhh',\n 'WOS_P57F_606hh',\n 'WOS_P57F_606-2hh',\n 'WOS_P57F_608hh',\n 'WOS_P57F_608-2hh',\n 'WOS_P57F_610av',\n 'WOS_P57F_610bv',\n 'WOS_P57F_610cv',\n 'WOS_P57F_610dv',\n 'WOS_P57F_610-2av',\n 'WOS_P57F_610-2bv',\n 'WOS_P57F_610-2cv',\n 'WOS_P57F_610-2dv',\n 'WOS_P57F_612av',\n 'WOS_P57F_612bv',\n 'WOS_P57F_612cv',\n 'WOS_P57F_612dv',\n 'WOS_P57F_612ev',\n 'WOS_P57F_612-2av',\n 'WOS_P57F_612-2bv',\n 'WOS_P57F_612-2cv',\n 'WOS_P57F_612-2dv',\n 'WOS_P57F_612-2ev',\n 'WOS_P57F_614av',\n 'WOS_P57F_614bv',\n 'WOS_P57F_614cv',\n 'WOS_P57F_614dv',\n 'WOS_P57F_614ev',\n 'WOS_P57F_614-2av',\n 'WOS_P57F_614-2bv',\n 'WOS_P57F_614-2cv',\n 'WOS_P57F_614-2dv',\n 'WOS_P57F_614-2ev',\n 'WOS_P57F_616av',\n 'WOS_P57F_616bv',\n 'WOS_P57F_616cv',\n 'WOS_P57F_616dv',\n 'WOS_P57F_616ev',\n 'WOS_P57F_616-2av',\n 'WOS_P57F_616-2bv',\n 'WOS_P57F_616-2cv',\n 'WOS_P57F_616-2dv',\n 'WOS_P57F_616-2ev',\n ],\n },\n {\n name: '5x5',\n description: 'See only 5x5 cards',\n products: [\n 'P1218_55TF',\n 'WOS_P55T_F154',\n 'WOS_P55T_F178',\n 'WOS_P55T_F186',\n 'WOS_P55T_F190',\n 'WOS_P55T_F192',\n 'WOS_P55T_F202',\n 'WOS_P55T_F204',\n 'WOS_P55T_F212',\n 'WOS_P55T_F228',\n 'WOS_P55T_F236',\n 'WOS_P55T_F238',\n 'WOS_P55T_F242',\n 'WOS_P55T_F246',\n 'P55T_250',\n 'P55T_252',\n 'P55T_254',\n 'P55T_256',\n 'P55T_258',\n 'P55T_260',\n 'P55T_262',\n 'P55T_264',\n 'P55T_266',\n 'P55T_268',\n 'P55T_270',\n 'P55T_272',\n 'P55T_274',\n 'PCE1218_55P',\n 'WOS_PCE55P_F125',\n 'WOS_PCE55P_F208',\n 'WOS_PCE55P_F212',\n 'WOS_PCE55P_F214',\n ],\n },\n {\n name: '4x5.5',\n description: 'See only 4x5.5 cards',\n products: [\n 'P1218_455Ph',\n 'P1218_455Pv',\n 'WOS_P455P_F154h',\n 'WOS_P455P_F154v',\n 'WOS_P455P_F178h',\n 'WOS_P455P_F178v',\n 'WOS_P455P_F186h',\n 'WOS_P455P_F186v',\n 'WOS_P455P_F190h',\n 'WOS_P455P_F190v',\n 'WOS_P455P_F192h',\n 'WOS_P455P_F192v',\n 'WOS_P455P_F202h',\n 'WOS_P455P_F202v',\n 'WOS_P455P_F204h',\n 'WOS_P455P_F204v',\n 'WOS_P455P_F212h',\n 'WOS_P455P_F212v',\n 'WOS_P455P_F228h',\n 'WOS_P455P_F228v',\n 'WOS_P455P_F236h',\n 'WOS_P455P_F236v',\n 'WOS_P455P_F238h',\n 'WOS_P455P_F238v',\n 'WOS_P455P_F242h',\n 'WOS_P455P_F242v',\n 'WOS_P455P_F246h',\n 'WOS_P455P_F246v',\n 'P455P_250h',\n 'P455P_250v',\n 'P455P_252h',\n 'P455P_252v',\n 'P455P_254h',\n 'P455P_254v',\n 'P455P_256h',\n 'P455P_256v',\n 'P455P_258h',\n 'P455P_258v',\n 'P455P_260h',\n 'P455P_260v',\n 'P455P_262h',\n 'P455P_262v',\n 'P455P_264h',\n 'P455P_264v',\n 'P455P_266h',\n 'P455P_266v',\n 'P455P_268h',\n 'P455P_268v',\n 'P455P_270h',\n 'P455P_270v',\n 'P455P_272h',\n 'P455P_272v',\n 'P455P_274h',\n 'P455P_274v',\n 'P1218_455A4v',\n 'WOS_P455A_F154',\n 'WOS_P455A_F178',\n 'WOS_P455A_F186',\n 'WOS_P455A_F190',\n 'WOS_P455A_F192',\n 'WOS_P455A_F202',\n 'WOS_P455A_F204',\n 'WOS_P455A_F212',\n 'WOS_P455A_F228',\n 'WOS_P455A_F236',\n 'WOS_P455A_F238',\n 'WOS_P455A_F242',\n 'WOS_P455A_F246',\n 'P455A_250',\n 'P455A_252',\n 'P455A_254',\n 'P455A_256',\n 'P455A_258',\n 'P455A_260',\n 'P455A_262',\n 'P455A_264',\n 'P455A_266',\n 'P455A_268',\n 'P455A_270',\n 'P455A_272',\n 'P455A_274',\n 'P1218_455F_H',\n 'P1218_455F_V',\n 'WOS_P455F_F154h',\n 'WOS_P455F_F154v',\n 'WOS_P455F_F178h',\n 'WOS_P455F_F178v',\n 'WOS_P455F_F186h',\n 'WOS_P455F_F186v',\n 'WOS_P455F_F190h',\n 'WOS_P455F_F190v',\n 'WOS_P455F_F192h',\n 'WOS_P455F_F192v',\n 'WOS_P455F_F202h',\n 'WOS_P455F_F202v',\n 'WOS_P455F_F204h',\n 'WOS_P455F_F204v',\n 'WOS_P455F_F212h',\n 'WOS_P455F_F212v',\n 'WOS_P455F_F228h',\n 'WOS_P455F_F228v',\n 'WOS_P455F_F236h',\n 'WOS_P455F_F236v',\n 'WOS_P455F_F238h',\n 'WOS_P455F_F238v',\n 'WOS_P455F_F242h',\n 'WOS_P455F_F242v',\n 'WOS_P455F_F246h',\n 'WOS_P455F_F246v',\n 'P455F_250h',\n 'P455F_250v',\n 'P455F_252h',\n 'P455F_252v',\n 'P455F_254h',\n 'P455F_254v',\n 'P455F_256h',\n 'P455F_256v',\n 'P455F_258h',\n 'P455F_258v',\n 'P455F_260h',\n 'P455F_260v',\n 'P455F_262h',\n 'P455F_262v',\n 'P455F_264h',\n 'P455F_264v',\n 'P455F_266h',\n 'P455F_266v',\n 'P455F_268h',\n 'P455F_268v',\n 'P455F_270h',\n 'P455F_270v',\n 'P455F_272h',\n 'P455F_272v',\n 'P455F_274h',\n 'P455F_274v',\n ],\n },\n {\n name: '4x8',\n description: 'See only 4x8 cards',\n products: [\n 'PCE1218_48Ph',\n 'PCE1218_48Pv',\n 'WOS_PCE48P_F180h',\n 'WOS_PCE48P_F180v',\n 'WOS_PCE48P_F185h',\n 'WOS_PCE48P_F185v',\n 'WOS_PCE48P_F200h',\n 'WOS_PCE48P_F200v',\n 'WOS_PCE48P_F202h',\n 'WOS_PCE48P_F202v',\n 'WOS_PCE48P_F206h',\n 'WOS_PCE48P_F206v',\n 'WOS_PCE48P_FGAL226h',\n 'PCE48P_342h',\n 'PCE48P_342v',\n 'GCARD48',\n 'Y3BB01h-48',\n 'Y3BB01v-48',\n 'Y3BB04h-48',\n 'Y3BB04v-48',\n 'Y4BA103h-48',\n 'Y4BA103v-48',\n 'Y4BB16h-48',\n 'Y4BB16v-48',\n 'Y4BB22h-48',\n 'Y4BB22v-48',\n 'Y5BA003h-48',\n 'Y5BA003v-48',\n 'Y5BA125h-48',\n 'Y5BA125v-48',\n 'Y5BB21h-48',\n 'Y5BB21v-48',\n 'Y7BP111h-48',\n 'Y7BP111v-48',\n 'Y7BP118h-48',\n 'Y7BP118v-48',\n 'Y7BP124h-48',\n 'Y7BP124v-48',\n 'Y7BP125h-48',\n 'Y7BP125v-48',\n 'Y8BP102h-48',\n 'Y8BP102v-48',\n 'Y8BP112h-48',\n 'Y8BP112v-48',\n 'Y10BA196h-48',\n 'Y10BA196v-48',\n 'Y10BA839h-48',\n 'Y10BA839v-48',\n 'Y10BP116h-48',\n 'Y10BP116v-48',\n 'Y12BP164h-48',\n 'Y12BP164v-48',\n 'Y13BA548h-48',\n 'Y13BA548v-48',\n 'Y13BA1325h-48',\n 'Y13BA1325v-48',\n 'Y13BA1424h-48',\n 'Y13BA1424v-48',\n 'Y13BA1429h-48',\n 'Y13BA1429v-48',\n 'Y13BA1833h-48',\n 'Y13BA1833v-48',\n 'Y17BR003h-48',\n 'Y17BR003v-48',\n 'Y17BR005h-48',\n 'Y17BR005v-48',\n ],\n },\n ],\n },\n {\n groupname: 'orientation',\n groupLabel: 'Orientation',\n groupfilters: [\n {\n name: 'Horizontal',\n description: 'See only horizontal cards',\n products: [\n 'WOS_P57P_540h',\n 'WOS_P57P_542h',\n 'WOS_P57P_544h',\n 'WOS_P57P_546h',\n 'WOS_P57P_548h',\n 'WOS_P57P_550h',\n 'WOS_P57P_552h',\n 'WOS_P57P_554h',\n 'WOS_P57P_556h',\n 'WOS_P57P_560h',\n 'WOS_P57P_562h',\n 'WOS_P57P_564h',\n 'WOS_P57P_566h',\n 'WOS_P57P_568h_22',\n 'WOS_P57F_540h',\n 'WOS_P57F_542h',\n 'WOS_P57F_544h',\n 'WOS_P57F_546h',\n 'WOS_P57F_548h',\n 'WOS_P57F_550h',\n 'WOS_P57F_552h',\n 'WOS_P57F_554h',\n 'WOS_P57F_556h',\n 'WOS_P57F_560h',\n 'WOS_P57F_562h',\n 'WOS_P57F_564h',\n 'WOS_P57F_566h',\n 'WOS_P57F_568h',\n 'P1218_455Ph',\n 'WOS_P455P_F154h',\n 'WOS_P455P_F178h',\n 'WOS_P455P_F186h',\n 'WOS_P455P_F190h',\n 'WOS_P455P_F192h',\n 'WOS_P455P_F202h',\n 'WOS_P455P_F204h',\n 'WOS_P455P_F212h',\n 'WOS_P455P_F228h',\n 'WOS_P455P_F236h',\n 'WOS_P455P_F238h',\n 'WOS_P455P_F242h',\n 'WOS_P455P_F246h',\n 'P455P_250h',\n 'P455P_252h',\n 'P455P_254h',\n 'P455P_256h',\n 'P455P_258h',\n 'P455P_260h',\n 'P455P_262h',\n 'P455P_264h',\n 'P455P_266h',\n 'P455P_268h',\n 'P455P_270h',\n 'P455P_272h',\n 'P455P_274h',\n 'P1218_455F_H',\n 'WOS_P455F_F154h',\n 'WOS_P455F_F178h',\n 'WOS_P455F_F186h',\n 'WOS_P455F_F190h',\n 'WOS_P455F_F192h',\n 'WOS_P455F_F202h',\n 'WOS_P455F_F204h',\n 'WOS_P455F_F212h',\n 'WOS_P455F_F228h',\n 'WOS_P455F_F236h',\n 'WOS_P455F_F238h',\n 'WOS_P455F_F242h',\n 'WOS_P455F_F246h',\n 'P455F_250h',\n 'P455F_252h',\n 'P455F_254h',\n 'P455F_256h',\n 'P455F_258h',\n 'P455F_260h',\n 'P455F_262h',\n 'P455F_264h',\n 'P455F_266h',\n 'P455F_268h',\n 'P455F_270h',\n 'P455F_272h',\n 'P455F_274h',\n 'P1218_57Ph',\n 'WOS_P57P_F154h',\n 'WOS_P57P_F178h',\n 'WOS_P57P_F186h',\n 'WOS_P57P_F190h',\n 'WOS_P57P_F192h',\n 'WOS_P57P_F202h',\n 'WOS_P57P_F204h',\n 'WOS_P57P_F212h',\n 'WOS_P57P_F228h',\n 'WOS_P57P_F236h',\n 'WOS_P57P_F238h',\n 'WOS_P57P_F242h',\n 'WOS_P57P_F246h',\n 'P57P_250h',\n 'P57P_252h',\n 'P57P_254h',\n 'P57P_256h',\n 'P57P_258h',\n 'P57P_260h',\n 'P57P_262h',\n 'P57P_264h',\n 'P57P_266h',\n 'P57P_268h',\n 'P57P_270h',\n 'P57P_272h',\n 'P57P_274h',\n 'P1218_57F_H',\n 'WOS_P57F_F154h',\n 'WOS_P57F_F178h',\n 'WOS_P57F_F186h',\n 'WOS_P57F_F190h',\n 'WOS_P57F_F192h',\n 'WOS_P57F_F202h',\n 'WOS_P57F_F204h',\n 'WOS_P57F_F212h',\n 'WOS_P57F_F228h',\n 'WOS_P57F_F236h',\n 'WOS_P57F_F238h',\n 'WOS_P57F_F242h',\n 'WOS_P57F_F246h',\n 'P57F_250h',\n 'P57F_252h',\n 'P57F_254h',\n 'P57F_256h',\n 'P57F_258h',\n 'P57F_260h',\n 'P57F_262h',\n 'P57F_264h',\n 'P57F_266h',\n 'P57F_268h',\n 'P57F_270h',\n 'P57F_272h',\n 'P57F_274h',\n 'P57P_FL001Ph',\n 'P57P_FL002Ph',\n 'P57P_FL003Ph',\n 'P57P_FL004Ph',\n 'P57P_FL005Ph',\n 'P57P_FL006Ph',\n 'P57P_FL007Ph',\n 'P57P_FL008Ph',\n 'P57P_FL009Ph',\n 'P57P_FL010Ph',\n 'P57P_FL011Ph',\n 'PCE1218_48Ph',\n 'WOS_PCE48P_F180h',\n 'WOS_PCE48P_F185h',\n 'WOS_PCE48P_F200h',\n 'WOS_PCE48P_F202h',\n 'WOS_PCE48P_F206h',\n 'WOS_PCE48P_FGAL226h',\n 'PCE48P_342h',\n 'PCE1218_57Ph',\n 'WOS_PCE57P_F120h',\n 'WOS_PCE57P_F216h',\n 'WOS_PCE57P_F220h',\n 'WOS_PCE57P_F224h',\n 'WOS_PCE57P_F274h',\n 'PCE57P_340h',\n 'PCE1218_57F_H',\n 'PCE57F_334h',\n 'WOS_PCE57F_F262h',\n 'WOS_PCE57F_F270h',\n 'GCARD48',\n 'GCARD57',\n 'Y3BB01h-48',\n 'Y3BB04h-48',\n 'Y4BA103h-48',\n 'Y4BB16h-48',\n 'Y4BB22h-48',\n 'Y5BA003h-48',\n 'Y5BA125h-48',\n 'Y5BB21h-48',\n 'Y7BP111h-48',\n 'Y7BP118h-48',\n 'Y7BP124h-48',\n 'Y7BP125h-48',\n 'Y8BP102h-48',\n 'Y8BP112h-48',\n 'Y10BA196h-48',\n 'Y10BA839h-48',\n 'Y10BP116h-48',\n 'Y12BP164h-48',\n 'Y13BA548h-48',\n 'Y13BA1325h-48',\n 'Y13BA1424h-48',\n 'Y13BA1429h-48',\n 'Y13BA1833h-48',\n 'Y17BR003h-48',\n 'Y17BR005h-48',\n 'Y6CD01h',\n 'Y9BP100h-57',\n 'Y10BA603h-57',\n 'Y10BA800h-57',\n 'Y10BP102h-57',\n 'Y10BP108h-57',\n 'Y11BP158h-57',\n 'Y13BA455h-57',\n 'Y13BA487h-57',\n 'Y13BA488h-57',\n 'Y13BA1295h-57',\n 'Y13BA1391h-57',\n 'YSLOPBh-57',\n 'Y17BR001h-57',\n 'Y17BR009h-57',\n 'Y17BR011h-57',\n 'WOS_P57P_570h',\n 'WOS_P57P_572ah',\n 'WOS_P57P_572bh',\n 'WOS_P57P_572ch',\n 'WOS_P57P_572dh',\n 'WOS_P57P_574ah',\n 'WOS_P57P_574bh',\n 'WOS_P57P_574ch',\n 'WOS_P57P_574dh',\n 'WOS_P57P_576ah',\n 'WOS_P57P_576bh',\n 'WOS_P57P_576ch',\n 'WOS_P57P_578ah',\n 'WOS_P57P_578bh',\n 'WOS_P57P_578ch',\n 'WOS_P57P_580ah',\n 'WOS_P57P_580bh',\n 'WOS_P57P_580ch',\n 'WOS_P57P_580dh',\n 'WOS_P57P_580eh',\n 'WOS_P57P_582ah',\n 'WOS_P57P_582bh',\n 'WOS_P57P_582ch',\n 'WOS_P57P_582dh',\n 'WOS_P57P_584h',\n 'WOS_P57P_586h',\n 'WOS_P57P_588ah',\n 'WOS_P57P_588bh',\n 'WOS_P57P_588ch',\n 'WOS_P57P_588dh',\n 'WOS_P57P_598ah',\n 'WOS_P57P_598bh',\n 'WOS_P57P_598ch',\n 'WOS_P57P_598dh',\n 'WOS_P57P_600h',\n 'WOS_P57P_602h',\n 'WOS_P57P_604ah',\n 'WOS_P57P_604bh',\n 'WOS_P57P_604ch',\n 'WOS_P57P_604dh',\n 'WOS_P57P_604eh',\n 'WOS_P57P_606h',\n 'WOS_P57P_608h',\n 'WOS_P57F_570h',\n 'WOS_P57F_570-2hh',\n 'WOS_P57F_572ahh',\n 'WOS_P57F_572bhh',\n 'WOS_P57F_572chh',\n 'WOS_P57F_572dhh',\n 'WOS_P57F_572-2ahh',\n 'WOS_P57F_572-2bhh',\n 'WOS_P57F_572-2chh',\n 'WOS_P57F_572-2dhh',\n 'WOS_P57F_574ahh',\n 'WOS_P57F_574bh',\n 'WOS_P57F_574chh',\n 'WOS_P57F_574dhh',\n 'WOS_P57F_574-2ahh',\n 'WOS_P57F_574-2bhh',\n 'WOS_P57F_574-2chh',\n 'WOS_P57F_574-2dhh',\n 'WOS_P57F_576ahh',\n 'WOS_P57F_576bhh',\n 'WOS_P57F_576chh',\n 'WOS_P57F_576-2ahh',\n 'WOS_P57F_576-2bhh',\n 'WOS_P57F_576-2chh',\n 'WOS_P57F_578ahh',\n 'WOS_P57F_578bhh',\n 'WOS_P57F_578chh',\n 'WOS_P57F_578-2ahh',\n 'WOS_P57F_578-2bhh',\n 'WOS_P57F_578-2chh',\n 'WOS_P57F_580ahh',\n 'WOS_P57F_580bhh',\n 'WOS_P57F_580chh',\n 'WOS_P57F_580dhh',\n 'WOS_P57F_580ehh',\n 'WOS_P57F_580-2ahh',\n 'WOS_P57F_580-2bhh',\n 'WOS_P57F_580-2chh',\n 'WOS_P57F_580-2dhh',\n 'WOS_P57F_580-2ehh',\n 'WOS_P57F_582ahh',\n 'WOS_P57F_582bhh',\n 'WOS_P57F_582chh',\n 'WOS_P57F_582dhh',\n 'WOS_P57F_582-2ahh',\n 'WOS_P57F_582-2bhh',\n 'WOS_P57F_582-2chh',\n 'WOS_P57F_582-2dhh',\n 'WOS_P57F_584hh',\n 'WOS_P57F_584-2hh',\n 'WOS_P57F_586hh',\n 'WOS_P57F_586-2hh',\n 'WOS_P57F_588ahh',\n 'WOS_P57F_588bhh',\n 'WOS_P57F_588chh',\n 'WOS_P57F_588dhh',\n 'WOS_P57F_588-2ahh',\n 'WOS_P57F_588-2bhh',\n 'WOS_P57F_588-2chh',\n 'WOS_P57F_588-2dhh',\n 'WOS_P57F_598ahh',\n 'WOS_P57F_598bhh',\n 'WOS_P57F_598chh',\n 'WOS_P57F_598dhh',\n 'WOS_P57F_598-2ahh',\n 'WOS_P57F_598-2bhh',\n 'WOS_P57F_598-2chh',\n 'WOS_P57F_598-2dhh',\n 'WOS_P57F_600hh',\n 'WOS_P57F_600-2hh',\n 'WOS_P57F_602hh',\n 'WOS_P57F_602-2hh',\n 'WOS_P57F_604ahh',\n 'WOS_P57F_604bhh',\n 'WOS_P57F_604chh',\n 'WOS_P57F_604dhh',\n 'WOS_P57F_604-2ahh',\n 'WOS_P57F_604-2bhh',\n 'WOS_P57F_604-2chh',\n 'WOS_P57F_604-2dhh',\n 'WOS_P57F_606hh',\n 'WOS_P57F_606-2hh',\n 'WOS_P57F_608hh',\n 'WOS_P57F_608-2hh',\n ],\n },\n {\n name: 'Vertical',\n description: 'See only vertical cards',\n products: [\n 'WOS_P57P_540v',\n 'WOS_P57P_542v',\n 'WOS_P57P_544v',\n 'WOS_P57P_546v',\n 'WOS_P57P_548v',\n 'WOS_P57P_550v',\n 'WOS_P57P_552v',\n 'WOS_P57P_554v',\n 'WOS_P57P_556v',\n 'WOS_P57P_560v',\n 'WOS_P57P_562v',\n 'WOS_P57P_564v',\n 'WOS_P57P_566v',\n 'WOS_P57P_568v_22',\n 'WOS_P57F_540v',\n 'WOS_P57F_542v',\n 'WOS_P57F_544v',\n 'WOS_P57F_546v',\n 'WOS_P57F_548v',\n 'WOS_P57F_550v',\n 'WOS_P57F_552v',\n 'WOS_P57F_554v',\n 'WOS_P57F_556v',\n 'WOS_P57F_560v',\n 'WOS_P57F_562v',\n 'WOS_P57F_564v',\n 'WOS_P57F_566v',\n 'WOS_P57F_568v',\n 'P1218_455Pv',\n 'WOS_P455P_F154v',\n 'WOS_P455P_F178v',\n 'WOS_P455P_F186v',\n 'WOS_P455P_F190v',\n 'WOS_P455P_F192v',\n 'WOS_P455P_F202v',\n 'WOS_P455P_F204v',\n 'WOS_P455P_F212v',\n 'WOS_P455P_F228v',\n 'WOS_P455P_F236v',\n 'WOS_P455P_F238v',\n 'WOS_P455P_F242v',\n 'WOS_P455P_F246v',\n 'P455P_250v',\n 'P455P_252v',\n 'P455P_254v',\n 'P455P_256v',\n 'P455P_258v',\n 'P455P_260v',\n 'P455P_262v',\n 'P455P_264v',\n 'P455P_266v',\n 'P455P_268v',\n 'P455P_270v',\n 'P455P_272v',\n 'P455P_274v',\n 'P1218_455A4v',\n 'WOS_P455A_F154',\n 'WOS_P455A_F178',\n 'WOS_P455A_F186',\n 'WOS_P455A_F190',\n 'WOS_P455A_F192',\n 'WOS_P455A_F202',\n 'WOS_P455A_F204',\n 'WOS_P455A_F212',\n 'WOS_P455A_F228',\n 'WOS_P455A_F236',\n 'WOS_P455A_F238',\n 'WOS_P455A_F242',\n 'WOS_P455A_F246',\n 'P455A_250',\n 'P455A_252',\n 'P455A_254',\n 'P455A_256',\n 'P455A_258',\n 'P455A_260',\n 'P455A_262',\n 'P455A_264',\n 'P455A_266',\n 'P455A_268',\n 'P455A_270',\n 'P455A_272',\n 'P455A_274',\n 'P1218_455F_V',\n 'WOS_P455F_F154v',\n 'WOS_P455F_F178v',\n 'WOS_P455F_F186v',\n 'WOS_P455F_F190v',\n 'WOS_P455F_F192v',\n 'WOS_P455F_F202v',\n 'WOS_P455F_F204v',\n 'WOS_P455F_F212v',\n 'WOS_P455F_F228v',\n 'WOS_P455F_F236v',\n 'WOS_P455F_F238v',\n 'WOS_P455F_F242v',\n 'WOS_P455F_F246v',\n 'P455F_250v',\n 'P455F_252v',\n 'P455F_254v',\n 'P455F_256v',\n 'P455F_258v',\n 'P455F_260v',\n 'P455F_262v',\n 'P455F_264v',\n 'P455F_266v',\n 'P455F_268v',\n 'P455F_270v',\n 'P455F_272v',\n 'P455F_274v',\n 'P1218_57P',\n 'WOS_P57P_F154v',\n 'WOS_P57P_F178v',\n 'WOS_P57P_F186v',\n 'WOS_P57P_F190v',\n 'WOS_P57P_F192v',\n 'WOS_P57P_F202v',\n 'WOS_P57P_F204v',\n 'WOS_P57P_F212v',\n 'WOS_P57P_F228v',\n 'WOS_P57P_F236v',\n 'WOS_P57P_F238v',\n 'WOS_P57P_F242v',\n 'WOS_P57P_F246v',\n 'P57P_250v',\n 'P57P_252v',\n 'P57P_254v',\n 'P57P_256v',\n 'P57P_258v',\n 'P57P_260v',\n 'P57P_262v',\n 'P57P_264v',\n 'P57P_266v',\n 'P57P_268v',\n 'P57P_270v',\n 'P57P_272v',\n 'P57P_274v',\n 'P1218_57F_V',\n 'WOS_P57F_F154v',\n 'WOS_P57F_F178v',\n 'WOS_P57F_F186v',\n 'WOS_P57F_F190v',\n 'WOS_P57F_F192v',\n 'WOS_P57F_F202v',\n 'WOS_P57F_F204v',\n 'WOS_P57F_F212v',\n 'WOS_P57F_F228v',\n 'WOS_P57F_F236v',\n 'WOS_P57F_F238v',\n 'WOS_P57F_F242v',\n 'WOS_P57F_F246v',\n 'P57F_250v',\n 'P57F_252v',\n 'P57F_254v',\n 'P57F_256v',\n 'P57F_258v',\n 'P57F_260v',\n 'P57F_262v',\n 'P57F_264v',\n 'P57F_266v',\n 'P57F_268v',\n 'P57F_270v',\n 'P57F_272v',\n 'P57F_274v',\n 'P57P_FL012Pv',\n 'P57P_FL013Pv',\n 'P57P_FL014Pv',\n 'P57P_FL015Pv',\n 'P57P_FL016Pv',\n 'P57P_FL017Pv',\n 'P57P_FL018Pv',\n 'P57P_FL019Pv',\n 'P57P_FL020Pv',\n 'P57P_FL021Pv',\n 'P57P_FL022Pv',\n 'P57P_FL023Pv',\n 'P57P_FL024Pv',\n 'PCE1218_48Pv',\n 'WOS_PCE48P_F180v',\n 'WOS_PCE48P_F185v',\n 'WOS_PCE48P_F200v',\n 'WOS_PCE48P_F202v',\n 'WOS_PCE48P_F206v',\n 'PCE48P_342v',\n 'PCE1218_57P',\n 'WOS_PCE57P_F120v',\n 'WOS_PCE57P_F216v',\n 'WOS_PCE57P_F220v',\n 'WOS_PCE57P_F224v',\n 'WOS_PCE57P_F274v',\n 'PCE57P_340v',\n 'PCE1218_57F_V',\n 'PCE57F_334v',\n 'WOS_PCE57F_F262v',\n 'WOS_PCE57F_F270v',\n 'PCE1218_57Ph_PopOut-Round',\n 'WOS_PCE57P_F302v',\n 'WOS_PCE57P_F312v',\n 'WOS_PCE57P_F316v',\n 'PCE1218_57Ph_PopOut-Scalloped',\n 'WOS_PCE57P_F300v',\n 'WOS_PCE57P_F304v',\n 'WOS_PCE57P_F308v',\n 'WOS_PCE57P_F324v',\n 'PCE57P_332v',\n 'PCE1218_57Ph_PopOut-Tapered',\n 'WOS_PCE57P_F310v',\n 'WOS_PCE57P_F314v',\n 'WOS_PCE57P_F318v',\n 'PCE57P_330v',\n 'Y3BB01v-48',\n 'Y3BB04v-48',\n 'Y4BA103v-48',\n 'Y4BB16v-48',\n 'Y4BB22v-48',\n 'Y5BA003v-48',\n 'Y5BA125v-48',\n 'Y5BB21v-48',\n 'Y7BP111v-48',\n 'Y7BP118v-48',\n 'Y7BP124v-48',\n 'Y7BP125v-48',\n 'Y8BP102v-48',\n 'Y8BP112v-48',\n 'Y10BA196v-48',\n 'Y10BA839v-48',\n 'Y10BP116v-48',\n 'Y12BP164v-48',\n 'Y13BA548v-48',\n 'Y13BA1325v-48',\n 'Y13BA1424v-48',\n 'Y13BA1429v-48',\n 'Y13BA1833v-48',\n 'Y17BR003v-48',\n 'Y17BR005v-48',\n 'Y6CD01v',\n 'Y9BP100v-57',\n 'Y10BA603v-57',\n 'Y10BA800v-57',\n 'Y10BP102v-57',\n 'Y10BP108v-57',\n 'Y11BP158v-57',\n 'Y13BA455v-57',\n 'Y13BA487v-57',\n 'Y13BA488v-57',\n 'Y13BA1295v-57',\n 'Y13BA1391v-57',\n 'YSLOPBv-57',\n 'Y17BR001v-57',\n 'Y17BR009v-57',\n 'Y17BR011v-57',\n 'WOS_P57P_590av',\n 'WOS_P57P_590bv',\n 'WOS_P57P_590cv',\n 'WOS_P57P_590dv',\n 'WOS_P57P_592av',\n 'WOS_P57P_592bv',\n 'WOS_P57P_592cv',\n 'WOS_P57P_592dv',\n 'WOS_P57P_594av',\n 'WOS_P57P_594bv',\n 'WOS_P57P_594cv',\n 'WOS_P57P_596av',\n 'WOS_P57P_596bv',\n 'WOS_P57P_596cv',\n 'WOS_P57P_596dv',\n 'WOS_P57P_610av',\n 'WOS_P57P_610bv',\n 'WOS_P57P_610cv',\n 'WOS_P57P_610dv',\n 'WOS_P57P_612av',\n 'WOS_P57P_612bv',\n 'WOS_P57P_612cv',\n 'WOS_P57P_612dv',\n 'WOS_P57P_612ev',\n 'WOS_P57P_614av',\n 'WOS_P57P_614bv',\n 'WOS_P57P_614cv',\n 'WOS_P57P_614dv',\n 'WOS_P57P_614ev',\n 'WOS_P57P_616av',\n 'WOS_P57P_616bv',\n 'WOS_P57P_616cv',\n 'WOS_P57P_616dv',\n 'WOS_P57P_616ev',\n 'WOS_P57F_590av',\n 'WOS_P57F_590bv',\n 'WOS_P57F_590cv',\n 'WOS_P57F_590dv',\n 'WOS_P57F_590-2av',\n 'WOS_P57F_590-2bv',\n 'WOS_P57F_590-2cv',\n 'WOS_P57F_590-2dv',\n 'WOS_P57F_592av',\n 'WOS_P57F_592bv',\n 'WOS_P57F_592cv',\n 'WOS_P57F_592dv',\n 'WOS_P57F_592-2av',\n 'WOS_P57F_592-2bv',\n 'WOS_P57F_592-2cv',\n 'WOS_P57F_592-2dv',\n 'WOS_P57F_594av',\n 'WOS_P57F_594bv',\n 'WOS_P57F_594cv',\n 'WOS_P57F_594-2av',\n 'WOS_P57F_594-2bv',\n 'WOS_P57F_594-2cv',\n 'WOS_P57F_596av',\n 'WOS_P57F_596bv',\n 'WOS_P57F_596cv',\n 'WOS_P57F_596dv',\n 'WOS_P57F_596-2av',\n 'WOS_P57F_596-2bv',\n 'WOS_P57F_596-2cv',\n 'WOS_P57F_596-2dv',\n 'WOS_P57F_610av',\n 'WOS_P57F_610bv',\n 'WOS_P57F_610cv',\n 'WOS_P57F_610dv',\n 'WOS_P57F_610-2av',\n 'WOS_P57F_610-2bv',\n 'WOS_P57F_610-2cv',\n 'WOS_P57F_610-2dv',\n 'WOS_P57F_612av',\n 'WOS_P57F_612bv',\n 'WOS_P57F_612cv',\n 'WOS_P57F_612dv',\n 'WOS_P57F_612ev',\n 'WOS_P57F_612-2av',\n 'WOS_P57F_612-2bv',\n 'WOS_P57F_612-2cv',\n 'WOS_P57F_612-2dv',\n 'WOS_P57F_612-2ev',\n 'WOS_P57F_614av',\n 'WOS_P57F_614bv',\n 'WOS_P57F_614cv',\n 'WOS_P57F_614dv',\n 'WOS_P57F_614ev',\n 'WOS_P57F_614-2av',\n 'WOS_P57F_614-2bv',\n 'WOS_P57F_614-2cv',\n 'WOS_P57F_614-2dv',\n 'WOS_P57F_614-2ev',\n 'WOS_P57F_616av',\n 'WOS_P57F_616bv',\n 'WOS_P57F_616cv',\n 'WOS_P57F_616dv',\n 'WOS_P57F_616ev',\n 'WOS_P57F_616-2av',\n 'WOS_P57F_616-2bv',\n 'WOS_P57F_616-2cv',\n 'WOS_P57F_616-2dv',\n 'WOS_P57F_616-2ev',\n ],\n },\n {\n name: 'Square',\n description: 'See only square cards',\n products: [\n 'P1218_55TF',\n 'WOS_P55T_F154',\n 'WOS_P55T_F178',\n 'WOS_P55T_F186',\n 'WOS_P55T_F190',\n 'WOS_P55T_F192',\n 'WOS_P55T_F202',\n 'WOS_P55T_F204',\n 'WOS_P55T_F212',\n 'WOS_P55T_F228',\n 'WOS_P55T_F236',\n 'WOS_P55T_F238',\n 'WOS_P55T_F242',\n 'WOS_P55T_F246',\n 'P55T_250',\n 'P55T_252',\n 'P55T_254',\n 'P55T_256',\n 'P55T_258',\n 'P55T_260',\n 'P55T_262',\n 'P55T_264',\n 'P55T_266',\n 'P55T_268',\n 'P55T_270',\n 'P55T_272',\n 'P55T_274',\n 'PCE1218_55P',\n 'WOS_PCE55P_F125',\n 'WOS_PCE55P_F208',\n 'WOS_PCE55P_F212',\n 'WOS_PCE55P_F214',\n ],\n },\n ],\n },\n {\n groupname: 'format',\n groupLabel: 'Format',\n groupfilters: [\n {\n name: 'Flat',\n description: 'See only Flat cards',\n products: [\n 'WOS_P57P_540h',\n 'WOS_P57P_540v',\n 'WOS_P57P_542h',\n 'WOS_P57P_542v',\n 'WOS_P57P_544h',\n 'WOS_P57P_544v',\n 'WOS_P57P_546h',\n 'WOS_P57P_546v',\n 'WOS_P57P_548h',\n 'WOS_P57P_548v',\n 'WOS_P57P_550h',\n 'WOS_P57P_550v',\n 'WOS_P57P_552h',\n 'WOS_P57P_552v',\n 'WOS_P57P_554h',\n 'WOS_P57P_554v',\n 'WOS_P57P_556h',\n 'WOS_P57P_556v',\n 'WOS_P57P_560h',\n 'WOS_P57P_560v',\n 'WOS_P57P_562h',\n 'WOS_P57P_562v',\n 'WOS_P57P_564h',\n 'WOS_P57P_564v',\n 'WOS_P57P_566h',\n 'WOS_P57P_566v',\n 'WOS_P57P_568h_22',\n 'WOS_P57P_568v_22',\n 'P1218_455Ph',\n 'P1218_455Pv',\n 'WOS_P455P_F154h',\n 'WOS_P455P_F154v',\n 'WOS_P455P_F178h',\n 'WOS_P455P_F178v',\n 'WOS_P455P_F186h',\n 'WOS_P455P_F186v',\n 'WOS_P455P_F190h',\n 'WOS_P455P_F190v',\n 'WOS_P455P_F192h',\n 'WOS_P455P_F192v',\n 'WOS_P455P_F202h',\n 'WOS_P455P_F202v',\n 'WOS_P455P_F204h',\n 'WOS_P455P_F204v',\n 'WOS_P455P_F212h',\n 'WOS_P455P_F212v',\n 'WOS_P455P_F228h',\n 'WOS_P455P_F228v',\n 'WOS_P455P_F236h',\n 'WOS_P455P_F236v',\n 'WOS_P455P_F238h',\n 'WOS_P455P_F238v',\n 'WOS_P455P_F242h',\n 'WOS_P455P_F242v',\n 'WOS_P455P_F246h',\n 'WOS_P455P_F246v',\n 'P455P_250h',\n 'P455P_250v',\n 'P455P_252h',\n 'P455P_252v',\n 'P455P_254h',\n 'P455P_254v',\n 'P455P_256h',\n 'P455P_256v',\n 'P455P_258h',\n 'P455P_258v',\n 'P455P_260h',\n 'P455P_260v',\n 'P455P_262h',\n 'P455P_262v',\n 'P455P_264h',\n 'P455P_264v',\n 'P455P_266h',\n 'P455P_266v',\n 'P455P_268h',\n 'P455P_268v',\n 'P455P_270h',\n 'P455P_270v',\n 'P455P_272h',\n 'P455P_272v',\n 'P455P_274h',\n 'P455P_274v',\n 'P1218_57Ph',\n 'P1218_57P',\n 'WOS_P57P_F154h',\n 'WOS_P57P_F154v',\n 'WOS_P57P_F178h',\n 'WOS_P57P_F178v',\n 'WOS_P57P_F186h',\n 'WOS_P57P_F186v',\n 'WOS_P57P_F190h',\n 'WOS_P57P_F190v',\n 'WOS_P57P_F192h',\n 'WOS_P57P_F192v',\n 'WOS_P57P_F202h',\n 'WOS_P57P_F202v',\n 'WOS_P57P_F204h',\n 'WOS_P57P_F204v',\n 'WOS_P57P_F212h',\n 'WOS_P57P_F212v',\n 'WOS_P57P_F228h',\n 'WOS_P57P_F228v',\n 'WOS_P57P_F236h',\n 'WOS_P57P_F236v',\n 'WOS_P57P_F238h',\n 'WOS_P57P_F238v',\n 'WOS_P57P_F242h',\n 'WOS_P57P_F242v',\n 'WOS_P57P_F246h',\n 'WOS_P57P_F246v',\n 'P57P_250h',\n 'P57P_250v',\n 'P57P_252h',\n 'P57P_252v',\n 'P57P_254h',\n 'P57P_254v',\n 'P57P_256h',\n 'P57P_256v',\n 'P57P_258h',\n 'P57P_258v',\n 'P57P_260h',\n 'P57P_260v',\n 'P57P_262h',\n 'P57P_262v',\n 'P57P_264h',\n 'P57P_264v',\n 'P57P_266h',\n 'P57P_266v',\n 'P57P_268h',\n 'P57P_268v',\n 'P57P_270h',\n 'P57P_270v',\n 'P57P_272h',\n 'P57P_272v',\n 'P57P_274h',\n 'P57P_274v',\n 'P57P_FL001Ph',\n 'P57P_FL002Ph',\n 'P57P_FL003Ph',\n 'P57P_FL004Ph',\n 'P57P_FL005Ph',\n 'P57P_FL006Ph',\n 'P57P_FL007Ph',\n 'P57P_FL008Ph',\n 'P57P_FL009Ph',\n 'P57P_FL010Ph',\n 'P57P_FL011Ph',\n 'P57P_FL012Pv',\n 'P57P_FL013Pv',\n 'P57P_FL014Pv',\n 'P57P_FL015Pv',\n 'P57P_FL016Pv',\n 'P57P_FL017Pv',\n 'P57P_FL018Pv',\n 'P57P_FL019Pv',\n 'P57P_FL020Pv',\n 'P57P_FL021Pv',\n 'P57P_FL022Pv',\n 'P57P_FL023Pv',\n 'P57P_FL024Pv',\n 'PCE1218_48Ph',\n 'PCE1218_48Pv',\n 'WOS_PCE48P_F180h',\n 'WOS_PCE48P_F180v',\n 'WOS_PCE48P_F185h',\n 'WOS_PCE48P_F185v',\n 'WOS_PCE48P_F200h',\n 'WOS_PCE48P_F200v',\n 'WOS_PCE48P_F202h',\n 'WOS_PCE48P_F202v',\n 'WOS_PCE48P_F206h',\n 'WOS_PCE48P_F206v',\n 'WOS_PCE48P_FGAL226h',\n 'PCE48P_342h',\n 'PCE48P_342v',\n 'PCE1218_55P',\n 'WOS_PCE55P_F125',\n 'WOS_PCE55P_F208',\n 'WOS_PCE55P_F212',\n 'WOS_PCE55P_F214',\n 'PCE1218_57Ph',\n 'PCE1218_57P',\n 'WOS_PCE57P_F120h',\n 'WOS_PCE57P_F120v',\n 'WOS_PCE57P_F216h',\n 'WOS_PCE57P_F216v',\n 'WOS_PCE57P_F220h',\n 'WOS_PCE57P_F220v',\n 'WOS_PCE57P_F224h',\n 'WOS_PCE57P_F224v',\n 'WOS_PCE57P_F274h',\n 'WOS_PCE57P_F274v',\n 'PCE57P_340v',\n 'PCE57P_340h',\n 'WOS_P57P_570h',\n 'WOS_P57P_572ah',\n 'WOS_P57P_572bh',\n 'WOS_P57P_572ch',\n 'WOS_P57P_572dh',\n 'WOS_P57P_574ah',\n 'WOS_P57P_574bh',\n 'WOS_P57P_574ch',\n 'WOS_P57P_574dh',\n 'WOS_P57P_576ah',\n 'WOS_P57P_576bh',\n 'WOS_P57P_576ch',\n 'WOS_P57P_578ah',\n 'WOS_P57P_578bh',\n 'WOS_P57P_578ch',\n 'WOS_P57P_580ah',\n 'WOS_P57P_580bh',\n 'WOS_P57P_580ch',\n 'WOS_P57P_580dh',\n 'WOS_P57P_580eh',\n 'WOS_P57P_582ah',\n 'WOS_P57P_582bh',\n 'WOS_P57P_582ch',\n 'WOS_P57P_582dh',\n 'WOS_P57P_584h',\n 'WOS_P57P_586h',\n 'WOS_P57P_588ah',\n 'WOS_P57P_588bh',\n 'WOS_P57P_588ch',\n 'WOS_P57P_588dh',\n 'WOS_P57P_598ah',\n 'WOS_P57P_598bh',\n 'WOS_P57P_598ch',\n 'WOS_P57P_598dh',\n 'WOS_P57P_600h',\n 'WOS_P57P_602h',\n 'WOS_P57P_604ah',\n 'WOS_P57P_604bh',\n 'WOS_P57P_604ch',\n 'WOS_P57P_604dh',\n 'WOS_P57P_604eh',\n 'WOS_P57P_606h',\n 'WOS_P57P_608h',\n 'WOS_P57P_590av',\n 'WOS_P57P_590bv',\n 'WOS_P57P_590cv',\n 'WOS_P57P_590dv',\n 'WOS_P57P_592av',\n 'WOS_P57P_592bv',\n 'WOS_P57P_592cv',\n 'WOS_P57P_592dv',\n 'WOS_P57P_594av',\n 'WOS_P57P_594bv',\n 'WOS_P57P_594cv',\n 'WOS_P57P_596av',\n 'WOS_P57P_596bv',\n 'WOS_P57P_596cv',\n 'WOS_P57P_596dv',\n 'WOS_P57P_610av',\n 'WOS_P57P_610bv',\n 'WOS_P57P_610cv',\n 'WOS_P57P_610dv',\n 'WOS_P57P_612av',\n 'WOS_P57P_612bv',\n 'WOS_P57P_612cv',\n 'WOS_P57P_612dv',\n 'WOS_P57P_612ev',\n 'WOS_P57P_614av',\n 'WOS_P57P_614bv',\n 'WOS_P57P_614cv',\n 'WOS_P57P_614dv',\n 'WOS_P57P_614ev',\n 'WOS_P57P_616av',\n 'WOS_P57P_616bv',\n 'WOS_P57P_616cv',\n 'WOS_P57P_616dv',\n 'WOS_P57P_616ev',\n ],\n },\n {\n name: 'Single Fold',\n description: 'See only single fold cards',\n products: [\n 'WOS_P57F_540h',\n 'WOS_P57F_540v',\n 'WOS_P57F_542h',\n 'WOS_P57F_542v',\n 'WOS_P57F_544h',\n 'WOS_P57F_544v',\n 'WOS_P57F_546h',\n 'WOS_P57F_546v',\n 'WOS_P57F_548h',\n 'WOS_P57F_548v',\n 'WOS_P57F_550h',\n 'WOS_P57F_550v',\n 'WOS_P57F_552h',\n 'WOS_P57F_552v',\n 'WOS_P57F_554h',\n 'WOS_P57F_554v',\n 'WOS_P57F_556h',\n 'WOS_P57F_556v',\n 'WOS_P57F_560h',\n 'WOS_P57F_560v',\n 'WOS_P57F_562h',\n 'WOS_P57F_562v',\n 'WOS_P57F_564h',\n 'WOS_P57F_564v',\n 'WOS_P57F_566h',\n 'WOS_P57F_566v',\n 'WOS_P57F_568h',\n 'WOS_P57F_568v',\n 'P1218_455F_H',\n 'P1218_455F_V',\n 'WOS_P455F_F154h',\n 'WOS_P455F_F154v',\n 'WOS_P455F_F178h',\n 'WOS_P455F_F178v',\n 'WOS_P455F_F186h',\n 'WOS_P455F_F186v',\n 'WOS_P455F_F190h',\n 'WOS_P455F_F190v',\n 'WOS_P455F_F192h',\n 'WOS_P455F_F192v',\n 'WOS_P455F_F202h',\n 'WOS_P455F_F202v',\n 'WOS_P455F_F204h',\n 'WOS_P455F_F204v',\n 'WOS_P455F_F212h',\n 'WOS_P455F_F212v',\n 'WOS_P455F_F228h',\n 'WOS_P455F_F228v',\n 'WOS_P455F_F236h',\n 'WOS_P455F_F236v',\n 'WOS_P455F_F238h',\n 'WOS_P455F_F238v',\n 'WOS_P455F_F242h',\n 'WOS_P455F_F242v',\n 'WOS_P455F_F246h',\n 'WOS_P455F_F246v',\n 'P455F_250h',\n 'P455F_250v',\n 'P455F_252h',\n 'P455F_252v',\n 'P455F_254h',\n 'P455F_254v',\n 'P455F_256h',\n 'P455F_256v',\n 'P455F_258h',\n 'P455F_258v',\n 'P455F_260h',\n 'P455F_260v',\n 'P455F_262h',\n 'P455F_262v',\n 'P455F_264h',\n 'P455F_264v',\n 'P455F_266h',\n 'P455F_266v',\n 'P455F_268h',\n 'P455F_268v',\n 'P455F_270h',\n 'P455F_270v',\n 'P455F_272h',\n 'P455F_272v',\n 'P455F_274h',\n 'P455F_274v',\n 'P1218_57F_H',\n 'P1218_57F_V',\n 'WOS_P57F_F154h',\n 'WOS_P57F_F154v',\n 'WOS_P57F_F178h',\n 'WOS_P57F_F178v',\n 'WOS_P57F_F186h',\n 'WOS_P57F_F186v',\n 'WOS_P57F_F190h',\n 'WOS_P57F_F190v',\n 'WOS_P57F_F192h',\n 'WOS_P57F_F192v',\n 'WOS_P57F_F202h',\n 'WOS_P57F_F202v',\n 'WOS_P57F_F204h',\n 'WOS_P57F_F204v',\n 'WOS_P57F_F212h',\n 'WOS_P57F_F212v',\n 'WOS_P57F_F228h',\n 'WOS_P57F_F228v',\n 'WOS_P57F_F236h',\n 'WOS_P57F_F236v',\n 'WOS_P57F_F238h',\n 'WOS_P57F_F238v',\n 'WOS_P57F_F242h',\n 'WOS_P57F_F242v',\n 'WOS_P57F_F246h',\n 'WOS_P57F_F246v',\n 'P57F_250h',\n 'P57F_250v',\n 'P57F_252h',\n 'P57F_252v',\n 'P57F_254h',\n 'P57F_254v',\n 'P57F_256h',\n 'P57F_256v',\n 'P57F_258h',\n 'P57F_258v',\n 'P57F_260h',\n 'P57F_260v',\n 'P57F_262h',\n 'P57F_262v',\n 'P57F_264h',\n 'P57F_264v',\n 'P57F_266h',\n 'P57F_266v',\n 'P57F_268h',\n 'P57F_268v',\n 'P57F_270h',\n 'P57F_270v',\n 'P57F_272h',\n 'P57F_272v',\n 'P57F_274h',\n 'P57F_274v',\n 'PCE1218_57F_H',\n 'PCE1218_57F_V',\n 'PCE57F_334h',\n 'PCE57F_334v',\n 'WOS_PCE57F_F262h',\n 'WOS_PCE57F_F262v',\n 'WOS_PCE57F_F270h',\n 'WOS_PCE57F_F270v',\n 'WOS_P57F_570h',\n 'WOS_P57F_570-2hh',\n 'WOS_P57F_572ahh',\n 'WOS_P57F_572bhh',\n 'WOS_P57F_572chh',\n 'WOS_P57F_572dhh',\n 'WOS_P57F_572-2ahh',\n 'WOS_P57F_572-2bhh',\n 'WOS_P57F_572-2chh',\n 'WOS_P57F_572-2dhh',\n 'WOS_P57F_574ahh',\n 'WOS_P57F_574bh',\n 'WOS_P57F_574chh',\n 'WOS_P57F_574dhh',\n 'WOS_P57F_574-2ahh',\n 'WOS_P57F_574-2bhh',\n 'WOS_P57F_574-2chh',\n 'WOS_P57F_574-2dhh',\n 'WOS_P57F_576ahh',\n 'WOS_P57F_576bhh',\n 'WOS_P57F_576chh',\n 'WOS_P57F_576-2ahh',\n 'WOS_P57F_576-2bhh',\n 'WOS_P57F_576-2chh',\n 'WOS_P57F_578ahh',\n 'WOS_P57F_578bhh',\n 'WOS_P57F_578chh',\n 'WOS_P57F_578-2ahh',\n 'WOS_P57F_578-2bhh',\n 'WOS_P57F_578-2chh',\n 'WOS_P57F_580ahh',\n 'WOS_P57F_580bhh',\n 'WOS_P57F_580chh',\n 'WOS_P57F_580dhh',\n 'WOS_P57F_580ehh',\n 'WOS_P57F_580-2ahh',\n 'WOS_P57F_580-2bhh',\n 'WOS_P57F_580-2chh',\n 'WOS_P57F_580-2dhh',\n 'WOS_P57F_580-2ehh',\n 'WOS_P57F_582ahh',\n 'WOS_P57F_582bhh',\n 'WOS_P57F_582chh',\n 'WOS_P57F_582dhh',\n 'WOS_P57F_582-2ahh',\n 'WOS_P57F_582-2bhh',\n 'WOS_P57F_582-2chh',\n 'WOS_P57F_582-2dhh',\n 'WOS_P57F_584hh',\n 'WOS_P57F_584-2hh',\n 'WOS_P57F_586hh',\n 'WOS_P57F_586-2hh',\n 'WOS_P57F_588ahh',\n 'WOS_P57F_588bhh',\n 'WOS_P57F_588chh',\n 'WOS_P57F_588dhh',\n 'WOS_P57F_588-2ahh',\n 'WOS_P57F_588-2bhh',\n 'WOS_P57F_588-2chh',\n 'WOS_P57F_588-2dhh',\n 'WOS_P57F_598ahh',\n 'WOS_P57F_598bhh',\n 'WOS_P57F_598chh',\n 'WOS_P57F_598dhh',\n 'WOS_P57F_598-2ahh',\n 'WOS_P57F_598-2bhh',\n 'WOS_P57F_598-2chh',\n 'WOS_P57F_598-2dhh',\n 'WOS_P57F_600hh',\n 'WOS_P57F_600-2hh',\n 'WOS_P57F_602hh',\n 'WOS_P57F_602-2hh',\n 'WOS_P57F_604ahh',\n 'WOS_P57F_604bhh',\n 'WOS_P57F_604chh',\n 'WOS_P57F_604dhh',\n 'WOS_P57F_604-2ahh',\n 'WOS_P57F_604-2bhh',\n 'WOS_P57F_604-2chh',\n 'WOS_P57F_604-2dhh',\n 'WOS_P57F_606hh',\n 'WOS_P57F_606-2hh',\n 'WOS_P57F_608hh',\n 'WOS_P57F_608-2hh',\n 'WOS_P57F_590av',\n 'WOS_P57F_590bv',\n 'WOS_P57F_590cv',\n 'WOS_P57F_590dv',\n 'WOS_P57F_590-2av',\n 'WOS_P57F_590-2bv',\n 'WOS_P57F_590-2cv',\n 'WOS_P57F_590-2dv',\n 'WOS_P57F_592av',\n 'WOS_P57F_592bv',\n 'WOS_P57F_592cv',\n 'WOS_P57F_592dv',\n 'WOS_P57F_592-2av',\n 'WOS_P57F_592-2bv',\n 'WOS_P57F_592-2cv',\n 'WOS_P57F_592-2dv',\n 'WOS_P57F_594av',\n 'WOS_P57F_594bv',\n 'WOS_P57F_594cv',\n 'WOS_P57F_594-2av',\n 'WOS_P57F_594-2bv',\n 'WOS_P57F_594-2cv',\n 'WOS_P57F_596av',\n 'WOS_P57F_596bv',\n 'WOS_P57F_596cv',\n 'WOS_P57F_596dv',\n 'WOS_P57F_596-2av',\n 'WOS_P57F_596-2bv',\n 'WOS_P57F_596-2cv',\n 'WOS_P57F_596-2dv',\n 'WOS_P57F_610av',\n 'WOS_P57F_610bv',\n 'WOS_P57F_610cv',\n 'WOS_P57F_610dv',\n 'WOS_P57F_610-2av',\n 'WOS_P57F_610-2bv',\n 'WOS_P57F_610-2cv',\n 'WOS_P57F_610-2dv',\n 'WOS_P57F_612av',\n 'WOS_P57F_612bv',\n 'WOS_P57F_612cv',\n 'WOS_P57F_612dv',\n 'WOS_P57F_612ev',\n 'WOS_P57F_612-2av',\n 'WOS_P57F_612-2bv',\n 'WOS_P57F_612-2cv',\n 'WOS_P57F_612-2dv',\n 'WOS_P57F_612-2ev',\n 'WOS_P57F_614av',\n 'WOS_P57F_614bv',\n 'WOS_P57F_614cv',\n 'WOS_P57F_614dv',\n 'WOS_P57F_614ev',\n 'WOS_P57F_614-2av',\n 'WOS_P57F_614-2bv',\n 'WOS_P57F_614-2cv',\n 'WOS_P57F_614-2dv',\n 'WOS_P57F_614-2ev',\n 'WOS_P57F_616av',\n 'WOS_P57F_616bv',\n 'WOS_P57F_616cv',\n 'WOS_P57F_616dv',\n 'WOS_P57F_616ev',\n 'WOS_P57F_616-2av',\n 'WOS_P57F_616-2bv',\n 'WOS_P57F_616-2cv',\n 'WOS_P57F_616-2dv',\n 'WOS_P57F_616-2ev',\n ],\n },\n {\n name: 'Multi Fold',\n description: 'See only multi-fold cards',\n products: [\n 'P1218_455A4v',\n 'WOS_P455A_F154',\n 'WOS_P455A_F178',\n 'WOS_P455A_F186',\n 'WOS_P455A_F190',\n 'WOS_P455A_F192',\n 'WOS_P455A_F202',\n 'WOS_P455A_F204',\n 'WOS_P455A_F212',\n 'WOS_P455A_F228',\n 'WOS_P455A_F236',\n 'WOS_P455A_F238',\n 'WOS_P455A_F242',\n 'WOS_P455A_F246',\n 'P455A_250',\n 'P455A_252',\n 'P455A_254',\n 'P455A_256',\n 'P455A_258',\n 'P455A_260',\n 'P455A_262',\n 'P455A_264',\n 'P455A_266',\n 'P455A_268',\n 'P455A_270',\n 'P455A_272',\n 'P455A_274',\n 'P1218_55TF',\n 'WOS_P55T_F154',\n 'WOS_P55T_F178',\n 'WOS_P55T_F186',\n 'WOS_P55T_F190',\n 'WOS_P55T_F192',\n 'WOS_P55T_F202',\n 'WOS_P55T_F204',\n 'WOS_P55T_F212',\n 'WOS_P55T_F228',\n 'WOS_P55T_F236',\n 'WOS_P55T_F238',\n 'WOS_P55T_F242',\n 'WOS_P55T_F246',\n 'P55T_250',\n 'P55T_252',\n 'P55T_254',\n 'P55T_256',\n 'P55T_258',\n 'P55T_260',\n 'P55T_262',\n 'P55T_264',\n 'P55T_266',\n 'P55T_268',\n 'P55T_270',\n 'P55T_272',\n 'P55T_274',\n ],\n },\n {\n name: 'Pop Out',\n description: 'See only pop out cards',\n products: [\n 'PCE1218_57Ph_PopOut-Round',\n 'WOS_PCE57P_F302v',\n 'WOS_PCE57P_F312v',\n 'WOS_PCE57P_F316v',\n 'PCE1218_57Ph_PopOut-Scalloped',\n 'WOS_PCE57P_F300v',\n 'WOS_PCE57P_F304v',\n 'WOS_PCE57P_F308v',\n 'WOS_PCE57P_F324v',\n 'PCE57P_332v',\n 'PCE1218_57Ph_PopOut-Tapered',\n 'WOS_PCE57P_F310v',\n 'WOS_PCE57P_F314v',\n 'WOS_PCE57P_F318v',\n 'PCE57P_330v',\n ],\n },\n ],\n },\n ],\n },\n};\n\nexport default CardsFilters;\n", "import { fromPairs, matchesProperty } from 'lodash';\n\nimport type { CanvasOptionConfiguration } from 'domains/canvases';\nimport type { OptionGroupAPIData } from 'domains/option_groups';\nimport type { Dictionary } from 'types/common_types';\n\n// Parses the options in a query param that are optionGroupId and optionId\n// joined by an underscore and separated by dashes\nexport function parseOptionQueryParam(param: string | null) {\n if (!param) return {};\n\n const pairs = param\n .split('-')\n .map((pair) => pair.split('_'))\n .map(([optionGroupId, optionId]) => [optionGroupId, parseInt(optionId)]);\n\n return fromPairs(pairs);\n}\n\n// Converts an options object {optionGroupId: optionId} to query param format\nexport function serializeOptionQueryParam(options: Dictionary<string | number>) {\n return Object.entries(options)\n .map((pair) => pair.join('_'))\n .join('-');\n}\n\nexport function hasAllRequiredOptionGroups(\n selected: CanvasOptionConfiguration,\n optionGroups: OptionGroupAPIData[]\n) {\n return optionGroups\n .filter((og) => og.required)\n .every((og) => {\n const optionId = selected[og.id];\n const asNum = typeof optionId === 'string' ? parseInt(optionId) : optionId;\n return optionId && !!og.options.find(matchesProperty('id', asNum));\n });\n}\n", "import activeEditor from 'domains/active_editor';\nimport catalogs from 'domains/catalogs';\nimport products from 'domains/products';\nimport subcatalogs from 'domains/subcatalogs';\nimport canvases from 'domains/canvases';\n\nimport { EDIT_CART_PRODUCT_PARAM, ROUTE_MAP } from 'utils/globals';\nimport { buildConfiguredURL, updateDocumentTitle } from 'utils/routing';\n\nimport selectors from './navigation.selectors';\nimport slice from './navigation.slice';\n\nimport type { AppThunk } from 'store/wos_store';\nimport type { NavigationRoute } from './navigation.types';\n\nfunction navigateTo(\n nextRoute: NavigationRoute | null,\n popStateTarget?: Window,\n shouldReplace?: boolean\n): AppThunk {\n return function navigateThunk(dispatch, getState) {\n const state = getState();\n const currentRoute = selectors.current(state);\n const wasEditorPopstate = selectors.wasEditorPopstate(state);\n const configuredPathHistory = selectors.history(state);\n const canvasIds = canvases.selectors.selectIds(state);\n\n const editCartItem = activeEditor.selectors.cartProductId(state);\n const isCartProduct = !!editCartItem;\n\n // When popstate occurs, we reconfigure the previous product at the bottom of this thunk\n // This triggers a configPath change, but we don't want to duplicate the route setting\n // So we break out early, but reset the redux state so future configs changes can continue\n if (wasEditorPopstate) {\n dispatch(slice.actions.setWasEditorPopstate(false));\n return;\n }\n\n const configPath = selectors.canvasConfigPath(state);\n const configParams = selectors.optionsQueryParam(state);\n const customSizeParam = selectors.customSizeQueryParam(state);\n\n const isPopState = !!popStateTarget;\n\n // If no next route, we're dealing with popstate from initial load so use that route\n const toRoute = nextRoute || state.navigation.initialRoute;\n\n const routeChange = `${currentRoute}-${toRoute}`;\n\n // Default to arg value, will also be set true on editor<->cart navigation when editing cart item\n // Or, use replace if we're configuring the first product from a non-fully-configured path\n let shouldUseReplaceState = shouldReplace || configuredPathHistory.length === 0;\n // Placeholder for history state update url\n let url;\n\n if (!isPopState) {\n switch (routeChange) {\n case 'editor-cart':\n url = ROUTE_MAP[toRoute];\n shouldUseReplaceState = isCartProduct ? true : shouldUseReplaceState;\n break;\n case 'catalogSelector-editor': // Not used since catalog selector uses hard links, but could be added here for no-reload selection\n case 'priceTool-editor':\n url = buildConfiguredURL(\n new URL(window.location.href),\n ROUTE_MAP.editor,\n configPath,\n configParams,\n customSizeParam\n );\n break;\n case 'cart-editor': {\n if (isCartProduct) {\n url = new URL(window.location.href);\n const urlParams = url.searchParams || new URLSearchParams();\n urlParams.set(EDIT_CART_PRODUCT_PARAM, editCartItem.toString());\n url.search = urlParams.toString();\n shouldUseReplaceState = true;\n } else {\n url = `${ROUTE_MAP.editor}${configPath}`;\n }\n break;\n }\n case 'priceTool-priceTool':\n shouldUseReplaceState = true;\n // intentional fallthrough\n case 'editor-editor': {\n url = new URL(window.location.href);\n url = buildConfiguredURL(\n url,\n ROUTE_MAP[toRoute],\n configPath,\n configParams,\n customSizeParam\n );\n\n if (canvasIds.length > 1) return;\n dispatch(slice.actions.addConfiguredPathHistory(configPath));\n break;\n }\n default:\n url = ROUTE_MAP[toRoute];\n break;\n }\n }\n\n // Reconfigure the previous product\n if (isPopState && routeChange === 'editor-editor') {\n const catalogIdsBySlug = catalogs.selectors.idsBySlug(state);\n const subcatalogIdsBySlug = subcatalogs.selectors.idsBySlug(state);\n const productIDsBySlug = products.selectors.bySlug(state);\n\n // first will be empty string, second will be \"c\"\n const [, , catalogSlug, subcatalogSlug, productSlug] =\n popStateTarget.location.pathname.split('/');\n\n const prevConfig = {\n catalog: catalogIdsBySlug[catalogSlug],\n subcatalog: subcatalogIdsBySlug[subcatalogSlug],\n product: productIDsBySlug[productSlug],\n };\n\n // Sets the flag that indicates the next config change should not update the route\n dispatch(slice.actions.setWasEditorPopstate(true));\n dispatch(canvases.actions.changeActiveCanvasConfig.multi(prevConfig));\n }\n\n // We don't want to touch the history if this navigation was triggered by a popstate event\n if (!isPopState) {\n if (shouldUseReplaceState) {\n window.history.replaceState({ route: nextRoute }, '', url);\n } else {\n window.history.pushState({ route: nextRoute }, '', url);\n }\n }\n\n // Update the title of the document\n updateDocumentTitle(toRoute);\n\n // Always udpate the current route in state when we're done with all other configurations\n dispatch(slice.actions.updateCurrentRoute(toRoute));\n };\n}\n\nexport default {\n navigateTo,\n};\n", "import {\n HEIGHT_PARAM,\n OPTIONS_PARAM,\n ROUTE_MAP,\n WIDTH_PARAM,\n DOCUMENT_TITLES,\n CHECKOUT_TITLE,\n} from 'utils/globals';\n\nimport type { AppDispatch } from 'store/wos_store';\nimport type { NavigateThunk, NavigationRoute, NavigationRouteMap } from 'domains/navigation';\n\nexport function buildConfiguredURL(\n url: URL,\n root: string,\n configPath?: string,\n configParams?: string,\n customSizeParam?: string\n) {\n const updateURL = new URL(url);\n const urlParams = new URLSearchParams(url.search);\n\n if (configPath) {\n updateURL.pathname = `${root}${configPath}`;\n }\n\n if (configParams) {\n urlParams.set(OPTIONS_PARAM, configParams);\n } else {\n urlParams.delete(OPTIONS_PARAM);\n }\n\n if (customSizeParam) {\n new URLSearchParams(customSizeParam).forEach((value, param) => urlParams.set(param, value));\n } else {\n urlParams.delete(HEIGHT_PARAM);\n urlParams.delete(WIDTH_PARAM);\n }\n\n updateURL.search = urlParams.toString();\n return updateURL;\n}\n\nfunction findRouteNameByRootPath(root: string) {\n let routeName: NavigationRoute = 'catalogSelector';\n\n const routeEntries = Object.entries(ROUTE_MAP) as [NavigationRoute, string][];\n\n routeEntries.forEach(([name, path]) => {\n const pathStr = path.split('/').filter((p) => !!p)[0];\n\n if (pathStr === root) {\n routeName = name;\n }\n });\n\n return routeName;\n}\n\n// Decides how to dispatch navigation if product configuration changes\nexport function handleConfigurationRouteChange(\n configChange: string,\n dispatch: AppDispatch,\n actionCreator: NavigateThunk\n) {\n const root = window.location.pathname.split('/').filter((path) => !!path)[0];\n if (configChange !== '' && (root === 'price-tool' || root === 'c')) {\n const route = findRouteNameByRootPath(root);\n dispatch(actionCreator(route));\n }\n}\n\nexport function updateDocumentTitle(route: keyof NavigationRouteMap | 'checkout') {\n const current = window.document.title.split('|');\n let title: string | undefined;\n\n if (route === 'checkout') {\n title = CHECKOUT_TITLE;\n } else {\n title = DOCUMENT_TITLES[route];\n }\n\n if (title) {\n current[0] = `${title} `;\n window.document.title = current.join('|');\n }\n}\n", "export type NavigationSliceInitialState = {\n routes: NavigationRoutes;\n initialRoute: NavigationRoute;\n wasEditorPopstate: boolean;\n configuredPathHistory: string[];\n};\n\nexport type NavigationRouteMap = {\n catalogSelector: string;\n cart: string;\n projects: string;\n editor: string;\n priceTool: string;\n};\n\nexport type NavigationRoute = keyof NavigationRouteMap;\nexport type NavigationRoutes = { [Property in NavigationRoute]: boolean };\n\nexport type InitializeNavigationPayload = {\n [Property in NavigationRoute]?: boolean;\n};\n\nexport type NavigationHistoryState = { route: NavigationRoute };\n", "import Wos from './Wos';\n\nexport default Wos;\n", "import React, { useEffect, useMemo } from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport { CATALOG_SELECTOR_DATA } from 'utils/globals';\n\nimport crops from 'domains/crops';\nimport ui from 'domains/ui';\nimport navigation from 'domains/navigation';\nimport cartProductCreator from 'domains/cart_product_creator';\n\nimport { useWosRouting } from 'utils/hooks';\n\nimport CatalogSelector from 'components/pages/CatalogSelector';\nimport WOSSiteHeader from 'components/features/WOSSiteHeader';\nimport PriceTool from 'components/pages/PriceTool';\nimport CartPage from 'components/pages/CartPage';\nimport EditorPage from 'components/pages/EditorPage';\nimport Projects from 'components/pages/Projects';\nimport SiteMessage from 'components/shared/SiteMessage';\n\nconst categories = CATALOG_SELECTOR_DATA;\n\nfunction Wos() {\n /*\n * Redux values\n */\n const dispatch = useAppDispatch();\n const potentialCropIds = useAppSelector(crops.selectors.potentialCropIds);\n const addToCartSuccess = useAppSelector(cartProductCreator.selectors.wasSuccessful);\n const addToCartWasEdit = useAppSelector(cartProductCreator.selectors.wasEdit);\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n\n const showAdvancedFilters = useAppSelector(ui.selectors.showAdvancedFilters);\n const siteMessage = useAppSelector(ui.selectors.siteMessage);\n const hideBranding = useAppSelector(ui.selectors.hideBranding);\n const showFilenames = useAppSelector(ui.selectors.showFilenames);\n const theme = useAppSelector(ui.selectors.theme);\n\n // Routing\n const showCatalogSelector = useAppSelector(navigation.selectors.showCatalogSelector);\n const showEditor = useAppSelector(navigation.selectors.showEditor);\n const showCart = useAppSelector(navigation.selectors.showCart);\n const showPriceTool = useAppSelector(navigation.selectors.showPriceTool);\n const showProjects = useAppSelector(navigation.selectors.showProjects);\n\n // Custom hook for handling history state\n useWosRouting();\n\n // Reconcile crops with potential cropIds, if product changes and no longer has same image node UID\n useEffect(() => {\n dispatch(crops.actions.reconcileCrops());\n }, [dispatch, potentialCropIds]);\n\n useEffect(() => {\n if (showCatalogSelector) {\n dispatch(crops.actions.resetCrops());\n }\n }, [dispatch, showCatalogSelector]);\n\n useEffect(() => {\n if (addToCartSuccess) {\n dispatch(cartProductCreator.actions.resetAddToCartSuccess());\n\n if (addToCartWasEdit || hasMobileNavigation) {\n dispatch(navigation.actions.navigateTo('cart'));\n }\n }\n }, [dispatch, addToCartSuccess, addToCartWasEdit, hasMobileNavigation]);\n\n const siteMessageEnabled = useMemo(() => siteMessage.enabled, [siteMessage]);\n\n function closeSiteMessage() {\n dispatch(ui.actions.setSiteMessage({}));\n }\n\n const containerClassnames = useMemo(() => {\n const classNames = [\n { on: siteMessageEnabled, name: 'show-site-message' },\n { on: hideBranding, name: 'hideBranding' },\n { on: showFilenames, name: 'showFilenames' },\n { on: showCatalogSelector, name: 'show-catalog-selector' },\n ];\n\n return classNames\n .filter((c) => c.on)\n .map((c) => c.name)\n .join(' ');\n }, [siteMessageEnabled, hideBranding, showFilenames, showCatalogSelector]);\n\n return (\n <div className={`wos_container ${containerClassnames}`}>\n <WOSSiteHeader />\n {siteMessage.enabled && (\n <SiteMessage siteMessage={siteMessage} closeSiteMessage={closeSiteMessage} />\n )}\n <div\n id=\"main-content\"\n className={`main_content theme-${theme}${hasMobileNavigation ? ' mobile' : ''}${\n showAdvancedFilters ? ' advanced-filters' : ''\n }`}\n >\n {showCatalogSelector && <CatalogSelector categories={categories || []} />}\n {showCart && <CartPage />}\n {showProjects && <Projects />}\n {showPriceTool && <PriceTool />}\n {showEditor && <EditorPage />}\n </div>\n </div>\n );\n}\n\nexport default Wos;\n", "import { useState, useEffect } from 'react';\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\nimport { partialRight } from 'lodash';\n\nimport WosResizeObserver from 'utils/observer_util';\nimport { handleConfigurationRouteChange } from 'utils/routing';\n\nimport navigation from 'domains/navigation';\nimport canvasModule from 'domains/canvases';\n\nimport type { RootState, AppDispatch } from 'store/wos_store';\nimport type { LGRootState, LGAppDispatch } from 'store/link_generator_store';\nimport type { NavigationHistoryState } from 'domains/navigation';\nimport type { CheckoutRootState } from 'store/checkout_store';\nimport type { CheckoutStatus } from 'domains/checkout';\n\n// Need to use these typed hooks throughout app instead of Redux ones\ntype DispatchFunc = () => AppDispatch;\nexport const useAppDispatch: DispatchFunc = useDispatch;\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\n\n// For use with slices that are only in checkout store\nexport const useAppSelectorCheckout: TypedUseSelectorHook<CheckoutRootState> = useSelector;\n\n// These are the typed dispatch/selector hooks for the linkGenerator store\ntype DispatchFuncLG = () => LGAppDispatch;\nexport const useAppDispatchLG: DispatchFuncLG = useDispatch;\nexport const useAppSelectorLG: TypedUseSelectorHook<LGRootState> = useSelector;\n\n/** @deprecated */\nexport function useCheckoutDisclosureHandler(startOpen: boolean, status: CheckoutStatus) {\n const [isOpen, setIsOpen] = useState(startOpen);\n const [willClose, setWillClose] = useState(false);\n\n useEffect(() => {\n if (status === 'pending') {\n setWillClose(true);\n }\n\n if (status === 'error') {\n setWillClose(false);\n }\n\n if ((status === 'idle' || status === 'success') && willClose) {\n setWillClose(false);\n setIsOpen(false);\n }\n }, [status, willClose]);\n\n return { isOpen, setIsOpen };\n}\n\nexport function useDebounce(value: number | string, delay: number) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]); // Only re-call effect if value or delay changes\n\n return debouncedValue;\n}\n\n// Returns the height & width of any given element\nexport function useResizeObserver(elementId: string) {\n const [dimensions, setDimensions] = useState({ height: 0, width: 0 });\n\n function handleResize(resizeObserverEntries: ResizeObserverEntry[]) {\n let width = 0;\n let height = 0;\n // Handle various browser/polyfill ResizeObserverEntry data structures\n // eslint-disable-next-line no-restricted-syntax\n for (const entry of resizeObserverEntries) {\n // Checking for instanceof Array due to bug in firefox versions < 82\n // https://github.com/mdn/browser-compat-data/issues/8730\n if (entry.contentBoxSize && entry.contentBoxSize instanceof Array) {\n width = entry.contentBoxSize[0].inlineSize;\n height = entry.contentBoxSize[0].blockSize;\n } else {\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n }\n\n setDimensions({ width, height });\n }\n\n useEffect(() => {\n const observer = new WosResizeObserver();\n const element = document.getElementById(elementId);\n\n if (element) {\n observer.observe(handleResize, element);\n }\n\n return () => {\n observer.disconnect();\n };\n }, [elementId]);\n\n return dimensions;\n}\n\n// Custom hook for use in WOS Provider for managing history states\nexport function useWosRouting() {\n const configPath = useAppSelector(navigation.selectors.canvasConfigPath);\n const configParams = useAppSelector(navigation.selectors.optionsQueryParam);\n const customSizeParam = useAppSelector(navigation.selectors.customSizeQueryParam);\n const canvasIds = useAppSelector(canvasModule.selectors.selectIds);\n const dispatch = useAppDispatch();\n\n // If the catalog/subcatalog/product changes, insert a new history item\n // Don't try to do this if we have multiple canvases, gets too noisy\n useEffect(() => {\n if (canvasIds.length > 1) return;\n handleConfigurationRouteChange(configPath, dispatch, navigation.actions.navigateTo);\n }, [configPath, canvasIds, dispatch]);\n\n // If any options change, replace the previous history item\n useEffect(() => {\n const partialNavigate = partialRight(navigation.actions.navigateTo, null, true);\n handleConfigurationRouteChange(configParams, dispatch, partialNavigate);\n }, [configParams, dispatch]);\n\n // If custom size exists and changes, replace previous history item\n useEffect(() => {\n const partialNavigate = partialRight(navigation.actions.navigateTo, null, true);\n handleConfigurationRouteChange(customSizeParam, dispatch, partialNavigate);\n }, [customSizeParam, dispatch]);\n\n // Handle back/forward state\n useEffect(() => {\n function handlePopState(e: PopStateEvent) {\n const target = e.target as Window;\n const state: NavigationHistoryState | null = e.state;\n const nextRoute = state ? state.route : null;\n dispatch(navigation.actions.navigateTo(nextRoute, target));\n }\n\n window.addEventListener('popstate', handlePopState);\n\n return function cleanup() {\n window.removeEventListener('popstate', handlePopState);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n", "import { debounce } from 'lodash';\n\nexport default class WosResizeObserver {\n observer: ResizeObserver;\n\n observe(fn: ResizeObserverCallback, el: HTMLElement) {\n this.observer = new window.ResizeObserver(debounce(fn, 150));\n this.observer.observe(el);\n }\n\n disconnect() {\n this.observer.disconnect();\n }\n}\n", "import actions from './crops.actions';\nimport selectors from './crops.selectors';\nimport slice from './crops.slice';\nimport utils from './crops.utils';\n\nimport * as thunks from './crops.thunks';\n\nexport * from './crops.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions, ...thunks },\n selectors,\n utils,\n};\n\nexport { default as slice } from './crops.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type {\n RestoreCartProductPhoto,\n FetchCropPhotoFailedPayload,\n FetchCropPhotoPayload,\n CropEntity,\n} from './crops.types';\n\nconst fetchCropPhoto = {\n fulfilled: createAction<FetchCropPhotoPayload>('crops/fetchCropPhoto/fulfilled'),\n rejected: createAction<FetchCropPhotoFailedPayload>('crops/fetchCropPhoto/rejected'),\n};\n\nconst fetchCropFilterPhoto = {\n fulfilled: createAction<FetchCropPhotoPayload>('crops/fetchCropFilterPhoto/fulfilled'),\n rejected: createAction<FetchCropPhotoFailedPayload>('crops/fetchCropFilterPhoto/rejected'),\n};\n\nconst restoreCartProductPhotoCrops = {\n pending: createAction<RestoreCartProductPhoto[]>('crops/restoreCartProductPhotoCrops/pending'),\n fulfilled: createAction<CropEntity[]>('crops/restoreCartProductPhotoCrops/fulfilled'),\n};\n\nexport default {\n fetchCropPhoto,\n fetchCropFilterPhoto,\n restoreCartProductPhotoCrops,\n};\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\nimport { round } from 'lodash';\n\nimport { notNull, validCrop } from 'utils/type_guards';\nimport { calculateBoundDimension } from 'utils/bounds_util';\nimport { byId } from 'utils/common';\n\nimport canvases from 'domains/canvases';\nimport activeEditor from 'domains/active_editor';\nimport products from 'domains/products';\nimport photoModule from 'domains/photos';\nimport optionGroups from 'domains/option_groups';\n\nimport slice from './crops.slice';\nimport cropsAdapter from './crops.adapter';\nimport utils from './crops.utils';\n\nimport type { RootState } from 'store/wos_store';\nimport type { PhotoUpload } from 'domains/photos';\nimport type { CanvasConfiguration } from 'domains/canvases';\nimport type { CartProductForCreate } from 'domains/cart_products';\nimport type { PickRequired } from 'types/common_types';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst defaultSelectors = cropsAdapter.getSelectors();\n\nconst selectActiveImageNodeUid = (state: LocalState) => state.activeNodeUid;\n\nconst selectPhotoByCropId = (state: RootState, cropId: string) => {\n const crop = state.crops.entities[cropId];\n let photo: PhotoUpload | undefined;\n\n if (crop) {\n photo = state.photos.entities[crop.photoId];\n }\n\n return photo;\n};\n\nconst selectCropsByCanvasId = createSelector(\n [compose(defaultSelectors.selectAll, localState), (_: RootState, canvasId: string) => canvasId],\n (crops, canvasId) => crops.filter((crop) => crop.canvasId === canvasId)\n);\n\nconst selectActiveCrop = (state: RootState) => {\n const activeCanvasId = activeEditor.selectors.canvasId(state);\n const activeNodeUid = selectActiveImageNodeUid(localState(state));\n\n if (!activeCanvasId || !activeNodeUid) return null;\n\n const cropId = utils.buildCropId(activeCanvasId, activeNodeUid);\n\n return defaultSelectors.selectById(localState(state), cropId);\n};\n\nconst selectActiveNodePhoto = (state: RootState) => {\n const activeCanvasId = activeEditor.selectors.canvasId(state);\n const activeNodeUid = selectActiveImageNodeUid(localState(state));\n\n if (!activeCanvasId || !activeNodeUid) return null;\n\n const cropId = utils.buildCropId(activeCanvasId, activeNodeUid);\n\n return selectPhotoByCropId(state, cropId);\n};\n\nconst selectCropBlobSrc = (state: LocalState, cropId: string) => {\n const crop = defaultSelectors.selectById(state, cropId);\n return crop?.blobSrc ?? '';\n};\n\nconst selectPotentialCropIds = createSelector(\n [canvases.selectors.selectAll, products.selectors.selectEntities],\n (allCanvases, productsById) => {\n return allCanvases\n .flatMap((c) => {\n if (!c.product) return null;\n\n const canvasId = c.id;\n const product = productsById[c.product];\n\n if (!product) return null;\n\n const imageNodes = product.nodes.filter((n) => n.node_type === 1);\n return imageNodes.map((n) => utils.buildCropId(canvasId, n.uid));\n })\n .filter(notNull);\n }\n);\n\nconst selectCropPhotoLoading = (state: LocalState, cropId: string) => {\n const crop = defaultSelectors.selectById(state, cropId);\n return !!crop && !!crop.photoId && !crop.photoLoaded;\n};\n\nconst selectCropPhotoLoaded = (state: LocalState, cropId: string) => {\n const crop = defaultSelectors.selectById(state, cropId);\n return !!crop && crop.photoLoaded;\n};\n\nconst selectActiveNodeCropPhotoLoaded = (state: RootState) => {\n const activeCanvasId = activeEditor.selectors.canvasId(state);\n const { activeNodeUid } = state.crops;\n\n if (!activeCanvasId || !activeNodeUid) return null;\n\n const cropId = utils.buildCropId(activeCanvasId, activeNodeUid);\n return selectCropPhotoLoaded(localState(state), cropId);\n};\n\nconst selectCropNodeDimensions = (state: RootState, cropId: string) => {\n const { canvasId, nodeUid } = utils.parseCropId(cropId);\n\n const canvas = canvases.selectors.selectById(state, canvasId);\n if (!canvas || !canvas.product) return null;\n\n const product = products.selectors.selectById(state, canvas.product);\n if (!product) return null;\n\n const productNode = product.nodes.find((node) => node.uid === nodeUid);\n if (!productNode) return null;\n\n const optionEntries = canvas.options ? Object.entries(canvas.options) : [];\n const overrideNode = optionEntries\n .map(([optionGroupId, optionId]) =>\n optionGroups.selectors.selectById(state, optionGroupId)?.options.find(byId(optionId))\n )\n .filter(notNull)\n .flatMap((option) => option.nodes)\n .filter((node) => node.uid === nodeUid)\n .map(canvases.utils.formatAsOverrideNode)\n .reduce((acc, override) => ({ ...acc, ...override }), {});\n\n const node = { ...productNode, ...overrideNode };\n\n const [, , w, h] = node.bounds.split(',');\n\n return {\n width: calculateBoundDimension(w, 'image', product, canvas),\n height: calculateBoundDimension(h, 'image', product, canvas),\n };\n};\n\nconst selectCropsForCreateCartProduct = (\n state: RootState,\n canvas: PickRequired<CanvasConfiguration, 'product'>\n): CartProductForCreate['cart_photos_attributes'] => {\n const canvasId = canvas.id;\n const crops = selectCropsByCanvasId(state, canvasId);\n const photosById = photoModule.selectors.selectEntities(state);\n\n return crops.map((crop) => {\n if (!validCrop(crop)) throw new Error('Invalid Crop Data');\n\n const photo = photosById[crop.photoId];\n if (!photo) throw new Error('No Photo for Provided ID');\n\n const node = products.selectors.findNode(state, canvas.product, crop.nodeUid);\n if (!node) throw new Error('Product or Node Not Found');\n\n return {\n node_id: node.id,\n external_asset_id: crop.photoId,\n filename: photo.original_filename,\n url: photo.ink_url,\n rotation: crop.rotation,\n style_filter: utils.cropFilterForCartProduct(crop.filter),\n crop: {\n x: round(crop.cropX * 100, 6),\n y: round(crop.cropY * 100, 6),\n w: round(crop.cropW * 100, 6),\n h: round(crop.cropH * 100, 6),\n },\n };\n });\n};\n\nexport default {\n ...cropsAdapter.getSelectors(localState),\n activeImageNode: compose(selectActiveImageNodeUid, localState),\n photoLoading: (state: GlobalState, id: string) => selectCropPhotoLoading(localState(state), id),\n photoLoaded: (state: GlobalState, id: string) => selectCropPhotoLoaded(localState(state), id),\n cropBlobSrc: (state: GlobalState, id: string) => selectCropBlobSrc(localState(state), id),\n\n // Already globalized\n photoByCropId: selectPhotoByCropId,\n cropsForCanvasId: selectCropsByCanvasId,\n activeCrop: selectActiveCrop,\n activeNodePhoto: selectActiveNodePhoto,\n activeNodePhotoLoaded: selectActiveNodeCropPhotoLoaded,\n potentialCropIds: selectPotentialCropIds,\n nodeDimensions: selectCropNodeDimensions,\n forCreateCartProduct: selectCropsForCreateCartProduct,\n};\n", "import slice from './photos.slice';\nimport actions from './photos.actions';\nimport selectors from './photos.selectors';\n\nexport * from './photos.types';\n\nconst allActions = { ...actions, ...slice.actions };\n\nconst module = {\n actions: allActions,\n selectors,\n};\n\nexport { default as slice } from './photos.slice';\n\nexport default module;\n", "import { createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nimport actions from './photos.actions';\nimport photosAdapter from './photos.adapter';\n\nimport type { PhotosSliceInitialState, PhotoUpload, CollectionName } from './photos.types';\n\nconst initialState: PhotosSliceInitialState = {\n status: 'idle',\n activeCollection: null,\n newUploadsCollection: '',\n};\n\nconst slice = createSlice({\n name: 'photos',\n initialState: photosAdapter.getInitialState(initialState),\n reducers: {\n reset: () => photosAdapter.getInitialState(initialState),\n // addPhotos/addMany are not functionally different, just not ready to refactor addPhotos right now\n addPhotos(state, { payload }: PayloadAction<PhotoUpload[]>) {\n return photosAdapter.addMany(state, payload);\n },\n addMany: photosAdapter.addMany,\n updateOne: photosAdapter.updateOne,\n updateMany: photosAdapter.updateMany,\n setActiveCollection(state, { payload }: PayloadAction<CollectionName>) {\n return { ...state, activeCollection: payload };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.getAll.fulfilled, (state, { payload }) => {\n return photosAdapter.addMany(state, payload);\n })\n .addCase(actions.update.fulfilled, (state, { payload }) => {\n return photosAdapter.updateOne(state, { id: payload.id, changes: payload });\n })\n .addCase(actions.update.rejected, (state) => {\n return { ...state, status: 'error' };\n })\n .addCase(actions.removePhoto.fulfilled, (state, { payload }) => {\n const update = photosAdapter.removeOne(state, payload.id);\n update.status = 'idle';\n return update;\n })\n .addCase(actions.removeManyPhotos.fulfilled, (state, { payload }) => {\n const update = photosAdapter.removeMany(state, payload);\n update.status = 'idle';\n return update;\n })\n .addCase(actions.uploadPhotos.fulfilled, (state, { payload }) => {\n const update = photosAdapter.addMany(state, payload);\n update.status = 'idle';\n\n if (payload[0].collection) {\n update.activeCollection = payload[0].collection;\n }\n\n return update;\n })\n .addCase(actions.renameCollectionPhotos.fulfilled, (state, { payload }) => {\n const changes = payload.map(({ id, collection }) => ({ id, changes: { collection } }));\n const update = photosAdapter.updateMany(state, changes);\n update.activeCollection = payload[0].collection;\n return update;\n })\n .addCase(actions.createNewCollection, (state, { payload }) => {\n if (payload.action === 'create_from_upload') {\n return { ...state, newUploadsCollection: payload.name };\n }\n });\n },\n});\n\nexport default slice;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport { createAPIActions } from 'utils/common';\n\nimport type { PickerFileMetadata } from 'filestack-js';\nimport type { PhotoUpload, CollectionName, PendingCollectionAction } from './photos.types';\nimport type { PickRequired } from 'types/common_types';\n\ntype PhotoUpdateParams = PickRequired<Partial<PhotoUpload>, 'id'>;\n\ntype UploadPhotosPayload = {\n uploads: PickerFileMetadata[];\n collection: string;\n};\n\ntype SortPhotoPayload = {\n insertPhotoId: number;\n beforeIndex: number;\n};\n\ntype RenameCollectionPayload = {\n current: CollectionName;\n change: string;\n};\n\ntype CreateCollectionPayload = {\n name: string;\n action: PendingCollectionAction;\n donorIds: number[];\n};\n\nconst getAll = createAPIActions<void, PhotoUpload[]>('photos', 'getAll');\n\nconst uploadPhotos = {\n pending: createAction<UploadPhotosPayload>('photos/uploadPhotos/pending'),\n fulfilled: createAction<PhotoUpload[]>('photos/uploadPhotos/fulfilled'),\n rejected: createAction('photos/uploadPhotos/rejected'),\n};\n\nconst renameCollectionPhotos = createAPIActions<RenameCollectionPayload, PhotoUpload[]>(\n 'photos',\n 'renameCollectionPhotos'\n);\nconst sortPhotos = createAction<SortPhotoPayload>('photos/sortPhotos');\nconst createNewCollection = createAction<CreateCollectionPayload>('photos/createNewCollection');\nconst moveUncollectedToCollection = createAction<string>('photos/moveUncollected');\nconst removeAllForCollection = createAction<string>('photos/removeAllForCollection');\n\nconst update = createAPIActions<PhotoUpdateParams, PhotoUpdateParams>('photos', 'update');\n\nconst removePhoto = createAPIActions<number, PhotoUpload>('photos', 'removePhoto');\n\nconst removeManyPhotos = {\n pending: createAction<number[]>('photos/removeManyPhotos/pending'),\n fulfilled: createAction<number[]>('photos/removeManyPhotos/fulfilled'),\n rejected: createAction('photos/removeManyPhotos/rejected'),\n};\n\nexport default {\n getAll,\n uploadPhotos,\n renameCollectionPhotos,\n sortPhotos,\n createNewCollection,\n removePhoto,\n removeManyPhotos,\n removeAllForCollection,\n update,\n moveUncollectedToCollection,\n};\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { PhotoUpload } from './photos.types';\n\nconst photosAdapter = createEntityAdapter<PhotoUpload>({\n sortComparer: (a, b) => a.sort_index - b.sort_index,\n});\n\nexport default photosAdapter;\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\nimport { groupBy } from 'lodash';\n\nimport slice from './photos.slice';\nimport photosAdapter from './photos.adapter';\n\nimport type {\n PhotoUpload,\n NamedCollection,\n UncollectedCollection,\n CollectionName,\n} from './photos.types';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\n// Localized Selectors\nconst defaultSelectors = photosAdapter.getSelectors();\n\nconst selectActiveCollection = (state: LocalState) => state.activeCollection;\nconst selectNewUploadsCollection = (state: LocalState) => state.newUploadsCollection;\n\nconst selectPhotosForCollection = (state: LocalState, collection?: string | null) => {\n if (collection === undefined) return [];\n\n return state.ids\n .map((id) => state.entities[id] as PhotoUpload)\n .filter((p) => p.collection === collection);\n};\n\nconst selectAllPhotosForActiveCollection = createSelector(\n [defaultSelectors.selectAll, selectActiveCollection],\n (all, collection) => all.filter((p) => p.collection === collection)\n);\n\nconst selectUncollectedPhotos = createSelector([defaultSelectors.selectAll], (phs) => {\n return phs.filter((p) => p.collection === null);\n});\n\nconst selectUncollectedCollection = createSelector(\n [selectUncollectedPhotos],\n (uncollectedPhotos) => {\n return {\n name: null,\n count: uncollectedPhotos.length,\n thumb: uncollectedPhotos.length > 0 ? uncollectedPhotos[0].file_path_thumb : null,\n } as UncollectedCollection;\n }\n);\n\nconst selectAllNamedCollections = createSelector([defaultSelectors.selectAll], (allPhotos) => {\n const namedCollectionPhotos = allPhotos.filter((p) => p.collection !== null);\n const photosByCollection = groupBy(namedCollectionPhotos, 'collection');\n return Object.entries(photosByCollection).map(([collection, collectionPhotos]) => {\n return {\n name: collection,\n count: collectionPhotos.length,\n thumb: collectionPhotos[0].file_path_thumb,\n } as NamedCollection;\n });\n});\n\nconst selectNamedCollectionNames = createSelector([selectAllNamedCollections], (collections) => {\n return collections.map((c) => c.name);\n});\n\n// Globalized selectors\nexport default {\n ...photosAdapter.getSelectors(localState),\n activeCollection: compose(selectActiveCollection, localState),\n allForActiveCollection: compose(selectAllPhotosForActiveCollection, localState),\n allForCollection: (state: GlobalState, collection?: CollectionName) =>\n selectPhotosForCollection(localState(state), collection),\n allCollectionNames: compose(selectNamedCollectionNames, localState),\n allNamedCollections: compose(selectAllNamedCollections, localState),\n allUncollected: compose(selectUncollectedPhotos, localState),\n newUploadsCollection: compose(selectNewUploadsCollection, localState),\n uncollectedCollection: compose(selectUncollectedCollection, localState),\n};\n", "import type { LoadingStatus } from 'types/common_types';\n\nexport type CollectionName = string | null;\n\nexport type Collection = { name: CollectionName; count: number; thumb: string | null };\nexport type UncollectedCollection = Collection & { name: null };\nexport type NamedCollection = Collection & { name: string; thumb: string };\n\nexport type PendingCollectionAction =\n | 'create_from_upload'\n | 'create_from_existing'\n | 'create_from_orphans';\n\nexport type PhotoUpload = {\n id: number;\n session_id: string;\n ink_url: string;\n created_at: string;\n updated_at: string;\n file_path_thumb: string;\n file_path_1024: string;\n file_path_1024_bw: string;\n file_path_1024_sepia1: string;\n file_path_1024_sepia2: string;\n file_path_thumb_bw: string;\n file_path_thumb_sepia1: string;\n file_path_thumb_sepia2: string;\n customer_id: string;\n original_filename: string;\n is_archived: boolean;\n adjusted_filename: string | null;\n sort_index: number;\n collection: CollectionName;\n};\n\nexport type PhotosSliceInitialState = {\n status: LoadingStatus;\n /** Name of the collection in the filmstrip */\n activeCollection: CollectionName;\n /** Name of collection to assign newly uploaded photos */\n newUploadsCollection: string;\n};\n", "import { EntityState, PayloadAction, createSlice } from '@reduxjs/toolkit';\nimport { round } from 'lodash';\n\nimport { deconstructCropData } from 'utils/crop_data';\nimport { clampCropPanToLimit, fitImageToNode } from 'utils/pan_util';\nimport canvases from 'domains/canvases';\nimport photoModule from 'domains/photos';\nimport { notNull } from 'utils/type_guards';\n\nimport cropsAdapter from './crops.adapter';\nimport utils from './crops.utils';\nimport actions from './crops.actions';\n\nimport type {\n CreateCropPayload,\n CropDimensionsPayload,\n CropEntity,\n CropPhotoLoadedPayload,\n CropsSliceInitialState,\n FilterCropPayload,\n PanCropPayload,\n RestoreArrangementCropsPayload,\n RotateCropPayload,\n ZoomCropPayload,\n} from './crops.types';\n\nconst initialState: CropsSliceInitialState = {\n activeNodeUid: null,\n};\n\nfunction cropIdsForPhotoId(entities: EntityState<CropEntity>['entities'], photoId: number) {\n return Object.values(entities)\n .filter((crop: CropEntity) => crop.photoId === photoId)\n .map((crop: CropEntity) => crop.id);\n}\n\nconst crops = createSlice({\n name: 'crops',\n initialState: cropsAdapter.getInitialState(initialState),\n reducers: {\n setActiveImageNode(state, { payload }: PayloadAction<string>) {\n return {\n ...state,\n activeNodeUid: payload,\n };\n },\n createCrop(state, { payload }: PayloadAction<CreateCropPayload>) {\n const { canvasId, photoId, nodeUid } = payload;\n\n const cropId = utils.buildCropId(canvasId, nodeUid);\n\n return cropsAdapter.setOne(state, {\n id: cropId,\n canvasId,\n nodeUid,\n photoId,\n filter: 'original',\n rotation: 0,\n zoom: 1,\n photoLoaded: false,\n });\n },\n restoreArrangementCrops(state, { payload }: PayloadAction<RestoreArrangementCropsPayload[]>) {\n const deconstructedCrops: CropEntity[] = payload.map((crop) => {\n const {\n canvas_id: canvasId,\n ordering_upload_id: photoId,\n node_uid: nodeUid,\n blobSrc,\n } = crop;\n\n const photoCrop = deconstructCropData(crop);\n\n return {\n ...photoCrop,\n fitCropH: round(photoCrop.cropH * photoCrop.zoom, 4),\n fitCropW: round(photoCrop.cropW * photoCrop.zoom, 4),\n id: utils.buildCropId(canvasId, nodeUid),\n canvasId,\n nodeUid,\n photoId,\n blobSrc,\n restore: true,\n photoLoaded: false,\n };\n });\n\n let update = cropsAdapter.removeAll(state);\n update = cropsAdapter.addMany(update, deconstructedCrops);\n return update;\n },\n initCropDimensions(state, { payload }: PayloadAction<CropDimensionsPayload>) {\n const { canvasId, nodeUid, nodeDimension, imageDimensions } = payload;\n const { height: imageH, width: imageW } = imageDimensions;\n const cropId = utils.buildCropId(canvasId, nodeUid);\n\n const crop = state.entities[cropId];\n\n if (!crop) return state;\n\n /**\n *\n * Quick patch for when moving from cart to editor with an existing crop\n * The image loads immediately, before the node has been rendered, but there is already enough crop data\n * When node dimension updates have been moved to epics, this will be unnecessary\n */\n if (nodeDimension.height === 0 || nodeDimension.width === 0) {\n return state;\n }\n\n const { fitCropH, fitCropW } = fitImageToNode(nodeDimension, imageDimensions);\n\n // If we have fit crop data, and the new fit crop data matches, leave the crops alone\n // Most commonly this happens when loading a filtered image\n if (\n crop.fitCropH &&\n crop.fitCropW &&\n crop.fitCropH === fitCropH &&\n crop.fitCropW === fitCropW\n ) {\n return state;\n }\n\n // Set up the initial data for a crop\n const cropData = {\n originalW: imageW,\n originalH: imageH,\n nodeAspectRatio: utils.roundAspectRatio(nodeDimension),\n fitCropH,\n cropH: fitCropH,\n fitCropW,\n cropW: fitCropW,\n cropX: 0.5,\n cropY: 0.5,\n zoom: 1,\n };\n\n cropsAdapter.updateOne(state, {\n id: cropId,\n changes: { ...cropData },\n });\n },\n panCrop(state, { payload }: PayloadAction<PanCropPayload>) {\n const { canvasId, nodeUid, movementX, movementY, flipTrackingDirection } = payload;\n const cropId = utils.buildCropId(canvasId, nodeUid);\n const crop = state.entities[cropId];\n // Certain touch devices (Apple mostly) allow dragging from the edge to navigate browser back/forward\n // This can still trigger the events used to dispatch this action\n // So just return early if we don't have a crop\n if (!crop) return state;\n\n const { cropX, cropY, cropW, cropH } = crop;\n if (!notNull(cropX) || !notNull(cropY) || !cropW || !cropH) return state;\n\n let newCropX = cropX;\n let newCropY = cropY;\n\n if (flipTrackingDirection) {\n newCropX += movementX;\n newCropY += movementY;\n } else {\n newCropX -= movementX;\n newCropY -= movementY;\n }\n\n return cropsAdapter.updateOne(state, {\n id: cropId,\n changes: {\n cropX: clampCropPanToLimit(cropW, newCropX),\n cropY: clampCropPanToLimit(cropH, newCropY),\n },\n });\n },\n zoomCrop(state, { payload }: PayloadAction<ZoomCropPayload>) {\n if (!state.activeNodeUid) return state;\n const { canvasId } = payload;\n let { zoom } = payload;\n const cropId = utils.buildCropId(canvasId, state.activeNodeUid);\n const crop = state.entities[cropId];\n // Certain touch devices (Apple mostly) allow dragging from the edge to navigate browser back/forward\n // This can still trigger the events used to dispatch this action\n // So just return early if we don't have a crop\n if (!crop) return state;\n\n const { fitCropH, fitCropW, cropX, cropY } = crop;\n\n if (!fitCropH || !fitCropW || !cropX || !cropY) return state;\n\n const newCropH = fitCropH / zoom;\n const newCropW = fitCropW / zoom;\n\n return cropsAdapter.updateOne(state, {\n id: cropId,\n changes: {\n zoom,\n cropH: newCropH,\n cropW: newCropW,\n cropX: clampCropPanToLimit(newCropW, cropX),\n cropY: clampCropPanToLimit(newCropH, cropY),\n },\n });\n },\n filterCrop(state, { payload }: PayloadAction<FilterCropPayload>) {\n return cropsAdapter.updateOne(state, {\n id: payload.crop.id,\n changes: { filter: payload.filter.filterType, photoLoaded: false },\n });\n },\n rotateCrop(state, { payload }: PayloadAction<RotateCropPayload>) {\n const { cropId, rotation, blobSrc } = payload;\n return cropsAdapter.updateOne(state, {\n id: cropId,\n changes: { rotation, blobSrc },\n });\n },\n updateCropNodeDimensions(\n state,\n { payload }: PayloadAction<Omit<CropDimensionsPayload, 'imageDimensions'>>\n ) {\n const { nodeDimension, canvasId, nodeUid } = payload;\n const cropId = utils.buildCropId(canvasId, nodeUid);\n const crop = state.entities[cropId];\n if (!crop) return state;\n const { originalH, originalW } = crop;\n if (!originalH || !originalW) return state;\n\n const imageDimensions = { height: originalH, width: originalW };\n const { fitCropH, fitCropW } = fitImageToNode(nodeDimension, imageDimensions);\n const cropData = {\n nodeAspectRatio: utils.roundAspectRatio(nodeDimension),\n fitCropH,\n cropH: fitCropH,\n fitCropW,\n cropW: fitCropW,\n cropX: 0.5,\n cropY: 0.5,\n zoom: 1,\n };\n\n return cropsAdapter.updateOne(state, { id: cropId, changes: cropData });\n },\n setCropPhotoLoaded(state, { payload }: PayloadAction<CropPhotoLoadedPayload>) {\n return cropsAdapter.updateOne(state, {\n id: payload.id,\n changes: {\n photoLoaded: payload.loaded,\n },\n });\n },\n deleteCrop(state, { payload }: PayloadAction<string>) {\n return cropsAdapter.removeOne(state, payload);\n },\n deleteCropsByPhotoId(state, { payload }: PayloadAction<number>) {\n const cropsToDelete = cropIdsForPhotoId(state.entities, payload);\n return cropsAdapter.removeMany(state, cropsToDelete);\n },\n resetCrops() {\n return cropsAdapter.getInitialState(initialState);\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.fetchCropPhoto.fulfilled, (state, { payload }) => {\n const { canvasId, nodeUid, blobSrc } = payload;\n const id = utils.buildCropId(canvasId, nodeUid);\n\n return cropsAdapter.updateOne(state, {\n id,\n changes: {\n blobSrc,\n },\n });\n })\n .addCase(actions.fetchCropPhoto.rejected, (state, { payload }) => {\n const { canvasId, nodeUid } = payload;\n const id = utils.buildCropId(canvasId, nodeUid);\n return cropsAdapter.removeOne(state, id);\n })\n .addCase(actions.fetchCropFilterPhoto.fulfilled, (state, { payload }) => {\n const { canvasId, nodeUid, blobSrc } = payload;\n const id = utils.buildCropId(canvasId, nodeUid);\n\n return cropsAdapter.updateOne(state, {\n id,\n changes: {\n blobSrc,\n rotation: 0,\n },\n });\n })\n .addCase(actions.fetchCropFilterPhoto.rejected, (state, { payload }) => {\n const { canvasId, nodeUid } = payload;\n const id = utils.buildCropId(canvasId, nodeUid);\n\n return cropsAdapter.updateOne(state, {\n id,\n changes: { filter: 'original', photoLoaded: true },\n });\n })\n .addCase(actions.restoreCartProductPhotoCrops.fulfilled, (state, { payload }) => {\n return cropsAdapter.addMany(state, payload);\n })\n .addCase(photoModule.actions.removeManyPhotos.fulfilled, (state) => {\n return cropsAdapter.removeAll(state);\n })\n .addCase(photoModule.actions.removePhoto.fulfilled, (state, { payload }) => {\n const cropsToDelete = cropIdsForPhotoId(state.entities, payload.id);\n return cropsAdapter.removeMany(state, cropsToDelete);\n })\n .addCase(canvases.actions.removeCanvas, (state, { payload }) => {\n const canvasId = payload;\n\n const removeCropIds = state.ids.filter((cropId) => {\n const { canvasId: cropCanvasId } = utils.parseCropId(cropId as string);\n return cropCanvasId === canvasId;\n });\n\n return cropsAdapter.removeMany(state, removeCropIds);\n })\n .addCase('arrangements/restoreArrangement', () => {\n return cropsAdapter.getInitialState(initialState);\n })\n .addCase('canvases/resetToSingleCanvas', () => {\n return cropsAdapter.getInitialState(initialState);\n });\n },\n});\n\nexport default crops;\n", "import type { CartPhoto, DP2Crop, PhotoCrop } from 'types/photo_types';\nimport type { PhotoUpload } from 'domains/photos';\nimport { round } from 'lodash';\n\n/**\n * @deprecated\n *\n * Can be removed when wall preview & arrangement preview image generation\n * has been migrated to the order-api endpoint\n */\nexport function buildCartCropData(\n crop: Required<PhotoCrop>,\n photo: PhotoUpload,\n nodeId: number\n): CartPhoto {\n const dp2Crops = constructDP2CropData(crop);\n\n return {\n ordering_upload_id: photo.id,\n photo_url: photo.ink_url,\n original_filename: photo.original_filename,\n filter_applied: crop.filter === 'original' ? '' : crop.filter,\n degrees_rotated: crop.rotation,\n node_id: nodeId,\n ...dp2Crops,\n };\n}\n\ntype DeconstructCropParam = Omit<\n CartPhoto,\n 'photo_url' | 'original_filename' | 'ordering_upload_id' | 'node_id'\n>;\n\n/**\n * @deprecated\n *\n * Can be removed when wall preview & arrangement preview image generation\n * has been migrated to the order-api endpoint\n */\nexport function deconstructCropData(crop: DeconstructCropParam): Required<PhotoCrop> {\n const { degrees_rotated: rotation, crop_height, crop_width, crop_x, crop_y, xywhz } = crop;\n\n const [, , w, h, z] = xywhz.split(',').map((v) => parseFloat(v));\n\n const cropH = crop_height / 100;\n const cropW = crop_width / 100;\n const cropX = crop_x / 100;\n const cropY = crop_y / 100;\n\n const filter = crop.filter_applied === '' ? 'original' : crop.filter_applied;\n\n const zoom = z / 100 + 1;\n\n const originalH = Math.ceil(h / cropH);\n const originalW = Math.ceil(w / cropW);\n\n return {\n rotation,\n filter,\n zoom,\n originalH,\n originalW,\n cropH,\n cropW,\n cropX,\n cropY,\n };\n}\n\n/**\n * @deprecated\n */\nfunction constructDP2CropData(crop: Required<PhotoCrop>): DP2Crop {\n const { cropH, cropW, cropX, cropY, originalH, originalW, zoom } = crop;\n\n // Get the ratio that has been cropped _out_, in both directions\n const halfCropW = round((1 - cropW) / 2, 6);\n const halfCropH = round((1 - cropH) / 2, 6);\n\n // Build the xywhz value\n // Crop points are saved as % away from the center, so we subtract from 0.5 to get movement from left edge\n const xywhz = [\n round((halfCropW - (0.5 - cropX)) * originalW, 6),\n round((halfCropH - (0.5 - cropY)) * originalH, 6),\n round(cropW * originalW, 6),\n round(cropH * originalH, 6),\n round((zoom - 1) * 100, 6),\n ];\n\n return {\n crop_height: round(cropH * 100, 6),\n crop_width: round(cropW * 100, 6),\n crop_x: round(cropX * 100, 6),\n crop_y: round(cropY * 100, 6),\n xywhz: xywhz.join(','),\n };\n}\n", "import { clamp, round } from 'lodash';\nimport type { Dimension } from 'types/common_types';\nimport type { NodeDimension } from 'types/node_types';\n\ntype PartialNodeDimension = Pick<NodeDimension, 'h' | 'w'>;\n\n/*\n * Returns the value of a single dimension for a panned item to keep it bound within a container\n * (0, 0) is at the top left of the panned item\n */\nexport function panWithinContainer(\n position: number,\n containerDimension: number,\n pannedItemDimension: number\n) {\n let finalPosition;\n\n const outOfBoundsTopOrLeft = position > 0;\n const outOfBoundsBottomOrRight = Math.abs(position) + containerDimension >= pannedItemDimension;\n\n if (outOfBoundsTopOrLeft) {\n finalPosition = 0;\n } else if (outOfBoundsBottomOrRight) {\n finalPosition = containerDimension - pannedItemDimension;\n } else {\n finalPosition = position;\n }\n\n return finalPosition;\n}\n\n/*\n * Returns the (x, y) point for the top-left of an item to center the item within a container\n */\nexport function panToCenter(\n containerDimensions: PartialNodeDimension,\n itemDimensions: PartialNodeDimension\n) {\n const itemCenterX = itemDimensions.w / 2;\n const itemCenterY = itemDimensions.h / 2;\n const containerCenterX = containerDimensions.w / 2;\n const containerCenterY = containerDimensions.h / 2;\n\n return {\n x: -(itemCenterX - containerCenterX),\n y: -(itemCenterY - containerCenterY),\n };\n}\n\n/** Calculate how to resize the image to fit in the node */\nexport function fitImageToNode(nodeDimensions: Dimension, imageDimensions: Dimension) {\n const { height: nodeH, width: nodeW } = nodeDimensions;\n const { height: imageH, width: imageW } = imageDimensions;\n const scalingFactor = getScalingFactor(nodeDimensions, imageDimensions);\n\n const fitCropW = round(nodeW / (imageW * scalingFactor), 6);\n const fitCropH = round(nodeH / (imageH * scalingFactor), 6);\n\n return { fitCropH, fitCropW };\n}\n\n/** Get scaling factor for fitting image to node */\nexport function getScalingFactor(nodeDimensions: Dimension, imageDimensions: Dimension) {\n const { height: nodeH, width: nodeW } = nodeDimensions;\n const { height: imageH, width: imageW } = imageDimensions;\n\n const widthRatio = nodeW / imageW;\n const heightRatio = nodeH / imageH;\n return Math.max(widthRatio, heightRatio);\n}\n\n/**\n * Calculate the pan limits of a crop based on a cropped dimension\n *\n * Based on crop points being calculated as % off center, as a decimal\n */\nexport function clampCropPanToLimit(cropDimension: number, cropPoint: number) {\n const halfCrop = (1 - cropDimension) / 2;\n return clamp(cropPoint, 0.5 - halfCrop, 0.5 + halfCrop);\n}\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport { CropEntity } from './crops.types';\n\nconst cropsAdapter = createEntityAdapter<CropEntity>();\n\nexport default cropsAdapter;\n", "import { round } from 'lodash';\n\nimport type { CartProductPhoto, CartProductPhotoParams } from 'domains/cart_products';\nimport type { Dimension } from 'types/common_types';\nimport type { ImageFilter } from 'types/photo_types';\nimport type { CropEntity } from './crops.types';\nimport type { ProductTemplateAPIData } from 'types/catalog_types';\nimport type { Dictionary } from '@reduxjs/toolkit';\n\ntype CropFilter = ImageFilter['filterType'];\ntype CartPhotoFilter = CartProductPhotoParams['style_filter'];\n\nconst filterMap: Record<CropFilter, CartPhotoFilter> = {\n original: undefined,\n bw: 'black_and_white',\n sepia1: 'sepia_a',\n sepia2: 'sepia_b',\n};\n\nconst reversedFilterMap: Record<NonNullable<CartPhotoFilter>, CropFilter> = {\n black_and_white: 'bw',\n sepia_a: 'sepia1',\n sepia_b: 'sepia2',\n};\n\nfunction buildCropId(canvasId: string, nodeUid: string) {\n return `${canvasId}:${nodeUid}`;\n}\n\nfunction parseCropId(cropId: string) {\n const [canvasId, nodeUid] = cropId.split(':');\n return { canvasId, nodeUid };\n}\n\nfunction cropFilterForCartProduct(filter: CropFilter) {\n return filterMap[filter];\n}\n\nfunction cartProductFilterToCropFilter(filter: CartPhotoFilter): CropFilter {\n if (!filter) return 'original';\n\n return reversedFilterMap[filter];\n}\n\nfunction roundAspectRatio({ height, width }: Dimension) {\n return round(width / height, 4);\n}\n\ntype RestoredCrop = Pick<\n CropEntity,\n | 'cropX'\n | 'cropY'\n | 'cropH'\n | 'cropW'\n | 'fitCropH'\n | 'fitCropW'\n | 'nodeAspectRatio'\n | 'zoom'\n | 'rotation'\n>;\n\nfunction restoreCartProductPhotoCrop(\n crop: CartProductPhoto['crop'],\n image: Dimension\n): RestoredCrop {\n const cropW = parseFloat(crop.w) / 100;\n const cropH = parseFloat(crop.h) / 100;\n const cropX = parseFloat(crop.x) / 100;\n const cropY = parseFloat(crop.y) / 100;\n\n let fitCropH: number;\n let fitCropW: number;\n\n // We need to re-establish the fit crop values and zoom\n // Since we always crop to fit, the higher value will always be\n // the 'fit' dimension\n const fitDimension = Math.max(cropW, cropH);\n const cropAspectRatio = roundAspectRatio({ width: cropW, height: cropH });\n const nodeAspectRatio = roundAspectRatio({\n width: cropW * image.width,\n height: cropH * image.height,\n });\n\n if (fitDimension === cropW) {\n fitCropW = 1;\n fitCropH = cropAspectRatio;\n } else {\n fitCropH = 1;\n fitCropW = cropAspectRatio;\n }\n\n return {\n cropX,\n cropY,\n cropW,\n cropH,\n fitCropW,\n fitCropH,\n nodeAspectRatio,\n rotation: crop.rotation,\n zoom: 1 / fitDimension,\n };\n}\n\nfunction findNextAvailableCropId(\n cropsById: Dictionary<CropEntity>,\n product: ProductTemplateAPIData,\n canvasId: string\n) {\n return product.nodes\n .filter((n) => n.node_type === 1)\n .sort((a, b) => a.sort_order - b.sort_order)\n .map((node) => buildCropId(canvasId, node.uid))\n .find((cropId) => !cropsById[cropId]);\n}\n\nexport default {\n buildCropId,\n parseCropId,\n cropFilterForCartProduct,\n cartProductFilterToCropFilter,\n roundAspectRatio,\n restoreCartProductPhotoCrop,\n findNextAvailableCropId,\n};\n", "import { createRotatedImageBlob } from 'utils/image_util';\nimport { fetchPhotoBlob } from 'utils/image_load';\nimport activeEditor from 'domains/active_editor';\n\nimport selectors from './crops.selectors';\nimport slice from './crops.slice';\nimport utils from './crops.utils';\n\nimport type { AppThunk } from 'store/wos_store';\n\nconst { setActiveImageNode, setCropPhotoLoaded, createCrop, deleteCrop, rotateCrop } =\n slice.actions;\n\nexport function setNextActiveImageNode(): AppThunk {\n return function nextActiveImageNodeThunk(dispatch, getState) {\n const state = getState();\n\n const activeCanvasId = activeEditor.selectors.canvasId(state);\n const activeProduct = activeEditor.selectors.product(state);\n const cropsById = selectors.selectEntities(state);\n\n if (!activeProduct || !activeCanvasId) return;\n\n const cropId = utils.findNextAvailableCropId(cropsById, activeProduct, activeCanvasId);\n\n if (cropId) {\n const { nodeUid } = utils.parseCropId(cropId);\n dispatch(setActiveImageNode(nodeUid));\n }\n };\n}\n\nexport function applyPhotoToActiveNode(photoId: number): AppThunk {\n return function applyPhotoThunk(dispatch, getState) {\n const state = getState();\n\n const activeImageNode = selectors.activeImageNode(state);\n const activeCanvasId = activeEditor.selectors.canvasId(state);\n\n if (!activeImageNode || !activeCanvasId) return;\n\n dispatch(createCrop({ canvasId: activeCanvasId, nodeUid: activeImageNode, photoId }));\n dispatch(setNextActiveImageNode());\n };\n}\n\nexport function rotateActiveImage(): AppThunk {\n return async function rotateThunk(dispatch, getState) {\n const state = getState();\n const activeCrop = selectors.activeCrop(state);\n const oldSrc = activeCrop?.blobSrc;\n\n if (!activeCrop || !oldSrc) return;\n\n dispatch(setCropPhotoLoaded({ id: activeCrop.id, loaded: false }));\n\n // Have to resolve the object url back to a blob\n const oldBlob = await fetchPhotoBlob(oldSrc);\n\n // Since the blobSrc reflects the rotation, we reset back to 0 if we're rotating from 270\n const rotation = activeCrop.rotation === 270 ? -270 : 90;\n\n try {\n // Get the blob of the rotated canvas and revoke the previous one\n const blob = await createRotatedImageBlob(oldBlob, rotation);\n const newSrc = URL.createObjectURL(blob);\n URL.revokeObjectURL(oldSrc);\n dispatch(\n rotateCrop({\n cropId: activeCrop.id,\n rotation: activeCrop.rotation + rotation,\n blobSrc: newSrc,\n })\n );\n } catch (error) {\n // Keep the crop state the same if something in the rotation failed\n dispatch(setCropPhotoLoaded({ id: activeCrop.id, loaded: true }));\n }\n };\n}\n\nexport function reconcileCrops(): AppThunk {\n return function reconcileThunk(dispatch, getState) {\n const state = getState();\n\n const potentialCropIds = selectors.potentialCropIds(state);\n const activeNodeUid = selectors.activeImageNode(state);\n const potentialNodeUids = potentialCropIds.map((id) => utils.parseCropId(id).nodeUid);\n const cropIds = selectors.selectIds(state);\n let deleted = false;\n\n // Remove crops with IDs that are no longer available\n cropIds.forEach((id: string) => {\n if (potentialCropIds.indexOf(id) === -1) {\n deleted = true;\n dispatch(deleteCrop(id));\n }\n });\n\n // If we deleted a crop, we should set the active image node since at least one node will be empty\n // Also set next active if the current active is not available\n if (deleted || !activeNodeUid || potentialNodeUids.indexOf(activeNodeUid) === -1) {\n dispatch(setNextActiveImageNode());\n }\n };\n}\n", "import type { ImageFilter } from 'types/photo_types';\n\nexport const imageFilters: ImageFilter[] = [\n {\n title: 'Original',\n filterType: 'original',\n filePathThumb: 'file_path_thumb',\n filePathFull: 'file_path_1024',\n },\n {\n title: 'B&W',\n filterType: 'bw',\n filePathThumb: 'file_path_thumb_bw',\n filePathFull: 'file_path_1024_bw',\n },\n {\n title: 'Sepia 1',\n filterType: 'sepia1',\n filePathThumb: 'file_path_thumb_sepia1',\n filePathFull: 'file_path_1024_sepia1',\n },\n {\n title: 'Sepia 2',\n filterType: 'sepia2',\n filePathThumb: 'file_path_thumb_sepia2',\n filePathFull: 'file_path_1024_sepia2',\n },\n];\n\nexport function createRotatedImageBlob(blob: Blob, degrees: number) {\n return new Promise<Blob>((res, rej) => {\n const canvas = document.createElement('canvas');\n // This cast is safe, getContext only returns null if the argument is incorrect\n const context = canvas.getContext('2d') as CanvasRenderingContext2D;\n const img = new Image();\n const src = URL.createObjectURL(blob);\n\n img.addEventListener('load', () => {\n // Set the height of the canvas to the size the rotated image will be, swapping height/width if\n // the rotation will flip the aspect ratio\n const flipAspectRatio = (degrees / 90) % 2 !== 0;\n canvas.height = flipAspectRatio ? img.width : img.height;\n canvas.width = flipAspectRatio ? img.height : img.width;\n\n // Move the context origin to the center of the canvas\n context.translate(canvas.width / 2, canvas.height / 2);\n\n // Rotate the context matrix\n const rads = Math.PI / 180;\n context.rotate(degrees * rads);\n\n // Move the context origin back to the top-left of the rotated context\n context.translate(canvas.height / -2, canvas.width / -2);\n\n // Draw the image at the origin\n context.drawImage(img, 0, 0);\n\n // Convert the canvas to a blob, rejecting the promise if this callback returns null\n canvas.toBlob((blobOut) => {\n if (!blobOut) {\n rej('No blob');\n return;\n }\n\n res(blobOut);\n // Clean up the object url for the original image we rotated\n URL.revokeObjectURL(src);\n });\n });\n\n img.src = src;\n });\n}\n", "import axios from 'axios';\nimport { createRotatedImageBlob } from './image_util';\n\n/** Sends a HEAD request to the url, returning true only if it is a 200 */\nexport async function checkResource(url: string) {\n try {\n const resp = await axios.head(url);\n return resp.status === 200;\n } catch (error) {\n return false;\n }\n}\n\n/** Fetches a url as a blob */\nexport async function fetchPhotoBlob(src: string) {\n const resp = await axios.get<Blob>(src, { responseType: 'blob' });\n return resp.data;\n}\n\n/** Fetches an image as a blob, then applies it to an HTMLImage */\nexport async function loadBlobAsImage(src: string, rotation?: number) {\n return new Promise<HTMLImageElement>(async (res, rej) => {\n const blob = await fetchPhotoBlob(src);\n let blobSrc;\n\n if (rotation) {\n const rotatedBlob = await createRotatedImageBlob(blob, rotation);\n blobSrc = URL.createObjectURL(rotatedBlob);\n } else {\n blobSrc = URL.createObjectURL(blob);\n }\n\n const image = new Image();\n\n image.addEventListener('load', () => {\n res(image);\n });\n\n image.addEventListener('error', () => {\n rej();\n });\n\n image.src = blobSrc;\n });\n}\n", "import type { CartProductPhoto } from 'domains/cart_products';\nimport type { SavedArrangementCrop } from 'domains/saved_arrangements';\nimport type { Dimension } from 'types/common_types';\nimport type { ImageFilter, PhotoCrop } from 'types/photo_types';\n\nexport type CropsSliceInitialState = {\n activeNodeUid: string | null;\n};\n\nexport type CropEntity = PhotoCrop & {\n id: string;\n canvasId: string;\n nodeUid: string;\n photoId: number;\n photoLoaded: boolean;\n blobSrc?: string;\n nodeAspectRatio?: number;\n fitCropW?: number;\n fitCropH?: number;\n};\n\nexport type CreateCropPayload = {\n canvasId: string;\n photoId: number;\n nodeUid: string;\n};\n\nexport type FetchCropPhotoPayload = CreateCropPayload & {\n blobSrc: string;\n};\n\nexport type FetchCropPhotoFailedPayload = {\n canvasId: string;\n nodeUid: string;\n};\n\nexport type CropDimensionsPayload = {\n canvasId: string;\n nodeUid: string;\n nodeDimension: Dimension;\n imageDimensions: Dimension;\n};\n\nexport type RestoreCartProductPhoto = {\n crop: CartProductPhoto['crop'];\n filter: ImageFilter['filterType'];\n canvasId: string;\n uid: string;\n photoId: number;\n};\n\nexport type RestoreArrangementCropsPayload = SavedArrangementCrop & {\n blobSrc: string;\n};\n\nexport type PanCropPayload = {\n canvasId: string;\n nodeUid: string;\n /** Percent of scaled crop that we've panned in the X dimension */\n movementX: number;\n /** Percent of scaled crop that we've panned in the Y dimension */\n movementY: number;\n /** If the node has been rotated using transforms, the mouse panning direction is opposite */\n flipTrackingDirection: boolean;\n};\n\nexport type ZoomCropPayload = {\n canvasId: string;\n zoom: number;\n};\n\nexport type FilterCropPayload = {\n filter: ImageFilter;\n crop: CropEntity;\n};\n\nexport type RotateCropPayload = {\n cropId: string;\n rotation: number;\n blobSrc: string;\n};\n\nexport type CropPhotoLoadedPayload = {\n id: string;\n loaded: boolean;\n};\n", "import slice from './ui.slice';\nimport selectors from './ui.selectors';\n\nexport type { SiteMessageState } from './ui.slice';\n\nconst module = {\n actions: { ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './ui.slice';\n\nexport default module;\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport { MAINTENANCE_MESSAGE, hideBranding, showFilenames, theme } from 'utils/globals';\n\nimport checkout from 'domains/checkout';\nimport photoModule from 'domains/photos';\nimport optionGroupModule from 'domains/option_groups';\nimport cartProductCreator from 'domains/cart_product_creator';\nimport cartProductEditor from 'domains/cart_product_editor';\nimport canvases from 'domains/canvases';\nimport promoCode from 'domains/promo_code';\nimport giftCert from 'domains/gift_cert';\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\n\nexport type SiteMessageState = {\n enabled?: boolean;\n message?: string;\n messageType?: 'notice' | 'error';\n};\n\nconst validSidebarComponents = ['default', 'TextTools'] as const;\ntype SidebarComponentId = typeof validSidebarComponents[number];\n\nconst siteMessageInitialState: SiteMessageState = MAINTENANCE_MESSAGE.enabled\n ? {\n enabled: true,\n message: MAINTENANCE_MESSAGE.value,\n messageType: 'notice',\n }\n : {};\n\ntype UISliceInitialState = {\n visualOnlyRotation: 0 | 180;\n showSaveUncollectedPhotosDialog: boolean;\n showUploadPhotosDialog: boolean;\n hideBranding: boolean;\n showFilenames: boolean;\n hasMobileNavigation: boolean;\n showEditorSidebar: boolean; // always shown on desktop, default to false for mobile\n showMobileSidebar: boolean;\n showSidebarProducts: boolean;\n showMobileUserPhotos: boolean;\n showAdvancedFilters: boolean;\n siteMessage: SiteMessageState;\n theme: 'light' | 'dark';\n activeSpecialContentSidebarMenu: string | null;\n sidebarComponent: SidebarComponentId;\n errorMessages: {\n customSizePicker: string;\n };\n};\n\nconst initialState: UISliceInitialState = {\n visualOnlyRotation: 0,\n activeSpecialContentSidebarMenu: null,\n showSaveUncollectedPhotosDialog: false,\n showUploadPhotosDialog: false,\n siteMessage: siteMessageInitialState,\n hideBranding,\n showFilenames,\n theme: theme && theme === 'light' ? 'light' : 'dark',\n hasMobileNavigation: false,\n showEditorSidebar: false, // always shown on desktop, default to false for mobile\n showMobileSidebar: false,\n showSidebarProducts: true,\n showMobileUserPhotos: true,\n showAdvancedFilters: false,\n sidebarComponent: 'default',\n errorMessages: {\n customSizePicker: '',\n },\n};\n\nconst ui = createSlice({\n name: 'ui',\n initialState,\n reducers: {\n rotateVisualOnly(state) {\n // At this time, we don't have products which can be multi-canvas _and_ visual only rotation\n // If we do add that, this will need to be linked to a canvas ID\n const update = { ...state };\n update.visualOnlyRotation = update.visualOnlyRotation === 180 ? 0 : 180;\n return update;\n },\n setActiveContentSidebarMenu(state, { payload }: PayloadAction<string | null>) {\n return { ...state, activeSpecialContentSidebarMenu: payload };\n },\n setShowUploadPhotosDialog(state, { payload }: PayloadAction<boolean>) {\n return { ...state, showUploadPhotosDialog: payload };\n },\n setSiteMessage(state, { payload }: PayloadAction<SiteMessageState>) {\n return { ...state, siteMessage: payload };\n },\n toggleHideBranding(state) {\n return { ...state, hideBranding: !state.hideBranding };\n },\n toggleShowFilenames(state) {\n return { ...state, showFilenames: !state.showFilenames };\n },\n toggleTheme(state) {\n const toggled = state.theme === 'light' ? 'dark' : 'light';\n return { ...state, theme: toggled };\n },\n setShowAdvancedFilters(state, { payload }: PayloadAction<boolean>) {\n return { ...state, showAdvancedFilters: payload };\n },\n setHasMobileNavigation(state, { payload }: PayloadAction<boolean>) {\n return { ...state, hasMobileNavigation: payload };\n },\n setShowEditorSidebar(state, { payload }: PayloadAction<boolean>) {\n return { ...state, showEditorSidebar: payload, activeSpecialContentSidebarMenu: null };\n },\n setShowMobileSidebar(state, { payload }: PayloadAction<boolean>) {\n return { ...state, showMobileSidebar: payload };\n },\n setShowSidebarProducts(state, { payload }: PayloadAction<boolean>) {\n return { ...state, showSidebarProducts: payload };\n },\n setShowMobileUserPhotos(state, { payload }: PayloadAction<boolean>) {\n return { ...state, showMobileUserPhotos: payload };\n },\n mobileNavigationProducts(state) {\n return { ...state, showSidebarProducts: true, showMobileSidebar: !state.showMobileSidebar };\n },\n mobileNavigationOptions(state) {\n return { ...state, showSidebarProducts: false, showMobileSidebar: !state.showMobileSidebar };\n },\n mobileNavigationPhotos(state) {\n return {\n ...state,\n showMobileSidebar: false,\n showMobileUserPhotos: !state.showMobileUserPhotos,\n };\n },\n mobileNavigationEdit(state) {\n return { ...state, showMobileUserPhotos: false, showMobileSidebar: false };\n },\n setSidebarComponent(state, { payload }: PayloadAction<SidebarComponentId>) {\n if (payload && validSidebarComponents.includes(payload)) {\n return { ...state, sidebarComponent: payload };\n }\n\n return { ...state, sidebarComponent: 'default' };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(cartProductCreator.actions.addToCart.rejected, generalServiceError)\n .addCase(promoCode.actions.save.rejected, generalServiceError)\n .addCase(giftCert.actions.save.rejected, generalServiceError)\n .addCase(photoModule.actions.createNewCollection, (state, { payload }) => {\n if (payload.action === 'create_from_upload') {\n return { ...state, showUploadPhotosDialog: true };\n }\n })\n .addCase(photoModule.actions.uploadPhotos.pending, (state) => {\n return {\n ...state,\n showUploadPhotosDialog: false,\n };\n })\n .addCase(cartProductEditor.actions.pending, (state) => {\n return {\n ...state,\n sidebarComponent: 'default',\n showAdvancedFilters: false,\n };\n })\n .addCase(optionGroupModule.actions.fetchOptionGroups.rejected, (state) => {\n return {\n ...state,\n siteMessage: {\n enabled: true,\n message: \"We're experiencing some connection issues. Reloading the page may help.\",\n messageType: 'notice',\n },\n };\n })\n .addCase('collections/updateUncollected/fulfilled', (state) => {\n return {\n ...state,\n showSaveUncollectedPhotosDialog: false,\n };\n })\n .addCase(canvases.actions.calculateCustomPrice.pending, clearCustomSizePickerError)\n .addCase(canvases.actions.changeActiveCanvasConfig.product, clearCustomSizePickerError)\n .addCase(canvases.actions.calculateCustomPrice.rejected, (state, { payload }) => {\n return {\n ...state,\n errorMessages: {\n ...state.errorMessages,\n customSizePicker: payload || 'Price Calculation Error',\n },\n };\n })\n .addCase(canvases.actions.calculateCustomOptionPrices.rejected, (state) => {\n return {\n ...state,\n errorMessages: {\n ...state.errorMessages,\n customSizePicker: 'Price Calculation Error',\n },\n };\n })\n .addCase(checkout.actions.submitOrder.rejected, (state, { payload }) => {\n // Existence of a payload indicates we're showing a local FlashMessage error, so skip the banner\n if (payload) {\n return state;\n }\n\n return {\n ...state,\n siteMessage: {\n message:\n 'Order failed to submit. Try again or contact customer service at 1-800-435-6686',\n enabled: true,\n messageType: 'error',\n },\n };\n });\n },\n});\n\nfunction clearCustomSizePickerError(state: RootState['ui']) {\n return {\n ...state,\n errorMessages: {\n ...state.errorMessages,\n customSizePicker: '',\n },\n };\n}\n\nfunction generalServiceError(state: RootState['ui']) {\n const siteMessage: SiteMessageState = {\n enabled: true,\n message: \"We're experiencing some service issues. Please try again later\",\n messageType: 'error',\n };\n\n return { ...state, siteMessage };\n}\n\nexport default ui;\n", "import actions from './checkout.actions';\nimport slice from './checkout.slice';\nimport selectors from './checkout.selectors';\n\nexport * from './checkout.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './checkout.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { Cart } from 'domains/cart';\nimport type { ConfirmationDetails } from './checkout.types';\n\nexport type SubmitOrderFulfilledPayload = {\n guid: string;\n order_number: string;\n total: number;\n};\n\nconst initCheckout = {\n pending: createAction('checkout/initCheckout/pending'),\n fulfilled: createAction('checkout/initCheckout/fulfilled'),\n rejected: createAction('checkout/initCheckout/rejected'),\n};\n\nconst initConfirmation = {\n pending: createAction<Cart>('checkout/initConfirmation/pending'),\n fulfilled: createAction('checkout/initConfirmation/fulfilled'),\n rejected: createAction('checkout/initConfirmation/rejected'),\n};\n\nconst saveConfirmationDetails = {\n pending: createAction<ConfirmationDetails>('checkout/saveConfirmationDetails/pending'),\n fulfilled: createAction<ConfirmationDetails>('checkout/saveConfirmationDetails/fulfilled'),\n rejected: createAction('checkout/saveConfirmationDetails/rejected'),\n};\n\nconst submitOrder = {\n pending: createAction('checkout/submitOrder/pending'),\n fulfilled: createAction<SubmitOrderFulfilledPayload>('checkout/submitOrder/fulfilled'),\n complete: createAction<string>('checkout/submitOrder/complete'),\n rejected: createAction<string | undefined>('checkout/submitOrder/rejected'),\n};\n\nconst resetCheckoutStatuses = createAction('checkout/resetCheckoutStatuses');\n\nexport default {\n initCheckout,\n initConfirmation,\n saveConfirmationDetails,\n submitOrder,\n resetCheckoutStatuses,\n};\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport actions from './checkout.actions';\n\nimport cartPaymentMethod from 'domains/cart_payment_method';\n\nimport type { CheckoutSliceInitialState } from './checkout.types';\n\nconst initialState: CheckoutSliceInitialState = {\n initialized: false,\n submitStatus: 'idle',\n confirmationDetails: {\n status: 'idle',\n },\n};\n\nconst slice = createSlice({\n name: 'checkout',\n initialState,\n reducers: {},\n extraReducers(builder) {\n builder\n .addCase(actions.initCheckout.fulfilled, (state) => {\n return { ...state, initialized: true };\n })\n .addCase(actions.initConfirmation.fulfilled, (state) => {\n return { ...state, initialized: true };\n })\n\n .addCase(cartPaymentMethod.actions.save.fulfilled, (state, { payload }) => {\n return {\n ...state,\n // If the submit error is populated, and then we get this action,\n // the user entered new payment data, so we should remove the error state\n // and let them try to submit again\n submitStatus: state.submitError ? 'idle' : state.submitStatus,\n };\n })\n .addCase(actions.saveConfirmationDetails.pending, (state) => {\n return { ...state, confirmationDetails: { status: 'loading' } };\n })\n\n .addCase(actions.saveConfirmationDetails.fulfilled, (state) => {\n return { ...state, confirmationDetails: { status: 'idle' } };\n })\n\n .addCase(actions.submitOrder.pending, (state) => {\n return { ...state, submitStatus: 'submitting' };\n })\n .addCase(actions.submitOrder.fulfilled, (state) => {\n return { ...state, submitStatus: 'success' };\n })\n .addCase(actions.submitOrder.rejected, (state, { payload }) => {\n // An order submit rejection with a payload means we were given an error\n // specifically regarding a braintree payment issue\n return {\n ...state,\n submitStatus: 'error',\n submitError: payload ? `Payment Error: ${payload}` : undefined,\n };\n });\n },\n});\n\nexport default slice;\n", "import actions from './cart_payment_method.actions';\nimport selectors from './cart_payment_method.selectors';\nimport slice from './cart_payment_method.slice';\nimport utils from './cart_payment_method.utils';\n\nexport * from './cart_payment_method.api';\nexport * from './cart_payment_method.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n utils,\n};\n\nexport { default as slice } from './cart_payment_method.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { HostedFieldsTokenizePayload } from 'braintree-web';\nimport type { CustomerPaymentTypes } from './cart_payment_method.types';\n\nconst getPermissions = {\n pending: createAction('cartPaymentMethod/getPermissions/pending'),\n fulfilled: createAction<CustomerPaymentTypes>('cartPaymentMethod/getPermissions/fulfilled'),\n rejected: createAction('cartPaymentMethod/getPermissions/rejected'),\n};\n\nconst save = {\n accept: createAction('checkout/savePaymentMethod/accept'),\n pending: createAction('checkout/savePaymentMethod/pending'),\n fulfilled: createAction<HostedFieldsTokenizePayload>('checkout/savePaymentMethod/fulfilled'),\n expire: createAction('checkout/savePaymentMethod/expire'),\n rejected: createAction<string | undefined>('checkout/savePaymentMethod/rejected'),\n};\n\nexport default {\n getPermissions,\n save,\n};\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport { ENABLE_APPLE_PAY } from 'utils/globals';\n\nimport slice from './cart_payment_method.slice';\n\nimport giftCert from 'domains/gift_cert';\nimport cartBilling from 'domains/cart_billing';\n\nimport type { CheckoutRootState } from 'store/checkout_store';\nimport type { PaymentType } from './cart_payment_method.types';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectAllowNetTerms = (state: LocalState) => state.allowNetTerms;\nconst selectAllowBraintree = (state: LocalState) => state.hasBraintree;\n\nconst selectPaymentMethodStatus = (state: LocalState) => state.status;\nconst selectPaymentMethodToken = (state: LocalState) => state.tokenizePayload;\nconst selectPaymentMethodError = (state: LocalState) => state.error;\n\nconst selectPaymentMethodType = (state: LocalState) => state.selectedType;\n\nconst selectGiftCertUsage = (state: CheckoutRootState) => {\n const cert = giftCert.selectors.valid(state);\n const billing = cartBilling.selectors.billing(state);\n\n const usage: { usage?: number; isWhollyCovered: boolean } = {\n usage: undefined,\n isWhollyCovered: false,\n };\n\n if (!!cert && !!billing) {\n usage.usage = billing.total >= cert.balance ? cert.balance : billing.total;\n usage.isWhollyCovered = usage.usage === billing.total;\n }\n\n return usage;\n};\n\n/**\n * This should be the singular determination if the combination of\n * payment method, customer, and cart satisifies the conditions to\n * submit an order\n */\nconst selectValidPaymentType = (state: CheckoutRootState): PaymentType | null => {\n const { isWhollyCovered } = selectGiftCertUsage(state);\n const selectedType = selectPaymentMethodType(localState(state));\n\n const allowNetTerms = selectAllowNetTerms(localState(state));\n const isUsingNetTerms = selectedType === 'net_terms';\n\n const allowBraintree = selectAllowBraintree(localState(state));\n const braintreePayment = selectPaymentMethodToken(localState(state));\n\n const applePaySelected = selectedType === 'apple_pay';\n\n // Some customers have special pricing defined in labworks, but do not\n // have net terms. These cases must be allowed to submit without other methods\n const mustUseDeferredPayment = !allowNetTerms && !allowBraintree;\n\n if (isWhollyCovered) return 'wholly_gift_certificate';\n if (mustUseDeferredPayment) return 'deferred_labworks';\n if (allowNetTerms && isUsingNetTerms) return 'net_terms';\n if (allowBraintree && !!braintreePayment) return 'credit_card';\n // if (allowBraintree && applePaySelected) return 'apple_pay';\n if (ENABLE_APPLE_PAY && applePaySelected) return 'apple_pay';\n\n return null;\n};\n\nconst selectHasValidPaymentMethod = (state: CheckoutRootState) => !!selectValidPaymentType(state);\n\nexport default {\n allowNetTerms: compose(selectAllowNetTerms, localState),\n allowBraintree: compose(selectAllowBraintree, localState),\n status: compose(selectPaymentMethodStatus, localState),\n token: compose(selectPaymentMethodToken, localState),\n type: compose(selectPaymentMethodType, localState),\n error: compose(selectPaymentMethodError, localState),\n // Already globalized\n giftCert: selectGiftCertUsage,\n validType: selectValidPaymentType,\n hasValidType: selectHasValidPaymentMethod,\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport actions from './cart_payment_method.actions';\n\nimport type { CheckoutStatus } from 'domains/checkout';\nimport type { PaymentType } from './cart_payment_method.types';\nimport type { HostedFieldsTokenizePayload } from 'braintree-web';\n\ntype PaymentMethodInitialState = {\n allowNetTerms: boolean;\n hasBraintree: boolean;\n status: CheckoutStatus;\n selectedType: PaymentType | '';\n tokenizePayload?: HostedFieldsTokenizePayload;\n error?: string;\n};\n\nconst initialState: PaymentMethodInitialState = {\n allowNetTerms: false,\n hasBraintree: true,\n status: 'idle',\n selectedType: '',\n};\n\nconst slice = createSlice({\n name: 'paymentMethods',\n initialState,\n reducers: {\n resetStatus(state) {\n return { ...state, status: 'idle' };\n },\n setPaymentMethodType(state, { payload }: PayloadAction<PaymentType>) {\n return {\n ...state,\n selectedType: payload,\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.getPermissions.fulfilled, (state, { payload }) => {\n const { net_terms, braintree_payments } = payload;\n const defaultPaymentType = net_terms\n ? 'net_terms'\n : braintree_payments\n ? 'credit_card'\n : '';\n\n return {\n ...state,\n selectedType: defaultPaymentType,\n allowNetTerms: payload.net_terms,\n hasBraintree: payload.braintree_payments,\n };\n })\n .addCase(actions.save.pending, (state) => {\n return { ...state, status: 'pending' };\n })\n .addCase(actions.save.accept, (state) => {\n return { ...state, status: 'success' };\n })\n .addCase(actions.save.fulfilled, (state, { payload }) => {\n return {\n ...state,\n status: 'success',\n tokenizePayload: payload,\n };\n })\n .addCase(actions.save.expire, (state) => {\n return {\n ...state,\n status: 'idle',\n type: '',\n tokenizePayload: undefined,\n };\n })\n .addCase(actions.save.rejected, (state, { payload }) => {\n return {\n ...state,\n status: 'error',\n error: payload,\n };\n });\n },\n});\n\nexport default slice;\n", "import actions from './gift_cert.actions';\nimport slice from './gift_cert.slice';\nimport selectors from './gift_cert.selectors';\n\nexport * from './gift_cert.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './gift_cert.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { GiftCertificate } from './gift_cert.types';\n\nconst save = {\n pending: createAction<string | null>('giftCert/save/pending'),\n fulfilled: createAction<GiftCertificate | null>('giftCert/save/fulfilled'),\n invalid: createAction<string>('giftCert/save/invalid'),\n rejected: createAction('giftCert/save/rejected'),\n};\n\nconst getDetails = {\n pending: createAction('giftCert/getDetails/pending'),\n fulfilled: createAction<GiftCertificate>('giftCert/getDetails/fulfilled'),\n rejected: createAction('giftCert/getDetails/rejected'),\n};\n\nexport default { save, getDetails };\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport actions from './gift_cert.actions';\n\nimport type { GiftCertificate } from './gift_cert.types';\nimport type { LoadingStatus } from 'types/common_types';\n\ntype GiftCertState = {\n status: LoadingStatus;\n message?: string;\n valid?: GiftCertificate;\n};\n\nconst initialState: GiftCertState = {\n status: 'idle',\n};\n\nconst slice = createSlice({\n name: 'giftCert',\n initialState,\n reducers: {\n setValidGiftCert(state, { payload }: PayloadAction<GiftCertificate>) {\n return {\n ...state,\n status: 'idle',\n valid: payload,\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.save.fulfilled, (state, { payload }) => {\n return {\n ...state,\n status: 'idle',\n message: undefined,\n valid: payload || undefined,\n };\n })\n .addCase(actions.save.invalid, (state, { payload }) => {\n return {\n ...state,\n status: 'error',\n message: payload,\n };\n })\n .addCase(actions.getDetails.fulfilled, (state, { payload }) => {\n return {\n ...state,\n status: 'idle',\n message: undefined,\n valid: payload,\n };\n });\n },\n});\n\nexport default slice;\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './gift_cert.slice';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nexport const selectGiftCertStatus = (state: LocalState) => state.status;\nexport const selectValidGiftCert = (state: LocalState) => state.valid;\nexport const selectGiftCertError = (state: LocalState) => state.message;\n\nexport default {\n status: compose(selectGiftCertStatus, localState),\n valid: compose(selectValidGiftCert, localState),\n error: compose(selectGiftCertError, localState),\n};\n", "export type GiftCertificateAPIResponse = {\n id?: string;\n balance?: string;\n};\n\nexport type GiftCertificate = {\n id: string;\n balance: number;\n};\n", "import actions from './cart_billing.actions';\nimport selectors from './cart_billing.selectors';\nimport slice from './cart_billing.slice';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport * from './cart_billing.types';\n\nexport { default as slice } from './cart_billing.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { CartBilling } from './cart_billing.types';\n\nconst get = {\n pending: createAction('cart/getBilling/pending'),\n fulfilled: createAction<CartBilling>('cart/getBilling/fulfilled'),\n rejected: createAction('cart/getBilling/rejected'),\n};\n\nexport default {\n get,\n};\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './cart_billing.slice';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectCartBilling = (state: LocalState) => state.billing;\n\nexport default {\n billing: compose(selectCartBilling, localState),\n};\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport actions from './cart_billing.actions';\n\nimport type { CartBilling } from './cart_billing.types';\n\ntype CartBillingState = {\n billing: CartBilling | null;\n};\n\nconst initialState: CartBillingState = { billing: null };\n\nconst slice = createSlice({\n name: 'cartBilling',\n initialState,\n reducers: {},\n extraReducers(builder) {\n builder.addCase(actions.get.fulfilled, (state, { payload }) => {\n return { billing: payload };\n });\n },\n});\n\nexport default slice;\n", "export type CartBilling = {\n discount: number;\n handling_total: number;\n shipping_discount: number;\n shipping_subtotal: number;\n shipping_total: number;\n shipping_at_cost: boolean;\n subtotal: number;\n tax: number;\n total: number;\n};\n", "import type { CartPayment } from 'domains/cart';\n\n/** Cart Payment and Braintree Payment details are similar but cased differently */\nfunction formatCartPayment(payment: Required<CartPayment>) {\n return {\n lastFour: payment.last_four,\n postalCode: payment.postal_code,\n expirationMonth: payment.expiration_month,\n expirationYear: payment.expiration_year,\n };\n}\n\nfunction hasCardDetails(payment: CartPayment): payment is Required<CartPayment> {\n return !!payment.last_four && !!payment.expiration_month && !!payment.expiration_year;\n}\n\nexport default {\n formatCartPayment,\n hasCardDetails,\n};\n", "import cartAPI from 'apis/cart';\n\nimport type { CustomerPaymentTypes } from './cart_payment_method.types';\n\nexport const paymentTypes = async () => {\n const { data } = await cartAPI.get<CustomerPaymentTypes>('/customer/payment_types');\n return data;\n};\n", "import axios, { AxiosError, AxiosResponseHeaders } from 'axios';\nimport type { CartMigrationDetail } from 'domains/cart';\n\nimport { API_ROOT_URL, API_TOKEN } from 'utils/globals';\n\nconst headers = {\n common: {\n Authorization: `Token token=\"${API_TOKEN}\"`,\n },\n};\n\nconst CART_GUID_HEADER = 'X-Cart-Guid';\nconst MIGRATION_HEADER = 'X-Cart-Requires-Migration';\n\nconst api = axios.create({ baseURL: `${API_ROOT_URL}/api/cart/v1`, headers });\n\nexport default api;\n\nexport function setCartGuidHeader(guid: axios.AxiosHeaderValue) {\n api.defaults.headers[CART_GUID_HEADER] = guid;\n}\n\nexport function getCartGuidHeader() {\n return api.defaults.headers[CART_GUID_HEADER];\n}\n\nexport function mustForceMigrationRefresh(migration: CartMigrationDetail) {\n return (\n migration.removed_cart_order_option_ids.length > 0 ||\n migration.removed_cart_product_ids.length > 0 ||\n !!migration.removed_cart_shipping_method_id\n );\n}\n\nexport function forceMigrationRefresh() {\n window.alert('We have detected outdated items in your cart. Your page will refresh.');\n window.location.reload();\n}\n/**\n * All requests through the cart API might respond with an error & header value indicating\n * that the cart was on an outdated catalog snapshot. If this happens, we need to attempt\n * to migrate the cart to the newest snapshot. In the case that this migration goes well\n * and no products/options have changed, we can just retry the user's original request and\n * continue on. If something DID change (which in the timeline of a session is very unlikely),\n * we have no option but to stop what was happening, alert the user, and force a page refresh.\n */\napi.interceptors.response.use(\n (res) => res,\n async (error: AxiosError) => {\n const headers = error.response?.headers;\n function isAxiosHeaders(h: typeof headers): h is AxiosResponseHeaders {\n return !!h && !!h.has;\n }\n\n if (\n error.response?.status === 409 &&\n isAxiosHeaders(headers) &&\n headers.has(MIGRATION_HEADER)\n ) {\n const original = error.config;\n if (!original) return Promise.reject(error);\n\n try {\n const { data } = await api.post<CartMigrationDetail>('/migrate');\n\n if (mustForceMigrationRefresh(data)) {\n forceMigrationRefresh();\n return;\n } else {\n return axios(original);\n }\n } catch (secondError) {\n return Promise.reject(secondError);\n }\n }\n\n return Promise.reject(error);\n }\n);\n", "import type { HostedFieldsTokenizePayload } from 'braintree-web';\n\n/** Alias for braintree hosted fields type */\nexport type PaymentMethod = HostedFieldsTokenizePayload;\n\nexport type CustomerPaymentTypes = {\n net_terms: boolean;\n braintree_payments: boolean;\n};\n\n/** Defined on order-api cart submit endpoint */\nexport type PaymentType =\n | 'net_terms'\n | 'credit_card'\n | 'apple_pay'\n | 'wholly_gift_certificate'\n | 'deferred_labworks';\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './checkout.slice';\n\nimport { notNull } from 'utils/type_guards';\n\nimport { braintreeClient } from 'domains/braintree_client';\nimport cartModule from 'domains/cart';\nimport cartBilling from 'domains/cart_billing';\nimport cartShipping from 'domains/cart_shipping';\nimport cartPaymentMethod from 'domains/cart_payment_method';\nimport giftCert from 'domains/gift_cert';\n\nimport type { CheckoutRootState } from 'store/checkout_store';\nimport type { CartSubmitData } from './checkout.types';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectCheckoutInitialized = (state: LocalState) => state.initialized;\nconst selectCheckoutSubmitStatus = (state: LocalState) => state.submitStatus;\nconst selectCheckoutSubmitError = (state: LocalState) => state.submitError;\nconst selectConfirmationDetailsStatus = (state: LocalState) => state.confirmationDetails.status;\n\n/**\n * Does the cart have all the correct requirements for submitting\n */\nconst selectHasFullyQualifiedCart = (state: CheckoutRootState) => {\n const cart = cartModule.selectors.cart(state);\n const hasValidPayment = cartPaymentMethod.selectors.hasValidType(state);\n const cert = giftCert.selectors.valid(state);\n\n return (\n notNull(cart) &&\n notNull(cart.shipping?.shipping_method_api_id) &&\n hasValidPayment &&\n // We should have the valid gift cert available if one is being used\n ((cart.gift_certificate.id && !!cert) || !cart.gift_certificate.id)\n );\n};\n\n/**\n * Expected values to pass when submitting an order\n */\nconst selectSubmitOrderValues = (state: CheckoutRootState): CartSubmitData => {\n const billing = cartBilling.selectors.billing(state);\n const total = billing?.total;\n const giftCertUsage = cartPaymentMethod.selectors.giftCert(state);\n\n const token = cartPaymentMethod.selectors.token(state);\n const paymentNonce = token?.nonce;\n\n const paymentType = cartPaymentMethod.selectors.validType(state);\n if (!notNull(total)) {\n throw new Error('No Billing Data');\n }\n\n if (!notNull(paymentType)) {\n throw new Error('No Payment Method');\n }\n\n const submitData: CartSubmitData = {\n expected_total: total,\n expected_gift_certificate_usage_total: giftCertUsage.usage,\n payment_type: paymentType,\n };\n\n if (paymentType === 'credit_card') {\n if (!paymentNonce) throw new Error('No Payment Nonce');\n submitData.braintree_device_data = braintreeClient.deviceData;\n submitData.braintree_payment_method_nonce = paymentNonce;\n }\n\n return submitData;\n};\n\nconst selectCheckoutHasError = (state: CheckoutRootState) =>\n selectConfirmationDetailsStatus(localState(state)) === 'error' ||\n cartShipping.selectors.methodStatus(state) === 'error' ||\n cartPaymentMethod.selectors.status(state) === 'error' ||\n cartModule.selectors.status(state) === 'error';\n\nexport default {\n isInitialized: compose(selectCheckoutInitialized, localState),\n submitStatus: compose(selectCheckoutSubmitStatus, localState),\n submitError: compose(selectCheckoutSubmitError, localState),\n confirmationDetailsStatus: compose(selectConfirmationDetailsStatus, localState),\n // Already globalized\n hasError: selectCheckoutHasError,\n submitValues: selectSubmitOrderValues,\n hasFullyQualifiedCart: selectHasFullyQualifiedCart,\n};\n", "export * from './braintree_client';\n", "import { BRAINTREE_TOKEN } from 'utils/globals';\n\nimport dataCollector from 'braintree-web/data-collector';\nimport client, { Client } from 'braintree-web/client';\nimport hostedFields, { HostedFields } from 'braintree-web/hosted-fields';\nimport { ApplePay, applePay } from 'braintree-web';\n\nclass BraintreeClient {\n btclient?: Client;\n hf?: HostedFields;\n applePay?: ApplePay;\n deviceData: string;\n error?: Error;\n\n cardholderId = 'braintree-card-cardholder';\n numberId = 'braintree-card-number';\n expirationId = 'braintree-cart-expiration';\n cvvId = 'braintree-card-cvv';\n postalId = 'braintree-card-postal';\n\n constructor() {\n client.create({ authorization: BRAINTREE_TOKEN }, (err, instance) => {\n if (err) {\n this.error = err;\n } else {\n this.btclient = instance;\n }\n });\n }\n\n async initHostedFields(onSubmit: () => void) {\n if (!this.btclient) {\n const error = this.error || new Error('No Braintree Client');\n throw error;\n }\n\n const dc = await dataCollector.create({ client: this.btclient });\n this.deviceData = dc.deviceData;\n\n if (!this.deviceData) {\n throw new Error('No Braintree Device Data');\n }\n\n this.hf = await hostedFields.create({\n client: this.btclient,\n styles: {\n input: {\n color: '#FFF',\n },\n },\n fields: {\n cardholderName: {\n container: `#${this.cardholderId}`,\n },\n number: {\n container: `#${this.numberId}`,\n },\n expirationDate: {\n container: `#${this.expirationId}`,\n },\n cvv: {\n container: `#${this.cvvId}`,\n },\n postalCode: {\n container: `#${this.postalId}`,\n },\n },\n });\n\n this.hf.on('inputSubmitRequest', onSubmit);\n }\n\n async initApplePay() {\n if (!this.btclient) {\n const error = this.error || new Error('No Braintree Client');\n throw error;\n }\n\n if (!this.applePay) {\n this.applePay = await applePay.create({\n client: this.btclient,\n });\n }\n\n const dc = await dataCollector.create({ client: this.btclient });\n this.deviceData = dc.deviceData;\n\n if (!this.deviceData) {\n throw new Error('No Braintree Device Data');\n }\n }\n}\n\nexport const braintreeClient = new BraintreeClient();\n", "import actions from './cart.actions';\nimport selectors from './cart.selectors';\nimport slice from './cart.slice';\n\nexport * from './cart.model';\n\nexport * from './cart.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './cart.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { Cart, CartUpdateFields } from '.';\n\nconst check = {\n pending: createAction('cart/check/pending'),\n fulfilled: createAction('cart/check/fulfilled'),\n rejected: createAction('cart/check/rejected'),\n};\n\nconst get = {\n pending: createAction('cart/get/pending'),\n fulfilled: createAction<Cart>('cart/get/fulfilled'),\n rejected: createAction('cart/get/rejected'),\n};\n\nconst create = {\n pending: createAction('cart/create/pending'),\n fulfilled: createAction<Cart>('cart/create/fulfilled'),\n rejected: createAction('cart/create/rejected'),\n};\n\nconst update = {\n pending: createAction<CartUpdateFields>('cart/update/pending'),\n fulfilled: createAction<CartUpdateFields>('cart/update/fulfilled'),\n rejected: createAction('cart/update/rejected'),\n};\n\nexport default {\n check,\n get,\n create,\n update,\n};\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './cart.slice';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectCart = (state: LocalState) => state.betterCart;\n\nconst selectCartPromoCode = (state: LocalState) => state.betterCart?.promo_code || null;\nconst selectCartGiftCert = (state: LocalState) => state.betterCart?.gift_certificate;\n\nconst selectCartStatus = (state: LocalState) => state.status;\n\nconst selectHasCartGuid = (state: LocalState) => {\n return !!state.betterCart?.guid;\n};\n\nconst selectCartGuidRequired = (state: LocalState) => {\n const guid = state.betterCart?.guid;\n\n if (!guid) throw new Error('No Cart');\n\n return guid;\n};\n\nconst selectCartProjectId = (state: LocalState) => state.betterCart?.cart_project_id;\n\nconst selectCartPaymentType = (state: LocalState) => state.betterCart?.payment?.payment_type;\nconst selectCartPaymentMethod = (state: LocalState) => state.betterCart?.payment;\n\nexport default {\n cart: compose(selectCart, localState),\n promoCode: compose(selectCartPromoCode, localState),\n giftCard: compose(selectCartGiftCert, localState),\n status: compose(selectCartStatus, localState),\n hasGuid: compose(selectHasCartGuid, localState),\n guidRequired: compose(selectCartGuidRequired, localState),\n projectId: compose(selectCartProjectId, localState),\n paymentType: compose(selectCartPaymentType, localState),\n paymentMethod: compose(selectCartPaymentMethod, localState),\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport actions from './cart.actions';\n\nimport cartProducts from 'domains/cart_products';\nimport cartProductCreator from 'domains/cart_product_creator';\n\nimport {\n createCartOrderOption,\n deleteCartOrderOption,\n getCartOrderOptions,\n} from 'domains/cart_order_options';\n\nimport type { Cart, CartSliceInitialState } from './cart.types';\n\nconst initialState: CartSliceInitialState = {\n status: 'idle',\n betterCart: null,\n cartCheck: false,\n};\n\nconst cart = createSlice({\n name: 'cart',\n initialState,\n reducers: {\n set(state, { payload }: PayloadAction<Cart>) {\n return {\n ...state,\n status: 'idle',\n betterCart: payload,\n cartCheck: true,\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.check.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n // This happens when the cart check does not error, but there is no cart to fetch\n .addCase(actions.check.fulfilled, (state) => {\n return { ...state, cartCheck: true, status: 'idle' };\n })\n .addCase(actions.check.rejected, (state) => {\n return { ...state, status: 'error' };\n })\n .addCase(actions.get.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.get.fulfilled, (state, { payload }) => {\n return { ...state, betterCart: payload };\n })\n .addCase(actions.get.rejected, (state) => {\n return { ...state, status: 'error' };\n })\n\n .addCase(actions.create.fulfilled, (state, { payload }) => {\n return { ...state, betterCart: payload };\n })\n .addCase(actions.update.fulfilled, (state, { payload }) => {\n if (!state.betterCart) return state;\n\n return {\n ...state,\n betterCart: {\n ...state.betterCart,\n ...payload,\n },\n };\n })\n\n .addCase(cartProducts.actions.destroy.fulfilled, (state, { payload }) => {\n if (!state.betterCart) return state;\n\n return {\n ...state,\n betterCart: {\n ...state.betterCart,\n product_ids: state.betterCart.product_ids.filter((id) => id !== payload),\n },\n };\n })\n .addCase(createCartOrderOption.fulfilled, (state, { payload }) => {\n return { ...state, betterCart: payload };\n })\n .addCase(getCartOrderOptions.fulfilled, (state, { payload }) => {\n if (!state.betterCart) return state;\n\n return {\n ...state,\n betterCart: {\n ...state.betterCart,\n options: payload,\n },\n };\n })\n .addCase(deleteCartOrderOption.fulfilled, (state, { payload }) => {\n return { ...state, betterCart: payload };\n })\n\n .addCase(cartProductCreator.actions.addToCart.fulfilled, (state, { payload }) => {\n if (!state.betterCart) return state;\n\n return {\n ...state,\n betterCart: {\n ...state.betterCart,\n product_ids: [...state.betterCart.product_ids, ...payload.map((cp) => cp.id)],\n },\n };\n });\n },\n});\n\nexport default cart;\n", "import actions from './cart_products.actions';\nimport selectors from './cart_products.selectors';\nimport slice from './cart_products.slice';\nimport utils from './cart_products.utils';\n\nexport * from './cart_products.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n utils,\n};\n\nexport { default as slice } from './cart_products.slice';\n\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { CartProductForUpdate, CartProduct } from './cart_products.types';\n\nconst getAll = {\n pending: createAction('cartProducts/getAllCartProducts/pending'),\n fulfilled: createAction<CartProduct[]>('cartProducts/getAllCartProducts/fulfilled'),\n rejected: createAction('cartProducts/getAllCartProducts/rejected'),\n};\n\nconst checkThumbs = createAction<CartProduct[]>('cartProducts/checkThumbs');\n\nconst update = {\n fulfilled: createAction<CartProduct>('cartProducts/update/fulfilled'),\n rejected: createAction('cartProducts/update/rejected'),\n};\n\nconst updateQuantity = {\n pending: createAction<Required<Pick<CartProductForUpdate, 'id' | 'quantity'>>>(\n 'cartProducts/updateQuantity/pending'\n ),\n fulfilled: createAction<CartProduct>('cartProducts/updateQuantity/fulfilled'),\n rejected: createAction('cartProducts/updateQuantity/rejected'),\n};\n\nconst destroy = {\n pending: createAction<number>('cartProducts/destroy/pending'),\n fulfilled: createAction<number>('cartProducts/destroy/fulfilled'),\n rejected: createAction('cartProducts/destroy/rejected'),\n};\n\nexport default {\n getAll,\n checkThumbs,\n update,\n updateQuantity,\n destroy,\n};\n", "import { combineReducers, createSelector, compose } from '@reduxjs/toolkit';\n\nimport slice from './cart_products.slice';\nimport cartProductsAdapter from './cart_products.adapter';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst defaultSelectors = cartProductsAdapter.getSelectors();\n\nconst selectCartProductsPage = (state: LocalState) => state.page;\nconst selectCartProductsPerPage = (state: LocalState) => state.productsPerPage;\nconst selectTotalCartProductsPages = (state: LocalState) =>\n Math.ceil(state.ids.length / state.productsPerPage);\n\nconst selectPagedCartProducts = createSelector(\n [\n compose(defaultSelectors.selectAll, localState),\n compose(selectCartProductsPage, localState),\n compose(selectCartProductsPerPage, localState),\n ],\n (cps, page, perPage) => {\n const startIndex = perPage * (page - 1);\n\n return cps.slice(startIndex, startIndex + perPage);\n }\n);\n\nconst selectUnsupportedOrderOptions = createSelector(\n [compose(defaultSelectors.selectAll, localState)],\n (allCartProducts) => allCartProducts.map((cp) => cp.unsupported_order_option_types)\n);\n\nexport default {\n ...cartProductsAdapter.getSelectors(localState),\n page: compose(selectCartProductsPage, localState),\n countPerPage: compose(selectCartProductsPerPage, localState),\n pageCount: compose(selectTotalCartProductsPages, localState),\n // Already globalized\n paginated: selectPagedCartProducts,\n unsupportedOrderOptions: selectUnsupportedOrderOptions,\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport cartProductsAdapter from './cart_products.adapter';\n\nimport actions from './cart_products.actions';\n\nimport type { LoadingStatus } from 'types/common_types';\nimport type { CartProductsSliceInitialState } from './cart_products.types';\n\nconst initialState: CartProductsSliceInitialState = {\n status: 'idle',\n productsPerPage: 20,\n page: 1,\n};\n\nconst cartProducts = createSlice({\n name: 'cartProducts',\n initialState: cartProductsAdapter.getInitialState(initialState),\n reducers: {\n reset() {\n return cartProductsAdapter.getInitialState(initialState);\n },\n addMany: cartProductsAdapter.addMany,\n setPage(state, { payload }: PayloadAction<number>) {\n return { ...state, page: payload };\n },\n updateCartProductsLoading(state, { payload }: PayloadAction<LoadingStatus>) {\n return { ...state, status: payload };\n },\n cartProductThumbnailError(state, { payload }: PayloadAction<number>) {\n // return cartProductsAdapter.updateOne(state, {\n // id: payload,\n // changes: {\n // thumb_url: 'error',\n // },\n // });\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.getAll.fulfilled, (state, { payload }) => {\n return cartProductsAdapter.setAll(state, payload);\n })\n .addCase(actions.update.fulfilled, (state, { payload }) => {\n const update = cartProductsAdapter.upsertOne(state, payload);\n update.status = 'idle';\n })\n .addCase(actions.updateQuantity.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.updateQuantity.fulfilled, (state, { payload }) => {\n const update = cartProductsAdapter.updateOne(state, {\n id: payload.id,\n changes: { ...payload },\n });\n update.status = 'idle';\n })\n\n .addCase(actions.destroy.pending, (state, { payload }) => {\n return { ...state, dropping: payload, status: 'loading' };\n })\n .addCase(actions.destroy.fulfilled, (state, { payload }) => {\n const update = cartProductsAdapter.removeOne(state, payload);\n\n const startIndex = update.productsPerPage * (update.page - 1);\n const currentPageIds = update.ids.slice(startIndex, startIndex + update.productsPerPage);\n\n if (currentPageIds.length === 0 && update.page !== 1) {\n update.page -= 1;\n }\n\n update.status = 'idle';\n return update;\n });\n },\n});\n\nexport default cartProducts;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { CartProduct } from './cart_products.types';\n\nconst cartProductsAdapter = createEntityAdapter<CartProduct>({\n sortComparer(a, b) {\n return b.id - a.id;\n },\n});\n\nexport default cartProductsAdapter;\n", "import { notNull } from 'utils/type_guards';\n\nimport type { PickRequired } from 'types/common_types';\nimport type { CartProduct, CartProductMaybeThumb } from './cart_products.types';\n\nfunction hasData(cp: CartProduct): cp is CartProductMaybeThumb {\n return !!cp.name;\n}\n\nfunction hasPreviewUrl(cp: CartProduct): cp is PickRequired<CartProduct, 'preview_url'> {\n return notNull(cp.preview_url);\n}\n\nexport default { hasData, hasPreviewUrl };\n", "import type { FontFamily, TextAlignment } from 'domains/text_nodes';\nimport type { Dimension, LoadingStatus, PickRequired } from 'types/common_types';\n\nexport type CartProductsSliceInitialState = {\n status: LoadingStatus;\n productsPerPage: number;\n page: number;\n};\n\ntype CartProductParams = {\n product_api_id?: number;\n quantity?: number;\n canvas_rotation?: number;\n /** 8 character Hex value */\n border_color?: string;\n addon?: boolean;\n custom_size?: Dimension;\n};\n\ntype CartProductCreateParams = PickRequired<CartProductParams, 'product_api_id' | 'quantity'>;\n\ntype CartProductOptionParams = {\n option_api_id?: number;\n quantity?: number;\n};\n\ntype CartProductOptionCreateParams = Required<CartProductOptionParams>;\n\nexport type CartProductPhotoStyleFilter = 'black_and_white' | 'sepia_a' | 'sepia_b';\n\nexport type CartProductPhotoParams = {\n node_id?: number;\n url?: string;\n filename?: string;\n external_asset_id?: number;\n rotation?: number;\n style_filter?: CartProductPhotoStyleFilter;\n crop?: {\n x: number;\n y: number;\n w: number;\n h: number;\n };\n _destroy?: boolean;\n};\n\ntype RequiredPhotoParams =\n | 'node_id'\n | 'url'\n | 'filename'\n | 'external_asset_id'\n | 'rotation'\n | 'crop';\nexport type CartProductPhotoCreateParams = PickRequired<\n CartProductPhotoParams,\n RequiredPhotoParams\n>;\n\ntype CartProductTextNodeParams = {\n node_id?: number;\n font_size?: string;\n font_family?: string;\n text_color?: string;\n text_horizontal_alignment?: string;\n text_vertical_alignment?: string;\n text_content?: string;\n ppi?: number;\n auto_fit?: boolean;\n svg?: string;\n};\n\nexport type CartProductTextNodeCreateParams = Required<CartProductTextNodeParams>;\n\nexport type CartProductForCreate = CartProductCreateParams & {\n cart_product_options_attributes?: CartProductOptionCreateParams[];\n cart_photos_attributes?: CartProductPhotoCreateParams[];\n cart_text_nodes_attributes?: CartProductTextNodeCreateParams[];\n};\n\nexport type CartProductForUpdate = CartProductParams & {\n id: number;\n cart_product_options_params?: CartProductOptionParams & { id?: number }[];\n cart_photos_attributes?: CartProductPhotoParams & { id?: number }[];\n cart_text_nodes_attributes?: CartProductTextNodeParams & { id?: number }[];\n};\n\nexport type CartProduct = {\n id: number;\n name?: string;\n quantity?: number;\n /** Thumbnail preview image */\n thumbnail_url?: string | null;\n /** Full size preview image */\n preview_url?: string | null;\n product_price?: number;\n discount_amount?: number;\n discount_percentage?: number;\n canvas_rotation?: number;\n border_color?: string | null;\n addon?: boolean;\n product_api_id?: number;\n created_at?: string;\n updated_at?: string;\n custom_size?: { width: string | null; height: string | null };\n unsupported_order_option_types?: string[];\n photos?: CartProductPhoto[];\n options?: CartProductOption[];\n text_nodes?: CartProductTextNode[];\n pricing?: Required<CartItemPricing>;\n};\n\nexport type CartProductMaybeThumb = Omit<Required<CartProduct>, 'thumbnail_url' | 'preview_url'> & {\n thumbnail_url?: string | null;\n preview_url?: string | null;\n};\n\nexport type ExpandedCartProduct = CartProductMaybeThumb & {\n catalog_api_id: number;\n sub_catalog_api_id: number;\n};\n\nexport type CartProductPhoto = {\n id: number;\n url: string;\n filename: string;\n external_asset_id: string;\n node_id: number;\n created_at: string;\n updated_at: string;\n style_filter: CartProductPhotoStyleFilter;\n crop: {\n rotation: number;\n x: string;\n y: string;\n w: string;\n h: string;\n };\n};\n\nexport type CartProductOption = {\n id: number;\n name: string;\n quantity: number;\n hidden: boolean;\n option_api_id: number;\n created_at: string;\n updated_at: string;\n pricing: CartItemPricing;\n};\n\nexport type CartItemPricing = {\n /** Base price of item */\n unit_price_before_options?: number;\n /** Base price of item, including options */\n unit_price: number;\n /** Base price minus discounts */\n unit_price_after_discount: number;\n /** Amount of discount */\n discount: number;\n /** Price with quantity applied, no discounts applied */\n subtotal: number;\n /** Price with quantity and discounts applied */\n total: number;\n};\n\n// TODO: change things in here to the values on text node data types\nexport type CartProductTextNode = {\n id: number;\n node_id: number;\n font_size: string;\n font_family: FontFamily;\n text_color: string;\n text_horizontal_alignment: TextAlignment;\n text_vertical_alignment: TextAlignment;\n text_content: string;\n auto_fit: boolean;\n svg: string;\n ppi: number;\n rendered_asset_url: string;\n rendered_asset_url_updated_at: string;\n created_at: string;\n updated_at: string;\n};\n", "import actions from './cart_product_creator.actions';\nimport selectors from './cart_product_creator.selectors';\nimport slice from './cart_product_creator.slice';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './cart_product_creator.slice';\n\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { CartProduct } from 'domains/cart_products';\n\ntype AddToCartType = 'standard' | 'multiphoto';\n\nconst addToCart = {\n pending: createAction<AddToCartType>('cartProductCreator/addToCart/pending'),\n ready: createAction<AddToCartType>('cartProductCreator/addToCart/ready'),\n fulfilled: createAction<CartProduct[]>('cartProductCreator/addToCart/fulfilled'),\n rejected: createAction('cartProductCreator/addToCart/rejected'),\n};\n\nconst saveCartProductEdit = {\n pending: createAction('cartProductCreator/saveCartProductEdits/pending'),\n fulfilled: createAction<{ update: CartProduct; removeId: number }>(\n 'cartProductCreator/saveCartProductEdit/fulfilled'\n ),\n rejected: createAction('cartProductCreator/saveCartProductEdit/rejected'),\n};\n\nexport default {\n addToCart,\n saveCartProductEdit,\n};\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './cart_product_creator.slice';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectAddToCartStatus = (state: LocalState) => state.status;\nconst selectAddToCartIsProcessing = (state: LocalState) => state.status === 'loading';\nconst selectAddToCartSuccess = (state: LocalState) => state.addToCartSuccess;\nconst selectAddToCartQuantity = (state: LocalState) => state.addToCartQuantity;\nconst selectAddToCartWasEdit = (state: LocalState) => state.addToCartWasEdit;\n\nexport default {\n quantity: compose(selectAddToCartQuantity, localState),\n status: compose(selectAddToCartStatus, localState),\n isProcessing: compose(selectAddToCartIsProcessing, localState),\n wasSuccessful: compose(selectAddToCartSuccess, localState),\n wasEdit: compose(selectAddToCartWasEdit, localState),\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\nimport { LoadingStatus } from 'types/common_types';\n\nimport actions from './cart_product_creator.actions';\n\nimport { realNumber } from 'utils/math_util';\n\ntype CartProductCreatorSliceInitialState = {\n status: LoadingStatus;\n addToCartSuccess: boolean;\n addToCartWasEdit: boolean;\n addToCartQuantity: number;\n};\n\nconst initialState: CartProductCreatorSliceInitialState = {\n status: 'idle',\n addToCartSuccess: false,\n addToCartWasEdit: false,\n addToCartQuantity: 1,\n};\n\nconst slice = createSlice({\n name: 'cartProductCreator',\n initialState,\n reducers: {\n resetAddToCartSuccess(state) {\n return { ...state, addToCartSuccess: false, addToCartWasEdit: false };\n },\n updateQuantity(state, { payload }: PayloadAction<string>) {\n let value = parseInt(payload);\n\n // Allow 0 if number is deleted, but the add to cart button will be disabled\n if (!realNumber(value)) {\n value = 0;\n }\n\n return { ...state, addToCartQuantity: value };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.addToCart.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.addToCart.fulfilled, (state) => {\n return { ...state, status: 'idle', addToCartSuccess: true };\n })\n .addCase(actions.addToCart.rejected, (state, { payload }) => {\n return {\n ...state,\n status: 'idle',\n };\n })\n .addCase(actions.saveCartProductEdit.pending, (state) => {\n return {\n ...state,\n status: 'loading',\n addToCartWasEdit: true,\n };\n })\n .addCase(actions.saveCartProductEdit.fulfilled, (state) => {\n return {\n ...state,\n addToCartSuccess: true,\n status: 'idle',\n };\n })\n .addCase(actions.saveCartProductEdit.rejected, (state) => {\n return { ...state, addToCartSuccess: false, status: 'error' };\n });\n },\n});\n\nexport default slice;\n", "export * from './cart_order_options.model';\nexport * from './cart_order_options.actions';\nexport * from './cart_order_options.selectors';\nexport * from './cart_order_options.types';\n", "import cartAPI from 'apis/cart';\n\nimport type { CartOrderOption } from './cart_order_options.types';\n\nexport const CartOrderOptionsModel = {\n async all() {\n const { data } = await cartAPI.get<Required<CartOrderOption[]>>('/order_options');\n return data;\n },\n async create(payload: { add: number; remove?: number }) {\n const { add, remove } = payload;\n if (remove) {\n await cartAPI.delete(`/order_options/${remove}`);\n }\n\n await cartAPI.post<{ id: number }>('/order_options', { option_api_id: add, quantity: 1 });\n },\n async delete(id: number) {\n await cartAPI.delete(`/order_options/${id}`);\n },\n};\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { Cart } from 'domains/cart/cart.types';\nimport type { CartOrderOption } from './cart_order_options.types';\n\nexport const getCartOrderOptions = {\n fulfilled: createAction<CartOrderOption[]>('cartOrderOptions/getCartOrderOptions/fulfilled'),\n rejected: createAction('cartOrderOptions/getCartOrderOption/rejected'),\n};\n\nexport const createCartOrderOption = {\n pending: createAction<number>('cartOrderOptions/createCartOrderOption/pending'),\n fulfilled: createAction<Cart>('cartOrderOptions/createCartOrderOption/fulfilled'),\n rejected: createAction('cartOrderOptions/createCartOrderOption/rejected'),\n};\n\nexport const deleteCartOrderOption = {\n pending: createAction<number>('cartOrderOptions/deleteCartOrderOption/pending'),\n fulfilled: createAction<Cart>('cartOrderOptions/deleteCartOrderOption/fulfilled'),\n rejected: createAction('cartOrderOptions/deleteCartOrderOption/rejected'),\n};\n", "import type { RootState } from 'store/wos_store';\n\nexport const selectCartOrderOptions = (state: RootState) => state.cart.betterCart?.options;\n", "import type { CartItemPricing } from 'domains/cart_products';\n\nexport type CartOrderOptionCreateParams = {\n option_api_id: number;\n quantity: number;\n};\n\nexport type CartOrderOption = {\n id: number;\n name: string;\n quantity: number;\n option_api_id: number;\n created_at: string;\n updated_at: string;\n pricing?: CartItemPricing;\n};\n", "import wos from 'apis/wos';\nimport cartAPI, {\n forceMigrationRefresh,\n mustForceMigrationRefresh,\n setCartGuidHeader,\n} from 'apis/cart';\n\nimport type { Cart, CartMigrationDetail } from '.';\nimport type { CartSubmitData } from 'domains/checkout';\n\ntype CartGuidResponse = { cart_guid: string };\nexport type CartUpdateFields = Partial<Pick<Cart, 'color_correct' | 'reference'>>;\n\nexport const CartModel = {\n async check() {\n const resp = await wos.get<CartGuidResponse | null>('/cart.json');\n\n if (resp.data) {\n setCartGuidHeader(resp.data.cart_guid);\n }\n\n return resp.data?.cart_guid;\n },\n\n async get() {\n let resp = await cartAPI.get<Cart>(`/`);\n\n if (!resp.data.on_latest_snapshot) {\n const { data } = await cartAPI.post<CartMigrationDetail>('/migrate');\n if (mustForceMigrationRefresh(data)) {\n forceMigrationRefresh();\n }\n\n resp = await cartAPI.get<Cart>(`/`);\n }\n\n return resp.data;\n },\n\n async create() {\n const { data } = await wos.post<CartGuidResponse>('/carts.json');\n\n setCartGuidHeader(data.cart_guid);\n const resp = await cartAPI.get<Cart>(`/`);\n\n return resp.data;\n },\n\n async update<T extends CartUpdateFields>(update: T) {\n const resp = await cartAPI.patch<T>('/', update);\n\n return resp.data;\n },\n\n async submit(submitData: CartSubmitData) {\n const resp = await cartAPI.post<{ id: string }>('/submit', submitData);\n\n return resp.data.id;\n },\n};\n", "import axios from 'axios';\n\nimport { API_TOKEN, SESSION_ID } from 'utils/globals';\n\nfunction getCSRFToken() {\n const csrfField = document.querySelector('meta[name=\"csrf-token\"]');\n return csrfField ? csrfField.getAttribute('content') : '';\n}\n\nconst wosAPIHeaders = {\n 'X-CSRF-Token': getCSRFToken(),\n 'Content-Type': 'application/json',\n Authorization: `Token token=\"${API_TOKEN}\"`,\n session_id: SESSION_ID,\n};\n\nexport default axios.create({ baseURL: '', headers: wosAPIHeaders });\n\nexport const eventsAPI = axios.create({\n baseURL: '/meta_tracking_events',\n headers: wosAPIHeaders,\n});\n", "import type { CartOrderOption } from 'domains/cart_order_options';\nimport type { PaymentType } from 'domains/cart_payment_method';\nimport type { CartShippingMethod, CartPickupMethod } from 'domains/cart_shipping';\nimport type { LoadingStatus, StrictUnion } from 'types/common_types';\n\nexport type CartSliceInitialState = {\n status: LoadingStatus;\n betterCart: Cart | null;\n cartCheck: boolean;\n};\n\nexport type Cart = {\n guid: string;\n id: number;\n snapshot_id: number;\n on_latest_snapshot: boolean;\n customer_id?: string;\n customer_email?: string;\n color_correct: boolean;\n reference?: string;\n promo_code: string | null;\n created_at: string;\n updated_at: string;\n shipping: StrictUnion<CartShippingMethod | CartPickupMethod> | null;\n payment: CartPayment | null;\n gift_certificate: CartGiftCertificate;\n product_ids: number[];\n addon_ids: number[];\n options: CartOrderOption[];\n project: boolean;\n cart_project_id: number | null;\n};\n\nexport type CartPayment = {\n last_four?: string;\n postal_code?: string;\n expiration_month?: string;\n expiration_year?: string;\n payment_type: PaymentType;\n};\n\nexport type CartGiftCertificate = {\n id?: string;\n amount_used?: number;\n};\n\nexport type CartMigrationDetail = {\n removed_cart_product_ids: number[];\n removed_cart_order_option_ids: number[];\n removed_cart_shipping_method_id: number;\n};\n", "import actions from './cart_shipping.actions';\nimport selectors from './cart_shipping.selectors';\nimport slice from './cart_shipping.slice';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport * from './cart_shipping.types';\nexport { default as slice } from './cart_shipping.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { Address, BaseAddress } from 'domains/addresses';\nimport type {\n AddressValidationConfirmation,\n SaveShippingAddressPayload,\n SaveShippingMethodPayload,\n} from './cart_shipping.types';\n\nconst validateShippingAddress = {\n pending: createAction<Address>('checkout/validateShippingAddress/pending'),\n fulfilled: createAction<BaseAddress | undefined>('checkout/validateShippingAddress/fulfilled'),\n confirm: createAction<AddressValidationConfirmation>('checkout/validateShippingAddress/confirm'),\n cancel: createAction('checkout/validateShippingAddress/cancel'),\n};\n\nconst saveShippingAddress = {\n pending: createAction<SaveShippingAddressPayload>('checkout/saveShippingAddress/pending'),\n fulfilled: createAction('checkout/saveShippingAddress/fulfilled'),\n rejected: createAction('checkout/saveShippingAddress/rejected'),\n};\n\nconst saveShippingMethod = {\n pending: createAction<SaveShippingMethodPayload>('checkout/saveShippingMethod/pending'),\n fulfilled: createAction('checkout/saveShippingMethod/fulfilled'),\n rejected: createAction('checkout/saveShippingMethod/rejected'),\n};\n\nconst getAllShippingMethods = {\n pending: createAction('cartShipping/getAllShippingMethods/pending'),\n fulfilled: createAction('cartShipping/getAllShippingMethods/fulfilled'),\n rejected: createAction('cartShipping/getAllShippingMethods/rejected'),\n};\n\nexport default {\n validateShippingAddress,\n saveShippingAddress,\n saveShippingMethod,\n getAllShippingMethods,\n};\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport slice from './cart_shipping.slice';\n\nimport addresses from 'domains/addresses';\nimport shippingMethods from 'domains/shipping_methods';\nimport utils from './cart_shipping.utils';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectOriginalAddress = (state: LocalState) => state.originalAddress;\nconst selectSuggestedAddress = (state: LocalState) => state.suggestedAddress;\nconst selectConfirmedShippingAddress = (state: LocalState) => state.confirmedAddress;\nconst selectShippingAddressStatus = (state: LocalState) => state.addressStatus;\nconst selectShippingMethodStatus = (state: LocalState) => state.methodStatus;\nconst selectShippingAddressValidationStatus = (state: LocalState) => state.validationStatus;\nconst selectShippingMethodType = (state: LocalState) => state.type;\n\nconst selectCartShipping = (state: LocalState) => {\n return state.saved;\n};\n\nconst selectCartShippingMethodId = (state: LocalState) => {\n return state.saved?.shipping_method_api_id;\n};\n\nconst selectHasSavedShippingAddress = (state: LocalState) =>\n !!selectConfirmedShippingAddress(state) || !!selectCartShipping(state);\n\nconst selectCartShippingAddress = (state: LocalState) => {\n const shipping = selectCartShipping(state);\n if (shipping && utils.cartShippingIsShipping(shipping)) {\n return addresses.utils.format.fromShippingAddress(shipping);\n }\n};\n\nconst selectCartPickupRecipient = (state: LocalState) => {\n const shipping = selectCartShipping(state);\n if (shipping && utils.cartShippingIsPickup(shipping)) {\n return shipping.recipient;\n }\n};\n\nconst selectCartShippingMethod = createSelector(\n [compose(selectCartShippingMethodId, localState), shippingMethods.selectors.selectAll],\n (id, methods) => methods.find((sm) => sm.api_id === id)\n);\n\nexport default {\n validationOriginal: compose(selectOriginalAddress, localState),\n validationSuggested: compose(selectSuggestedAddress, localState),\n validationConfirmed: compose(selectConfirmedShippingAddress, localState),\n addressStatus: compose(selectShippingAddressStatus, localState),\n methodStatus: compose(selectShippingMethodStatus, localState),\n validationStatus: compose(selectShippingAddressValidationStatus, localState),\n type: compose(selectShippingMethodType, localState),\n saved: compose(selectCartShipping, localState),\n savedMethodId: compose(selectCartShippingMethodId, localState),\n savedAddress: compose(selectCartShippingAddress, localState),\n pickupRecipient: compose(selectCartPickupRecipient, localState),\n // Globalized\n savedMethod: selectCartShippingMethod,\n hasSavedAddress: selectHasSavedShippingAddress,\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport cart from 'domains/cart';\n\nimport actions from './cart_shipping.actions';\n\nimport type { Address, BaseAddress } from 'domains/addresses';\nimport type { CheckoutStatus } from 'domains/checkout';\nimport type { ShippingMethodType } from 'domains/shipping_methods';\nimport type { CartPickupMethod, CartShippingMethod } from './cart_shipping.types';\nimport type { StrictUnion } from 'types/common_types';\n\ntype CartShippingState = {\n type: ShippingMethodType;\n saved: StrictUnion<CartShippingMethod | CartPickupMethod> | null;\n addressStatus: CheckoutStatus;\n methodStatus: CheckoutStatus;\n originalAddress?: Address;\n suggestedAddress?: BaseAddress;\n confirmedAddress?: Address;\n validationStatus: Exclude<CheckoutStatus, 'error'>;\n};\n\nconst initialState: CartShippingState = {\n type: 'standard',\n saved: null,\n addressStatus: 'idle',\n methodStatus: 'idle',\n validationStatus: 'idle',\n};\n\nconst slice = createSlice({\n name: 'cartShipping',\n initialState,\n reducers: {\n resetStatus(state) {\n return { ...state, addressStatus: 'idle', methodStatus: 'idle' };\n },\n setShipType(state, { payload }: PayloadAction<ShippingMethodType>) {\n return {\n ...state,\n type: payload,\n };\n },\n resetPendingShippingAddress(state) {\n return {\n ...state,\n originalAddress: undefined,\n suggestedAddress: undefined,\n confirmedAddress: undefined,\n validationStatus: 'idle',\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(cart.actions.get.fulfilled, (state, { payload }) => {\n return { ...state, saved: payload.shipping };\n })\n .addCase(actions.validateShippingAddress.pending, (state, { payload }) => {\n return {\n ...state,\n validationStatus: 'pending',\n originalAddress: payload,\n };\n })\n .addCase(actions.validateShippingAddress.fulfilled, (state, { payload }) => {\n return {\n ...state,\n validationStatus: 'success',\n suggestedAddress: payload,\n };\n })\n .addCase(actions.validateShippingAddress.confirm, (state, { payload }) => {\n // Really should not be possible, but clarify it for type checking\n if (!state.originalAddress) return state;\n\n let confirmedAddress: Address | undefined;\n\n if (payload === 'original') {\n confirmedAddress = { ...state.originalAddress };\n }\n\n if (payload === 'suggested' && state.suggestedAddress) {\n confirmedAddress = {\n ...state.suggestedAddress,\n name: state.originalAddress.name,\n phone: state.originalAddress.phone,\n };\n }\n\n return {\n ...state,\n confirmedAddress,\n originalAddress: undefined,\n suggestedAddress: undefined,\n validationStatus: 'idle',\n };\n })\n .addCase(actions.validateShippingAddress.cancel, (state) => {\n return {\n ...state,\n originalAddress: undefined,\n suggestedAddress: undefined,\n confirmedAddress: undefined,\n validationStatus: 'idle',\n };\n })\n .addCase(actions.saveShippingAddress.pending, (state) => {\n return { ...state, addressStatus: 'pending' };\n })\n .addCase(actions.saveShippingAddress.fulfilled, (state) => {\n return {\n ...state,\n addressStatus: 'success',\n confirmedAddress: undefined,\n originalAddress: undefined,\n suggestedAddress: undefined,\n };\n })\n .addCase(actions.saveShippingMethod.pending, (state) => {\n return { ...state, addressStatus: 'pending', methodStatus: 'pending' };\n })\n .addCase(actions.saveShippingMethod.fulfilled, (state) => {\n return {\n ...state,\n addressStatus: 'success',\n methodStatus: 'success',\n confirmedAddress: undefined,\n originalAddress: undefined,\n suggestedAddress: undefined,\n };\n })\n .addCase(actions.saveShippingMethod.rejected, (state) => {\n return { ...state, methodStatus: 'error' };\n });\n },\n});\n\nexport default slice;\n", "import actions from './addresses.actions';\nimport slice from './addresses.slice';\nimport selectors from './addresses.selectors';\nimport utils from './addresses.utils';\n\nexport * from './addresses.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n utils,\n};\n\nexport { default as slice } from './addresses.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { SavedAddress } from './addresses.types';\n\nconst getAll = {\n pending: createAction('addresses/getAll/pending'),\n fulfilled: createAction<SavedAddress[]>('addresses/getAll/fulfilled'),\n rejected: createAction('addresses/getAll/rejected'),\n};\n\nexport default { getAll };\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport actions from './addresses.actions';\nimport addressesAdapter from './addresses.adapter';\n\nconst slice = createSlice({\n name: 'addresses',\n initialState: addressesAdapter.getInitialState(),\n reducers: {},\n extraReducers(builder) {\n builder.addCase(actions.getAll.fulfilled, (state, { payload }) => {\n return addressesAdapter.addMany(state, payload);\n });\n },\n});\n\nexport default slice;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { SavedAddress } from './addresses.types';\n\nconst addressesAdapter = createEntityAdapter<SavedAddress>({\n selectId(a) {\n return a.addressid;\n },\n});\n\nexport default addressesAdapter;\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport slice from './addresses.slice';\nimport addressesAdapter from './addresses.adapter';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst defaultSelectors = addressesAdapter.getSelectors();\n\nexport const selectSavedAddress = (state: LocalState) => defaultSelectors.selectAll(state)[0];\n\nexport default {\n saved: compose(selectSavedAddress, localState),\n};\n", "import * as api from './addresses.api';\n\nimport type { CartShippingMethod } from 'domains/cart_shipping';\nimport type {\n Address,\n AddressValidationReturnValue,\n BaseAddress,\n CountryState,\n SmartyStreetResponse,\n ValidationAPIInputAddress,\n ValidationAPIOutputAddress,\n} from './addresses.types';\nimport { IS_PRODUCTION } from 'utils/globals';\nimport reporter from 'utils/reporter';\n\nfunction wosToValidation(addressData: BaseAddress): ValidationAPIInputAddress {\n const { address1, address2, city, state, zip, country } = addressData;\n return { add1: address1, add2: address2, city, state, zip, country };\n}\n\nfunction validationToWos(addressData: ValidationAPIOutputAddress): BaseAddress {\n const { add1, add2, state, city, zip, country } = addressData;\n\n return {\n address1: add1,\n address2: add2 || '',\n city: city || '',\n state: state || '',\n zip,\n country,\n };\n}\n\nfunction shippingAddressToWos(address: CartShippingMethod): Address {\n return {\n name: address.recipient,\n phone: address.phone_number,\n address1: address.street_address,\n address2: address.street_address_secondary || '',\n city: address.city,\n state: address.state_or_region,\n zip: address.postal_code,\n country: address.country,\n };\n}\n\nfunction wosToShippingAddress(\n address: Address\n): Omit<CartShippingMethod, 'shipping_method_api_id' | 'name'> {\n return {\n recipient: address.name,\n phone_number: address.phone,\n street_address: address.address1,\n street_address_secondary: address.address2 === '' ? undefined : address.address2,\n city: address.city,\n state_or_region: address.state !== '' ? address.state : address.country,\n country: address.country,\n postal_code: address.zip,\n };\n}\n\n/** Validates a partial address object */\nfunction isValidBaseAddress(address: Partial<BaseAddress>): address is BaseAddress {\n return !!address.address1 && !!address.city && !!address.zip && !!address.country;\n}\n\nfunction addressesMatch(suggested: BaseAddress, original: BaseAddress) {\n return Object.keys(suggested).every((key: keyof BaseAddress) => suggested[key] === original[key]);\n}\n\nfunction isContiguousUSState(address: CountryState) {\n const { country, state } = address;\n const excludedStates = ['AE', 'AA', 'AP', 'AK', 'HI'];\n\n return country === 'US' && !excludedStates.includes(state);\n}\n\nfunction isAlaskaHawaii(address: CountryState) {\n const { country, state } = address;\n const includedStates = ['AK', 'HI'];\n return country === 'US' && includedStates.includes(state);\n}\n\nfunction isUSTerritory(address: CountryState) {\n const includedCountries = ['VI', 'AS', 'GU', 'MP', 'PR', 'MH'];\n const armedForcesStates = ['AE', 'AA', 'AP'];\n\n return (\n includedCountries.includes(address.country) ||\n (address.country === 'US' && armedForcesStates.includes(address.state))\n );\n}\n\nfunction isCanada(address: CountryState) {\n return address.country === 'CA';\n}\n\nconst validate = async (address: BaseAddress): Promise<AddressValidationReturnValue> => {\n try {\n const data = await api.validate(wosToValidation(address));\n return [validationToWos(data), data.changed];\n } catch {\n return [{}, false];\n }\n};\n\n/**\n * API Documentation\n * https://www.smarty.com/docs/cloud/us-zipcode-api\n */\nfunction handleSmartyAPIResponse(res: SmartyStreetResponse[]) {\n const first = res[0];\n\n // Since this is just an attempt to autocomplete the city/state, if nothing is found\n // let the user enter their data and handle address validation through Fedex API\n if (first.status || !first.city_states) {\n return null;\n }\n\n return {\n city: first.city_states[0].city,\n state: first.city_states[0].state_abbreviation,\n };\n}\n\nasync function zipLookup(zip: string) {\n try {\n const response = await api.zipLookup(zip);\n return handleSmartyAPIResponse(response);\n } catch (error) {\n // We don't need to do any additional handling of these errors\n if (IS_PRODUCTION) {\n reporter.captureMessage('Zip Code Autocomplete Failed');\n }\n }\n}\n\nexport default {\n format: {\n toShippingAddress: wosToShippingAddress,\n fromShippingAddress: shippingAddressToWos,\n },\n isValidBaseAddress,\n handleSmartyAPIResponse,\n validate,\n zipLookup,\n};\n", "import axios from 'axios';\n\nimport wos from 'apis/wos';\n\nimport { SMARTY_API_PUBLIC_KEY } from 'utils/globals';\n\nimport type {\n SavedAddress,\n SmartyStreetResponse,\n ValidationAPIOutputAddress,\n ValidationAPIInputAddress,\n} from './addresses.types';\n\n/**\n * Fetches all the user's saved addresses\n */\nexport const all = async () => {\n const response = await wos.get<SavedAddress[]>('/addresses.json', {\n params: { addresstype: 'S', default: true },\n });\n return response.data;\n};\n\n/**\n * Validates the given address against the FedEx API\n */\nexport const validate = async (address: ValidationAPIInputAddress) => {\n const { data } = await wos.get<ValidationAPIOutputAddress>('/validate_address.json', {\n params: { ...address },\n });\n\n return data;\n};\n\n/**\n * Looks up a city/state for a given zip code\n */\nexport const zipLookup = async (zip: string) => {\n const url = `https://us-zipcode.api.smartystreets.com/lookup?key=${SMARTY_API_PUBLIC_KEY}&zipcode=${zip}`;\n const { data } = await axios.get<SmartyStreetResponse[]>(url, {\n headers: { 'Content-Type': 'application/json' },\n });\n\n return data;\n};\n", "import type { CountryCode } from 'libphonenumber-js';\n\nexport type BaseAddress = {\n name?: string;\n phone?: string;\n address1: string;\n address2: string;\n city: string;\n state: string;\n zip: string;\n country: CountryCode;\n};\n\nexport type Address = Required<BaseAddress>;\n\nexport type CountryState = Pick<BaseAddress, 'country' | 'state'>;\n\nexport type SavedAddress = BaseAddress & {\n addressid: number;\n customerid: number;\n addresstype: 'S';\n isdefault: boolean;\n isactive: boolean;\n shippingmethodid: number | null;\n shippingnumber: string;\n shippinginstruction: string;\n usebillinginfo: boolean;\n lastmodifiedby: number | null;\n lastmodifieddate: string | null;\n};\n\nexport type ValidationAPIInputAddress = {\n add1: string;\n add2: string | null;\n city: string | null;\n state: string | null;\n zip: string;\n country: CountryCode;\n};\n\nexport type ValidationAPIOutputAddress = {\n changed: boolean;\n add1: string;\n add2: string | null;\n city: string;\n state: string;\n zip: string;\n country: CountryCode;\n};\n\nexport type AddressValidationReturnValue = [Partial<BaseAddress>, boolean];\n\nexport type SmartyStreetCityState = {\n city: string;\n state_abbreviation: string;\n state: string;\n};\n\nexport type SmartyStreetResponse = {\n input_index: number;\n input_id?: number;\n status?: 'blank' | 'invalid_state' | 'invalid_city' | 'invalid_zipcode' | 'conflict';\n city_states?: SmartyStreetCityState[];\n};\n", "import actions from './shipping_methods.actions';\nimport selectors from './shipping_methods.selectors';\nimport slice from './shipping_methods.slice';\nimport utils from './shipping_methods.utils';\n\nexport * from './shipping_methods.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n utils,\n};\n\nexport { default as slice } from './shipping_methods.slice';\n\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { Address } from 'domains/addresses';\nimport type { ShippingMethod } from './shipping_methods.types';\n\nconst getAll = {\n pending: createAction<Address>('shippingMethods/getShippingMethods/pending'),\n fulfilled: createAction<ShippingMethod[]>('shippingMethods/getShippingMethods/fulfilled'),\n rejected: createAction('shippingMethods/getShippingMethods/rejected'),\n};\n\nconst getPickups = {\n pending: createAction('shippingMethods/getPickups/pending'),\n fulfilled: createAction<ShippingMethod[]>('shippingMethods/getPickups/fulfilled'),\n rejected: createAction('shippingMethods/getPickups/rejected'),\n};\n\nexport default {\n getAll,\n getPickups,\n};\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './shipping_methods.slice';\nimport shippingMethodsAdapter from './shipping_methods.adapter';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nexport const selectPendingShippingMethods = (state: LocalState) => state.pending;\n\nexport default {\n ...shippingMethodsAdapter.getSelectors(localState),\n pending: compose(selectPendingShippingMethods, localState),\n};\n", "import { createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nimport shippingMethodsAdapter from './shipping_methods.adapter';\nimport actions from './shipping_methods.actions';\n\nimport type { ShippingMethod, ShippingMethodSliceInitialState } from './shipping_methods.types';\n\nconst initialState: ShippingMethodSliceInitialState = {};\n\nconst shippingMethods = createSlice({\n name: 'shippingMethods',\n initialState: shippingMethodsAdapter.getInitialState(initialState),\n reducers: {\n addPendingReplacementShippingMethods(state, { payload }: PayloadAction<ShippingMethod[]>) {\n return {\n ...state,\n pending: payload,\n };\n },\n keepPendingReplacements(state) {\n if (!state.pending) return state;\n\n const update = shippingMethodsAdapter.setAll(state, state.pending);\n update.pending = undefined;\n return update;\n },\n removePendingReplacements(state) {\n return {\n ...state,\n pending: undefined,\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.getAll.fulfilled, (state, { payload }) => {\n return shippingMethodsAdapter.setAll(state, payload);\n })\n .addCase(actions.getPickups.fulfilled, (state, { payload }) => {\n return shippingMethodsAdapter.addMany(state, payload);\n });\n },\n});\n\nexport default shippingMethods;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { ShippingMethod } from './shipping_methods.types';\n\nconst shippingMethodsAdapter = createEntityAdapter<ShippingMethod>({\n selectId(sm) {\n return sm.api_id;\n },\n});\n\nexport default shippingMethodsAdapter;\n", "import { poBoxRegex } from 'utils/regexes';\n\nimport type { PickupShippingMethod, ShippingMethod } from 'domains/shipping_methods';\n\nfunction isExpedited(method: ShippingMethod) {\n return method.details_html !== null && poBoxRegex.test(method.details_html);\n}\n\n/**\n * Order API returns a slimmed down version for the pickup-type-only endpoint,\n * so we map them in order for their type signatures to match the other types\n */\nfunction formatPickupMethod(method: PickupShippingMethod): ShippingMethod {\n return {\n ...method,\n charged_at_cost: false,\n price: 0,\n type: 'pickup',\n };\n}\n\nexport default {\n isExpedited,\n formatPickupMethod,\n};\n", "export const poBoxRegex = /^box[^a-z]|(p[-. ]?o.?[- ]?|post office )b(.|ox)/i;\nexport const breakTagRegex = /<br\\s*[/]?>/gi;\n", "export type ShippingMethodSliceInitialState = {\n pending?: ShippingMethod[];\n};\n\ntype ShippingMethodAddressConditions = {\n is_us_post_office_box: boolean;\n is_armed_forces: boolean;\n is_international: boolean;\n is_us_territory: boolean;\n is_alaska_or_hawaii: boolean;\n eligible_for_freight: boolean;\n};\n\nexport type ShippingMethodAPIResponse = {\n shipping_methods: ShippingMethod[];\n cart_contents_require_freight: boolean;\n total_shipping_method_count: number;\n address: ShippingMethodAddressConditions;\n};\n\nexport type ShippingMethodType = 'drop_ship' | 'pickup' | 'standard';\n\nexport type ShippingMethod = {\n api_id: number;\n name: string;\n price: number;\n charged_at_cost: boolean;\n type: ShippingMethodType;\n details_html: string | null;\n};\n\nexport type PickupShippingMethod = Pick<ShippingMethod, 'api_id' | 'details_html' | 'name'>;\n", "import { notNull } from 'utils/type_guards';\nimport type {\n CartPickupMethod,\n CartShippingMethod,\n SavedCartShipping,\n} from './cart_shipping.types';\n\nfunction cartShippingIsShipping(shipping: SavedCartShipping): shipping is CartShippingMethod {\n return notNull(shipping) && !!shipping.street_address;\n}\n\nfunction cartShippingIsPickup(shipping: SavedCartShipping): shipping is CartPickupMethod {\n return notNull(shipping) && !!shipping.recipient && !shipping.street_address;\n}\n\nexport default {\n cartShippingIsShipping,\n cartShippingIsPickup,\n};\n", "import type { Address } from 'domains/addresses';\nimport type { ShippingMethod } from 'domains/shipping_methods';\nimport type { CountryCode } from 'libphonenumber-js';\nimport type { StrictUnion } from 'types/common_types';\n\nexport type CartShippingMethod = {\n shipping_method_api_id: number;\n name: string;\n recipient: string;\n street_address: string;\n street_address_secondary?: string;\n city: string;\n state_or_region: string;\n country: CountryCode;\n postal_code: string;\n phone_number: string;\n};\n\nexport type CartPickupMethod = {\n shipping_method_api_id: number;\n name: string;\n recipient: string;\n};\n\nexport type SavedCartShipping = StrictUnion<CartShippingMethod | CartPickupMethod> | null;\n\nexport type AddressValidationConfirmation = 'original' | 'suggested';\n\nexport type SaveShippingAddressPayload = Address & { method: ShippingMethod };\n\nexport type SaveShippingMethodPayload = { id: number; recipient?: string };\n", "import type { Cart } from 'domains/cart';\nimport type { PaymentType } from 'domains/cart_payment_method';\nimport type { LoadingStatus } from 'types/common_types';\n\nexport type CheckoutStatus = 'idle' | 'success' | 'error' | 'pending';\nexport type CheckoutSliceInitialState = {\n initialized: boolean;\n submitStatus: CheckoutStatus | 'submitting';\n submitError?: string;\n\n confirmationDetails: {\n status: LoadingStatus;\n };\n};\n\nexport type ConfirmationDetails = Pick<Cart, 'customer_email' | 'reference'>;\n\nexport type CartSubmitData = {\n expected_total: number;\n expected_gift_certificate_usage_total?: number;\n braintree_payment_method_nonce?: string;\n braintree_device_data?: string;\n payment_type: PaymentType;\n};\n", "import actions from './promo_code.actions';\nimport slice from './promo_code.slice';\nimport selectors from './promo_code.selectors';\n\nexport * from './promo_code.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './promo_code.slice';\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { PromoCode } from './promo_code.types';\n\nconst save = {\n pending: createAction<string | null>('promoCode/save/pending'),\n fulfilled: createAction<PromoCode | null>('promoCode/save/fulfilled'),\n invalid: createAction<string>('promoCode/save/invalid'),\n rejected: createAction('promoCode/save/rejected'),\n};\n\nconst getDetails = {\n pending: createAction('promoCode/getDetails/pending'),\n fulfilled: createAction<PromoCode>('promoCode/getDetails/fulfilled'),\n rejected: createAction('promoCode/getDetails/rejected'),\n};\n\nexport default { save, getDetails };\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport actions from './promo_code.actions';\n\nimport type { PromoCode } from './promo_code.types';\nimport type { LoadingStatus } from 'types/common_types';\n\nexport type PromoCodeState = {\n status: LoadingStatus;\n message?: string;\n valid?: PromoCode;\n};\n\nconst initialState: PromoCodeState = {\n status: 'idle',\n};\n\nconst slice = createSlice({\n name: 'promoCode',\n initialState,\n reducers: {\n clearPromoError(state) {\n return { ...state, status: 'idle', message: undefined };\n },\n setValidPromoCode(state, { payload }: PayloadAction<PromoCode>) {\n return {\n ...state,\n status: 'idle',\n valid: payload,\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.save.fulfilled, (state, { payload }) => {\n return {\n ...state,\n status: 'idle',\n message: undefined,\n valid: payload || undefined,\n };\n })\n .addCase(actions.save.invalid, (state, { payload }) => {\n return {\n ...state,\n status: 'error',\n message: payload,\n };\n })\n .addCase(actions.getDetails.fulfilled, (state, { payload }) => {\n return {\n ...state,\n status: 'idle',\n message: undefined,\n valid: payload,\n };\n });\n },\n});\n\nexport default slice;\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './promo_code.slice';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nexport const selectPromoStatus = (state: LocalState) => state.status;\nexport const selectValidPromoCode = (state: LocalState) => state.valid;\nexport const selectPromoError = (state: LocalState) => state.message;\n\nexport default {\n status: compose(selectPromoStatus, localState),\n valid: compose(selectValidPromoCode, localState),\n error: compose(selectPromoError, localState),\n};\n", "export type PromoCode = {\n name: string;\n description: string;\n active: boolean;\n valid_from: string;\n valid_until: string;\n};\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport slice from './ui.slice';\n\nimport activeEditor from 'domains/active_editor';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectVisualRotation = (state: LocalState) => state.visualOnlyRotation;\nconst selectActiveSpecialContentSidebarMenu = (state: LocalState) =>\n state.activeSpecialContentSidebarMenu;\n\nconst selectShowUploadPhotosDialog = (state: LocalState) => state.showUploadPhotosDialog;\nconst selectSidebarComponent = (state: LocalState) => state.sidebarComponent;\n\nconst selectSiteMessage = (state: LocalState) => state.siteMessage;\n\nconst selectHideBranding = (state: LocalState) => state.hideBranding;\nconst selectShowFilenames = (state: LocalState) => state.showFilenames;\nconst selectTheme = (state: LocalState) => state.theme;\n\nconst selectShowAdvancedFiltersState = (state: LocalState) => state.showAdvancedFilters;\n\n// To show, must be available _and_ set true in state\nconst selectShowAdvancedFilters = createSelector(\n [activeEditor.selectors.hasAdvancedFilters, compose(selectShowAdvancedFiltersState, localState)],\n (hasAdvancedFilters, showAdvancedFiltersState) => hasAdvancedFilters && showAdvancedFiltersState\n);\n\n// Component level error message selectors\nconst selectCustomSizeErrors = (state: LocalState) => state.errorMessages.customSizePicker;\n\n// Mobile UI State\nconst selectHasMobileNavigation = (state: LocalState) => state.hasMobileNavigation;\nconst selectShowEditorSidebar = (state: LocalState) => state.showEditorSidebar;\nconst selectShowMobileSidebar = (state: LocalState) => state.showMobileSidebar;\nconst selectShowSidebarProducts = (state: LocalState) => state.showSidebarProducts;\nconst selectShowMobileUserPhotos = (state: LocalState) => state.showMobileUserPhotos;\n\nexport default {\n visualRotation: compose(selectVisualRotation, localState),\n activeSidebarMenu: compose(selectActiveSpecialContentSidebarMenu, localState),\n showUploadPhotosDialog: compose(selectShowUploadPhotosDialog, localState),\n sidebarComponent: compose(selectSidebarComponent, localState),\n siteMessage: compose(selectSiteMessage, localState),\n hideBranding: compose(selectHideBranding, localState),\n showFilenames: compose(selectShowFilenames, localState),\n theme: compose(selectTheme, localState),\n customSizeErrors: compose(selectCustomSizeErrors, localState),\n hasMobileNavigation: compose(selectHasMobileNavigation, localState),\n showEditorSidebar: compose(selectShowEditorSidebar, localState),\n showMobileSidebar: compose(selectShowMobileSidebar, localState),\n showSidebarProducts: compose(selectShowSidebarProducts, localState),\n showMobileUserPhotos: compose(selectShowMobileUserPhotos, localState),\n showAdvancedFilters: selectShowAdvancedFilters,\n};\n", "import CatalogSelector from './CatalogSelector';\n\nexport default CatalogSelector;\n", "/* eslint-disable jsx-a11y/anchor-is-valid */\n// Disable anchor-is-valid since scrollspy needs to break the rule\n// Consider replacing scrollspy to align with better a11y\nimport React, { useEffect, useState, useMemo } from 'react';\nimport { debounce } from 'lodash';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Scrollspy from 'react-scrollspy';\n\nimport Link from 'components/shared/Link';\n\nimport catalogModule from 'domains/catalogs';\nimport { useAppSelector } from 'utils/hooks';\n\nimport type { CatalogSelectorCategory } from 'types/catalog_types';\n\ntype CatalogSelectorProps = {\n categories: CatalogSelectorCategory[];\n};\n\nfunction CatalogSelector(props: CatalogSelectorProps) {\n const { categories } = props;\n const [scrollToTopButtonActive, setScrollTopButtonActive] = useState(false);\n\n const catalogs = useAppSelector(catalogModule.selectors.selectAll);\n\n const scrollspyItems = useMemo(() => categories.map((c) => c.id), [categories]);\n\n useEffect(() => {\n function scrollToTopHandler() {\n setScrollTopButtonActive(window.scrollY > 500);\n }\n const debouncedHandler = debounce(scrollToTopHandler, 300);\n\n document.addEventListener('scroll', debouncedHandler);\n document.body.classList.toggle('hideBranding', localStorage.getItem('hideBranding') === 'true');\n\n return function cleanup() {\n document.removeEventListener('scroll', debouncedHandler);\n };\n }, []);\n\n const handleCatalogDescriptionClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n const buttonEl = e.currentTarget;\n buttonEl.classList.toggle('show-more');\n const showMoreSpan = buttonEl.querySelector('span.show-more-span');\n const showLessSpan = buttonEl.querySelector('span.show-less-span');\n const descriptionEl = buttonEl.previousElementSibling;\n\n descriptionEl?.classList.toggle('show-more');\n showMoreSpan?.classList.toggle('hide');\n showLessSpan?.classList.toggle('hide');\n };\n\n if (catalogs.length === 0) return null;\n\n return (\n <React.Fragment>\n <h1 className=\"screen-reader-text\">Select a Catalog</h1>\n <div className=\"catalog_selector_container\">\n <div className=\"catalog-selector-header\">\n <div className=\"catalog-section__container\">\n {/* needed to add weird extra layer of nav element here in order for Online Ordering link\n to work properly with scrollspy (otherwise Online Ordering defaults to \"isCurrent\" class\n while displaying Wall Displays products) */}\n <nav className=\"scrollspy-nav\">\n <Link\n href=\"https://bayphoto.com/order/online-ordering/\"\n className=\"scrollspy-nav__item\"\n >\n Online Ordering \n <FontAwesomeIcon className=\"icon-dark\" icon=\"chevron-right\" />\n </Link>\n <Scrollspy\n items={scrollspyItems}\n currentClassName=\"isCurrent\"\n componentTag=\"nav\"\n offset={-60}\n className=\"scrollspy-nav\"\n >\n {categories.map((category) => (\n <Link key={category.id} href={`#${category.id}`} className=\"scrollspy-nav__item\">\n {category.name}\n </Link>\n ))}\n </Scrollspy>\n </nav>\n </div>\n </div>\n <div className=\"catalog-section__container\">\n {categories.map((category) => (\n <section key={category.id} className=\"catalog-section\" id={category.id}>\n <header className=\"catalog-section__section-header\">\n <h2 className=\"catalog-section__title\">{category.name}</h2>\n <p className=\"catalog-section__subtitle\">{category.description}</p>\n </header>\n <div className=\"online-ordering-grid\">\n {category.catalogs.map((catalog) => (\n <div key={catalog.name} className=\"online-ordering-grid-item\">\n <Link href={catalog.order_url}>\n <img src={catalog.image} alt={catalog.image_alt} />\n </Link>\n <div className=\"catalog-section__footer\">\n <h3 className=\"title\">{catalog.name}</h3>\n <div className=\"tab-info\">\n <Link href={catalog.info_url}>\n <FontAwesomeIcon icon=\"info-circle\" fixedWidth />\n </Link>\n <Link href={catalog.order_url}>\n <FontAwesomeIcon icon=\"shopping-cart\" fixedWidth />\n </Link>\n </div>\n </div>\n {catalog.description && (\n <div className=\"description_container\">\n <p className=\"description-content\">{catalog.description}</p>\n <button\n id={`${catalog.name}-description-button`}\n className=\"description-button\"\n onClick={(e) => handleCatalogDescriptionClick(e)}\n >\n <span className=\"show-more-span\">... read more</span>\n <span className=\"hide show-less-span\">read less</span>\n </button>\n </div>\n )}\n </div>\n ))}\n ;\n </div>\n </section>\n ))}\n <section className=\"catalog-section catalog-section__bay-roes\">\n <header className=\"catalog-section__header\">\n <h2 className=\"catalog-section__title\">\n Don't See What You're Looking For?\n </h2>\n <p className=\"catalog-section__subtitle\">\n Try Bay ROES for the full selection of Bay Photo's products and services, in a\n powerful desktop application.\n </p>\n </header>\n <div style={{ textAlign: 'center' }}>\n <Link href=\"https://bayphoto.com/order/bay-roes\">Try Bay ROES</Link>\n </div>\n </section>\n </div>\n <div\n className={`scrollDown_backToTop ${\n scrollToTopButtonActive ? 'scrollDown_backToTop--active' : ''\n }`}\n >\n <Link type=\"button\" variant=\"regular\" href=\"#\">\n <FontAwesomeIcon icon=\"chevron-down\" size=\"lg\" />\n </Link>\n </div>\n </div>\n <div\n className={`scrollDown_backToTop ${\n scrollToTopButtonActive ? 'scrollDown_backToTop--active' : ''\n }`}\n >\n <Link type=\"button\" variant=\"regular\" href=\"#\">\n <FontAwesomeIcon icon=\"chevron-down\" size=\"lg\" />\n </Link>\n </div>\n </React.Fragment>\n );\n}\n\nexport default CatalogSelector;\n", "import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\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\n return keys;\n}\n\nfunction _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\n return target;\n}\n\nfunction _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}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _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}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\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}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _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++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright \u00A9 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded$1 = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded$1);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar _excluded = [\"forwardedRef\"];\nfunction FontAwesomeIcon(_ref) {\n var forwardedRef = _ref.forwardedRef,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: forwardedRef\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n}\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf(['horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: null,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n", "function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\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\n return keys;\n}\n\nfunction _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\n return target;\n}\n\nfunction _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}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _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}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _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++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid',\n 'fasr': 'regular',\n 'fa-regular': 'regular',\n 'fasl': 'light',\n 'fa-light': 'light'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass',\n 'regular': 'fasr',\n 'light': 'fasl'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid',\n 'fasr': 'fa-regular',\n 'fasl': 'fa-light'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass',\n 'fa-regular': 'fasr',\n 'fa-light': 'fasl'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss|sr|sl)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i;\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass',\n '400': 'fasr',\n '300': 'fasl'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n -webkit-transition-delay: 0s;\\n transition-delay: 0s;\\n -webkit-transition-duration: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * 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 */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.4.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (_abstract) {\n node.parentNode.insertBefore(convertSVG(_abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var _abstract2 = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete _abstract2[0].attributes.id;\n\n if (_abstract2[0].attributes.class) {\n var splitClasses = _abstract2[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n\n _abstract2[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = _abstract2.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var _abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = _abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(_abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (_abstract.attributes && (_abstract.attributes.fill || force)) {\n _abstract.attributes.fill = 'black';\n }\n\n return _abstract;\n}\n\nfunction deGroup(_abstract2) {\n if (_abstract2.tag === 'g') {\n return _abstract2.children;\n } else {\n return [_abstract2];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n", "import Link from './Link';\n\nexport default Link;\n", "import * as React from 'react';\n\nimport type { ButtonAppearance, ButtonType } from 'components/shared/Button/Button';\n\ntype LinkType = 'regular' | 'no-style' | 'button' | 'image';\n\ntype LinkProps = React.ComponentPropsWithoutRef<'a'> & {\n href: string;\n a11yText?: string;\n className?: string;\n type?: LinkType;\n variant?: ButtonType;\n appearance?: ButtonAppearance;\n children: React.ReactNode;\n};\n\nfunction Link({\n type = 'regular',\n variant = 'regular',\n className = '',\n href,\n a11yText,\n appearance,\n children,\n ...rest\n}: LinkProps) {\n return (\n <a\n className={`${type === 'button' ? variant : 'link'} ${\n type === 'button' && appearance ? appearance : ''\n } ${type} ${className}`}\n href={href}\n title={a11yText}\n {...rest}\n >\n {children}\n {a11yText && <span className=\"screen-reader-text\">{a11yText}</span>}\n </a>\n );\n}\n\nexport default Link;\n", "import WOSHeader from './WOSSiteHeader';\n\nexport default WOSHeader;\n", "import React, { useEffect, useMemo, useState } from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport SiteHeader from 'components/shared/SiteHeader';\nimport Support from 'components/shared/SiteHeader/Support';\nimport AccountMenu from 'components/shared/SiteHeader/AccountMenu';\nimport CartStatus from 'components/shared/SiteHeader/CartStatus';\n\nimport sessionModule from 'domains/session';\nimport ui from 'domains/ui';\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\nimport navigation from 'domains/navigation';\nimport cartProductCreator from 'domains/cart_product_creator';\nimport cartProducts from 'domains/cart_products';\nimport multiphotos from 'domains/multiphotos';\n\nfunction WOSHeader() {\n const [showCartNotification, setShowCartNotification] = useState(false);\n\n const dispatch = useAppDispatch();\n const activeCanvas = useAppSelector(activeEditor.selectors.canvas);\n const cartCount = useAppSelector(cartProducts.selectors.selectTotal);\n const session = useAppSelector(sessionModule.selectors.session);\n\n // Cart Notification Message Dependencies\n const canvasIds = useAppSelector(canvases.selectors.selectIds);\n const multiPhotoIds = useAppSelector(multiphotos.selectors.selectIds);\n const addToCartQuantity = useAppSelector(cartProductCreator.selectors.quantity);\n\n // Cart Notification Dependencies\n const addToCartSuccess = useAppSelector(cartProductCreator.selectors.wasSuccessful);\n const addToCartWasEdit = useAppSelector(cartProductCreator.selectors.wasEdit);\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n\n function handleCartStatusClick() {\n dispatch(navigation.actions.navigateTo('cart'));\n\n if (activeCanvas && activeCanvas.cartProductId) {\n dispatch(canvases.actions.resetToSingleCanvas(activeCanvas.id));\n }\n }\n\n const cartNotificationMessage = useMemo(() => {\n const multiple = canvasIds.length > 1 || multiPhotoIds.length > 1 || addToCartQuantity > 1;\n return multiple ? 'Items were added to your cart!' : 'Item was added to your cart!';\n }, [canvasIds, multiPhotoIds, addToCartQuantity]);\n\n useEffect(() => {\n if (addToCartSuccess && (!addToCartWasEdit || !hasMobileNavigation)) {\n setShowCartNotification(true);\n }\n }, [addToCartSuccess, addToCartWasEdit, hasMobileNavigation]);\n\n return (\n <SiteHeader>\n <Support />\n <AccountMenu session={session} />\n <CartStatus\n onClick={handleCartStatusClick}\n confirmationMessage={cartNotificationMessage}\n showCartNotification={showCartNotification}\n setShowCartNotification={setShowCartNotification}\n cartCount={cartCount}\n />\n </SiteHeader>\n );\n}\n\nexport default WOSHeader;\n", "import SiteHeader from './SiteHeader';\n\nexport default SiteHeader;\n", "import React, { useState } from 'react';\nimport { DEPLOY_ENV, IS_PRODUCTION, SESSION_ID, SITE_WIDE_MESSAGE } from 'utils/globals';\nimport Button from 'components/shared/Button';\n\ntype SiteHeaderProps = {\n children?: React.ReactNode;\n};\n\nfunction SiteHeader({ children }: SiteHeaderProps) {\n const [showSessionId, setShowSessionId] = useState(true);\n\n return (\n <header className=\"header\">\n <div className=\"accessibility-header\" aria-label=\"accessibility\">\n <section>\n <a href=\"#main-content\">Skip Menu. Navigate to content in this page</a>\n </section>\n <section>\n <a href=\"https://bayphoto.com/accessibility/\">\n Accessibility Assistance, opens A D A page\n </a>\n </section>\n </div>\n <div className=\"branding\">\n <a className=\"logo\" href=\"https://www.bayphoto.com\">\n <span className=\"screen-reader-text\">Bay Photo Lab - Web Ordering System</span>\n </a>\n </div>\n {!IS_PRODUCTION && showSessionId && (\n <div className=\"debug_header\" data-testid=\"debug-header\">\n <span>{DEPLOY_ENV}</span>\n <span>{SESSION_ID && ` - ${SESSION_ID}`}</span>\n <Button\n type=\"icon\"\n icon=\"times\"\n a11yText=\"Hide\"\n onClick={() => setShowSessionId(false)}\n />\n </div>\n )}\n {SITE_WIDE_MESSAGE.enabled && (\n <div dangerouslySetInnerHTML={{ __html: SITE_WIDE_MESSAGE.value }} />\n )}\n <div id=\"site_nav\" className=\"site_nav\">\n {children}\n </div>\n </header>\n );\n}\n\nexport default SiteHeader;\n", "import Button from './Button';\n\nexport default Button;\n", "import React, { useMemo } from 'react';\nimport Tippy, { TippyProps } from '@tippyjs/react';\nimport { IconProp, SizeProp } from '@fortawesome/fontawesome-svg-core';\n\nimport type { WosIconProp } from 'types/common_types';\nimport Icon from 'components/shared/Icon';\n\nexport type ButtonType =\n | 'regular'\n | 'outline'\n | 'bare'\n | 'cornered'\n | 'icon'\n | 'confirm'\n | 'cancel'\n | 'link';\n\ntype HTMLButtonType = 'button' | 'submit' | 'reset';\n\nexport type ButtonAppearance = 'dark' | 'light' | 'themed' | 'primary';\n\ntype ButtonProps = Omit<\n React.ComponentPropsWithoutRef<'button'>,\n 'type' | 'role' | 'onClick' | 'className'\n> & {\n /** Allow button to follow theme, or lock to specific appearance */\n appearance?: ButtonAppearance;\n /** Determines structure & style of Button */\n type?: ButtonType;\n /** Text to use for screen reader access/tooltip */\n a11yText?: string;\n /** */\n ariaControls?: React.AriaAttributes['aria-controls'];\n role?: React.AriaRole;\n className?: string;\n id?: string;\n disabled?: boolean;\n dataset?: { [key: string]: string };\n htmlType?: HTMLButtonType;\n /** ID of related form element, if using submit/reset htmlType */\n form?: string;\n children?: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n /** Name of icon to include, if using icon button type */\n icon?: WosIconProp | IconProp;\n /** Size of icon if using icon button type */\n size?: SizeProp;\n tooltipProps?: TippyProps;\n};\n\nfunction Button({\n a11yText,\n ariaControls,\n children,\n icon,\n id,\n form,\n dataset,\n className = '',\n appearance = 'dark',\n disabled = false,\n size = '1x',\n type = 'regular',\n htmlType = 'button',\n onClick = () => {},\n // onKeyDown = () => {},\n tooltipProps = { placement: 'top' },\n role = 'button',\n ...rest\n}: ButtonProps) {\n const dataAttributes = useMemo(() => {\n const dataAttributes: { [key: string]: string } = {};\n\n if (dataset) {\n if (Object.entries(dataset).length > 0) {\n Object.entries(dataset).forEach(([key, val]) => {\n dataAttributes[`data-${key}`] = val;\n });\n }\n }\n\n return dataAttributes;\n }, [dataset]);\n\n const iconComponent = useMemo(() => {\n if (type !== 'icon') return null;\n\n if (!icon) throw new Error('Icon Button requires a valid icon');\n\n return <Icon icon={icon} size={size} />;\n }, [type, icon, size]);\n\n const button = (\n <button\n disabled={disabled}\n id={id && id}\n className={`button ${type} ${className} ${appearance}`}\n type={htmlType}\n onClick={onClick}\n form={form}\n aria-label={a11yText}\n aria-controls={ariaControls}\n role={role}\n {...dataAttributes}\n {...rest}\n >\n {type === 'icon' && iconComponent}\n {children}\n </button>\n );\n\n if (type === 'icon') {\n if (disabled) {\n return (\n <Tippy {...tooltipProps} touch={false} content={a11yText}>\n <span className=\"disabled-wrapper\">{button}</span>\n </Tippy>\n );\n }\n return (\n <Tippy {...tooltipProps} touch={false} content={a11yText}>\n {button}\n </Tippy>\n );\n }\n\n return button;\n}\n\nexport default Button;\n", "export * from \"./enums.js\";\nexport * from \"./modifiers/index.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { popperGenerator, detectOverflow, createPopper as createPopperBase } from \"./createPopper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper } from \"./popper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\";", "export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];", "export { default as applyStyles } from \"./applyStyles.js\";\nexport { default as arrow } from \"./arrow.js\";\nexport { default as computeStyles } from \"./computeStyles.js\";\nexport { default as eventListeners } from \"./eventListeners.js\";\nexport { default as flip } from \"./flip.js\";\nexport { default as hide } from \"./hide.js\";\nexport { default as offset } from \"./offset.js\";\nexport { default as popperOffsets } from \"./popperOffsets.js\";\nexport { default as preventOverflow } from \"./preventOverflow.js\";", "import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};", "export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}", "import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };", "export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};", "import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}", "export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}", "import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}", "import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}", "import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}", "import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}", "import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}", "export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}", "export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}", "export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}", "import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};", "import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};", "import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases \u2013 research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};", "var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}", "var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}", "import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}", "import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}", "import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}", "import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}", "import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}", "import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}", "import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}", "export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}", "import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}", "export default function getVariation(placement) {\n return placement.split('-')[1];\n}", "import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}", "import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};", "import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};", "import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};", "export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}", "import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update \u2013 it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update \u2013 it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}", "import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}", "export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}", "import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}", "export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}", "import format from \"./format.js\";\nimport { modifierPhases } from \"../enums.js\";\nvar INVALID_MODIFIER_ERROR = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nvar MISSING_DEPENDENCY_ERROR = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nvar VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];\nexport default function validateModifiers(modifiers) {\n modifiers.forEach(function (modifier) {\n Object.keys(modifier).forEach(function (key) {\n switch (key) {\n case 'name':\n if (typeof modifier.name !== 'string') {\n console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '\"name\"', '\"string\"', \"\\\"\" + String(modifier.name) + \"\\\"\"));\n }\n\n break;\n\n case 'enabled':\n if (typeof modifier.enabled !== 'boolean') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"enabled\"', '\"boolean\"', \"\\\"\" + String(modifier.enabled) + \"\\\"\"));\n }\n\n case 'phase':\n if (modifierPhases.indexOf(modifier.phase) < 0) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"phase\"', \"either \" + modifierPhases.join(', '), \"\\\"\" + String(modifier.phase) + \"\\\"\"));\n }\n\n break;\n\n case 'fn':\n if (typeof modifier.fn !== 'function') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"fn\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'effect':\n if (typeof modifier.effect !== 'function') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"effect\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'requires':\n if (!Array.isArray(modifier.requires)) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requires\"', '\"array\"', \"\\\"\" + String(modifier.requires) + \"\\\"\"));\n }\n\n break;\n\n case 'requiresIfExists':\n if (!Array.isArray(modifier.requiresIfExists)) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requiresIfExists\"', '\"array\"', \"\\\"\" + String(modifier.requiresIfExists) + \"\\\"\"));\n }\n\n break;\n\n case 'options':\n case 'data':\n break;\n\n default:\n console.error(\"PopperJS: an invalid property has been provided to the \\\"\" + modifier.name + \"\\\" modifier, valid properties are \" + VALID_PROPERTIES.map(function (s) {\n return \"\\\"\" + s + \"\\\"\";\n }).join(', ') + \"; but \\\"\" + key + \"\\\" was provided.\");\n }\n\n modifier.requires && modifier.requires.forEach(function (requirement) {\n if (modifiers.find(function (mod) {\n return mod.name === requirement;\n }) == null) {\n console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));\n }\n });\n });\n });\n}", "export default function format(str) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return [].concat(args).reduce(function (p, c) {\n return p.replace(/%s/, c);\n }, str);\n}", "export default function uniqueBy(arr, fn) {\n var identifiers = new Set();\n return arr.filter(function (item) {\n var identifier = fn(item);\n\n if (!identifiers.has(identifier)) {\n identifiers.add(identifier);\n return true;\n }\n });\n}", "export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";", "export const ROUND_ARROW =\n '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\n\nexport const BOX_CLASS = `__NAMESPACE_PREFIX__-box`;\nexport const CONTENT_CLASS = `__NAMESPACE_PREFIX__-content`;\nexport const BACKDROP_CLASS = `__NAMESPACE_PREFIX__-backdrop`;\nexport const ARROW_CLASS = `__NAMESPACE_PREFIX__-arrow`;\nexport const SVG_ARROW_CLASS = `__NAMESPACE_PREFIX__-svg-arrow`;\n\nexport const TOUCH_OPTIONS = {passive: true, capture: true};\n", "import {BasePlacement, Placement} from './types';\n\nexport function hasOwnProperty(obj: object, key: string): boolean {\n return {}.hasOwnProperty.call(obj, key);\n}\n\nexport function getValueAtIndexOrReturn<T>(\n value: T | [T | null, T | null],\n index: number,\n defaultValue: T | [T, T]\n): T {\n if (Array.isArray(value)) {\n const v = value[index];\n return v == null\n ? Array.isArray(defaultValue)\n ? defaultValue[index]\n : defaultValue\n : v;\n }\n\n return value;\n}\n\nexport function isType(value: any, type: string): boolean {\n const str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(`${type}]`) > -1;\n}\n\nexport function invokeWithArgsOrReturn(value: any, args: any[]): any {\n return typeof value === 'function' ? value(...args) : value;\n}\n\nexport function debounce<T>(\n fn: (arg: T) => void,\n ms: number\n): (arg: T) => void {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n let timeout: any;\n\n return (arg): void => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(arg);\n }, ms);\n };\n}\n\nexport function removeProperties<T>(obj: T, keys: string[]): Partial<T> {\n const clone = {...obj};\n keys.forEach((key) => {\n delete (clone as any)[key];\n });\n return clone;\n}\n\nexport function splitBySpaces(value: string): string[] {\n return value.split(/\\s+/).filter(Boolean);\n}\n\nexport function normalizeToArray<T>(value: T | T[]): T[] {\n return ([] as T[]).concat(value);\n}\n\nexport function pushIfUnique<T>(arr: T[], value: T): void {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\n\nexport function appendPxIfNumber(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport function unique<T>(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index);\n}\n\nexport function getNumber(value: string | number): number {\n return typeof value === 'number' ? value : parseFloat(value);\n}\n\nexport function getBasePlacement(placement: Placement): BasePlacement {\n return placement.split('-')[0] as BasePlacement;\n}\n\nexport function arrayFrom(value: ArrayLike<any>): any[] {\n return [].slice.call(value);\n}\n\nexport function removeUndefinedProps(\n obj: Record<string, unknown>\n): Partial<Record<string, unknown>> {\n return Object.keys(obj).reduce((acc, key) => {\n if (obj[key] !== undefined) {\n (acc as any)[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n", "import {ReferenceElement, Targets} from './types';\nimport {PopperTreeData} from './types-internal';\nimport {arrayFrom, isType, normalizeToArray, getBasePlacement} from './utils';\n\nexport function div(): HTMLDivElement {\n return document.createElement('div');\n}\n\nexport function isElement(value: unknown): value is Element | DocumentFragment {\n return ['Element', 'Fragment'].some((type) => isType(value, type));\n}\n\nexport function isNodeList(value: unknown): value is NodeList {\n return isType(value, 'NodeList');\n}\n\nexport function isMouseEvent(value: unknown): value is MouseEvent {\n return isType(value, 'MouseEvent');\n}\n\nexport function isReferenceElement(value: any): value is ReferenceElement {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\n\nexport function getArrayOfElements(value: Targets): Element[] {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\n\nexport function setTransitionDuration(\n els: (HTMLDivElement | null)[],\n value: number\n): void {\n els.forEach((el) => {\n if (el) {\n el.style.transitionDuration = `${value}ms`;\n }\n });\n}\n\nexport function setVisibilityState(\n els: (HTMLDivElement | null)[],\n state: 'visible' | 'hidden'\n): void {\n els.forEach((el) => {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\n\nexport function getOwnerDocument(\n elementOrElements: Element | Element[]\n): Document {\n const [element] = normalizeToArray(elementOrElements);\n\n // Elements created via a <template> have an ownerDocument with no reference to the body\n return element?.ownerDocument?.body ? element.ownerDocument : document;\n}\n\nexport function isCursorOutsideInteractiveBorder(\n popperTreeData: PopperTreeData[],\n event: MouseEvent\n): boolean {\n const {clientX, clientY} = event;\n\n return popperTreeData.every(({popperRect, popperState, props}) => {\n const {interactiveBorder} = props;\n const basePlacement = getBasePlacement(popperState.placement);\n const offsetData = popperState.modifiersData.offset;\n\n if (!offsetData) {\n return true;\n }\n\n const topDistance = basePlacement === 'bottom' ? offsetData.top!.y : 0;\n const bottomDistance = basePlacement === 'top' ? offsetData.bottom!.y : 0;\n const leftDistance = basePlacement === 'right' ? offsetData.left!.x : 0;\n const rightDistance = basePlacement === 'left' ? offsetData.right!.x : 0;\n\n const exceedsTop =\n popperRect.top - clientY + topDistance > interactiveBorder;\n const exceedsBottom =\n clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n const exceedsLeft =\n popperRect.left - clientX + leftDistance > interactiveBorder;\n const exceedsRight =\n clientX - popperRect.right - rightDistance > interactiveBorder;\n\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\n\nexport function updateTransitionEndListener(\n box: HTMLDivElement,\n action: 'add' | 'remove',\n listener: (event: TransitionEvent) => void\n): void {\n const method = `${action}EventListener` as\n | 'addEventListener'\n | 'removeEventListener';\n\n // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n box[method](event, listener as EventListener);\n });\n}\n", "import {TOUCH_OPTIONS} from './constants';\nimport {isReferenceElement} from './dom-utils';\n\nexport const currentInput = {isTouch: false};\nlet lastMouseMoveTime = 0;\n\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\nexport function onDocumentTouchStart(): void {\n if (currentInput.isTouch) {\n return;\n }\n\n currentInput.isTouch = true;\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\nexport function onDocumentMouseMove(): void {\n const now = performance.now();\n\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n\n lastMouseMoveTime = now;\n}\n\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\nexport function onWindowBlur(): void {\n const activeElement = document.activeElement as HTMLElement | null;\n\n if (isReferenceElement(activeElement)) {\n const instance = activeElement._tippy!;\n\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\n\nexport default function bindGlobalEventListeners(): void {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\n", "export const isBrowser =\n typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst ua = isBrowser ? navigator.userAgent : '';\n\nexport const isIE = /MSIE |Trident\\//.test(ua);\n", "import {Targets} from './types';\n\nexport function createMemoryLeakWarning(method: string): string {\n const txt = method === 'destroy' ? 'n already-' : ' ';\n\n return [\n `${method}() was called on a${txt}destroyed instance. This is a no-op but`,\n 'indicates a potential memory leak.',\n ].join(' ');\n}\n\nexport function clean(value: string): string {\n const spacesAndTabs = /[ \\t]{2,}/g;\n const lineStartWithSpaces = /^[ \\t]*/gm;\n\n return value\n .replace(spacesAndTabs, ' ')\n .replace(lineStartWithSpaces, '')\n .trim();\n}\n\nfunction getDevMessage(message: string): string {\n return clean(`\n %ctippy.js\n\n %c${clean(message)}\n\n %c👷†This is a development-only message. It will be removed in production.\n `);\n}\n\nexport function getFormattedMessage(message: string): string[] {\n return [\n getDevMessage(message),\n // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;',\n // message\n 'line-height: 1.5',\n // footer\n 'color: #a6a095;',\n ];\n}\n\n// Assume warnings and errors never have the same message\nlet visitedMessages: Set<string>;\nif (__DEV__) {\n resetVisitedMessages();\n}\n\nexport function resetVisitedMessages(): void {\n visitedMessages = new Set();\n}\n\nexport function warnWhen(condition: boolean, message: string): void {\n if (condition && !visitedMessages.has(message)) {\n visitedMessages.add(message);\n console.warn(...getFormattedMessage(message));\n }\n}\n\nexport function errorWhen(condition: boolean, message: string): void {\n if (condition && !visitedMessages.has(message)) {\n visitedMessages.add(message);\n console.error(...getFormattedMessage(message));\n }\n}\n\nexport function validateTargets(targets: Targets): void {\n const didPassFalsyValue = !targets;\n const didPassPlainObject =\n Object.prototype.toString.call(targets) === '[object Object]' &&\n !(targets as any).addEventListener;\n\n errorWhen(\n didPassFalsyValue,\n [\n 'tippy() was passed',\n '`' + String(targets) + '`',\n 'as its targets (first) argument. Valid types are: String, Element,',\n 'Element[], or NodeList.',\n ].join(' ')\n );\n\n errorWhen(\n didPassPlainObject,\n [\n 'tippy() was passed a plain object which is not supported as an argument',\n 'for virtual positioning. Use props.getReferenceClientRect instead.',\n ].join(' ')\n );\n}\n", "import {DefaultProps, Plugin, Props, ReferenceElement, Tippy} from './types';\nimport {\n hasOwnProperty,\n removeProperties,\n invokeWithArgsOrReturn,\n} from './utils';\nimport {warnWhen} from './validation';\n\nconst pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false,\n};\n\nconst renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999,\n};\n\nexport const defaultProps: DefaultProps = {\n appendTo: () => document.body,\n aria: {\n content: 'auto',\n expanded: 'auto',\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate() {},\n onBeforeUpdate() {},\n onCreate() {},\n onDestroy() {},\n onHidden() {},\n onHide() {},\n onMount() {},\n onShow() {},\n onShown() {},\n onTrigger() {},\n onUntrigger() {},\n onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null,\n ...pluginProps,\n ...renderProps,\n};\n\nconst defaultKeys = Object.keys(defaultProps);\n\nexport const setDefaultProps: Tippy['setDefaultProps'] = (partialProps) => {\n /* istanbul ignore else */\n if (__DEV__) {\n validateProps(partialProps, []);\n }\n\n const keys = Object.keys(partialProps) as Array<keyof DefaultProps>;\n keys.forEach((key) => {\n (defaultProps as any)[key] = partialProps[key];\n });\n};\n\nexport function getExtendedPassedProps(\n passedProps: Partial<Props> & Record<string, unknown>\n): Partial<Props> {\n const plugins = passedProps.plugins || [];\n const pluginProps = plugins.reduce<Record<string, unknown>>((acc, plugin) => {\n const {name, defaultValue} = plugin;\n\n if (name) {\n acc[name] =\n passedProps[name] !== undefined ? passedProps[name] : defaultValue;\n }\n\n return acc;\n }, {});\n\n return {\n ...passedProps,\n ...pluginProps,\n };\n}\n\nexport function getDataAttributeProps(\n reference: ReferenceElement,\n plugins: Plugin[]\n): Record<string, unknown> {\n const propKeys = plugins\n ? Object.keys(getExtendedPassedProps({...defaultProps, plugins}))\n : defaultKeys;\n\n const props = propKeys.reduce(\n (acc: Partial<Props> & Record<string, unknown>, key) => {\n const valueAsString = (\n reference.getAttribute(`data-tippy-${key}`) || ''\n ).trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n },\n {}\n );\n\n return props;\n}\n\nexport function evaluateProps(\n reference: ReferenceElement,\n props: Props\n): Props {\n const out = {\n ...props,\n content: invokeWithArgsOrReturn(props.content, [reference]),\n ...(props.ignoreAttributes\n ? {}\n : getDataAttributeProps(reference, props.plugins)),\n };\n\n out.aria = {\n ...defaultProps.aria,\n ...out.aria,\n };\n\n out.aria = {\n expanded:\n out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content:\n out.aria.content === 'auto'\n ? props.interactive\n ? null\n : 'describedby'\n : out.aria.content,\n };\n\n return out;\n}\n\nexport function validateProps(\n partialProps: Partial<Props> = {},\n plugins: Plugin[] = []\n): void {\n const keys = Object.keys(partialProps) as Array<keyof Props>;\n keys.forEach((prop) => {\n const nonPluginProps = removeProperties(\n defaultProps,\n Object.keys(pluginProps)\n );\n\n let didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop);\n\n // Check if the prop exists in `plugins`\n if (didPassUnknownProp) {\n didPassUnknownProp =\n plugins.filter((plugin) => plugin.name === prop).length === 0;\n }\n\n warnWhen(\n didPassUnknownProp,\n [\n `\\`${prop}\\``,\n \"is not a valid prop. You may have spelled it incorrectly, or if it's\",\n 'a plugin, forgot to pass it in an array as props.plugins.',\n '\\n\\n',\n 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n',\n 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/',\n ].join(' ')\n );\n });\n}\n", "import {\n ARROW_CLASS,\n BACKDROP_CLASS,\n BOX_CLASS,\n CONTENT_CLASS,\n SVG_ARROW_CLASS,\n} from './constants';\nimport {div, isElement} from './dom-utils';\nimport {Instance, PopperElement, Props} from './types';\nimport {PopperChildren} from './types-internal';\nimport {arrayFrom} from './utils';\n\n// Firefox extensions don't allow .innerHTML = \"...\" property. This tricks it.\nconst innerHTML = (): 'innerHTML' => 'innerHTML';\n\nfunction dangerouslySetInnerHTML(element: Element, html: string): void {\n element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value: Props['arrow']): HTMLDivElement {\n const arrow = div();\n\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value as string);\n }\n }\n\n return arrow;\n}\n\nexport function setContent(content: HTMLDivElement, props: Props): void {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\n\nexport function getChildren(popper: PopperElement): PopperChildren {\n const box = popper.firstElementChild as HTMLDivElement;\n const boxChildren = arrayFrom(box.children);\n\n return {\n box,\n content: boxChildren.find((node) => node.classList.contains(CONTENT_CLASS)),\n arrow: boxChildren.find(\n (node) =>\n node.classList.contains(ARROW_CLASS) ||\n node.classList.contains(SVG_ARROW_CLASS)\n ),\n backdrop: boxChildren.find((node) =>\n node.classList.contains(BACKDROP_CLASS)\n ),\n };\n}\n\nexport function render(\n instance: Instance\n): {\n popper: PopperElement;\n onUpdate?: (prevProps: Props, nextProps: Props) => void;\n} {\n const popper = div();\n\n const box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n\n const content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n\n setContent(content, instance.props);\n\n popper.appendChild(box);\n box.appendChild(content);\n\n onUpdate(instance.props, instance.props);\n\n function onUpdate(prevProps: Props, nextProps: Props): void {\n const {box, content, arrow} = getChildren(popper);\n\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n\n box.style.maxWidth =\n typeof nextProps.maxWidth === 'number'\n ? `${nextProps.maxWidth}px`\n : nextProps.maxWidth;\n\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n\n if (\n prevProps.content !== nextProps.content ||\n prevProps.allowHTML !== nextProps.allowHTML\n ) {\n setContent(content, instance.props);\n }\n\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow!);\n }\n }\n\n return {\n popper,\n onUpdate,\n };\n}\n\n// Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\nrender.$$tippy = true;\n", "import {createPopper, StrictModifiers, Modifier} from '@popperjs/core';\nimport {currentInput} from './bindGlobalEventListeners';\nimport {isIE} from './browser';\nimport {TOUCH_OPTIONS} from './constants';\nimport {\n div,\n getOwnerDocument,\n isCursorOutsideInteractiveBorder,\n isMouseEvent,\n setTransitionDuration,\n setVisibilityState,\n updateTransitionEndListener,\n} from './dom-utils';\nimport {defaultProps, evaluateProps, getExtendedPassedProps} from './props';\nimport {getChildren} from './template';\nimport {\n Content,\n Instance,\n LifecycleHooks,\n PopperElement,\n Props,\n ReferenceElement,\n} from './types';\nimport {ListenerObject, PopperTreeData, PopperChildren} from './types-internal';\nimport {\n arrayFrom,\n debounce,\n getValueAtIndexOrReturn,\n invokeWithArgsOrReturn,\n normalizeToArray,\n pushIfUnique,\n splitBySpaces,\n unique,\n removeUndefinedProps,\n} from './utils';\nimport {createMemoryLeakWarning, errorWhen, warnWhen} from './validation';\n\nlet idCounter = 1;\nlet mouseMoveListeners: ((event: MouseEvent) => void)[] = [];\n\n// Used by `hideAll()`\nexport let mountedInstances: Instance[] = [];\n\nexport default function createTippy(\n reference: ReferenceElement,\n passedProps: Partial<Props>\n): Instance {\n const props = evaluateProps(reference, {\n ...defaultProps,\n ...getExtendedPassedProps(removeUndefinedProps(passedProps)),\n });\n\n // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n let showTimeout: any;\n let hideTimeout: any;\n let scheduleHideAnimationFrame: number;\n let isVisibleFromClick = false;\n let didHideDueToDocumentMouseDown = false;\n let didTouchMove = false;\n let ignoreOnFirstUpdate = false;\n let lastTriggerEvent: Event | undefined;\n let currentTransitionEndListener: (event: TransitionEvent) => void;\n let onFirstUpdate: () => void;\n let listeners: ListenerObject[] = [];\n let debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n let currentTarget: Element;\n\n // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n const id = idCounter++;\n const popperInstance = null;\n const plugins = unique(props.plugins);\n\n const state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false,\n };\n\n const instance: Instance = {\n // properties\n id,\n reference,\n popper: div(),\n popperInstance,\n props,\n state,\n plugins,\n // methods\n clearDelayTimeouts,\n setProps,\n setContent,\n show,\n hide,\n hideWithInteractivity,\n enable,\n disable,\n unmount,\n destroy,\n };\n\n // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n /* istanbul ignore if */\n if (!props.render) {\n if (__DEV__) {\n errorWhen(true, 'render() function has not been supplied.');\n }\n\n return instance;\n }\n\n // ===========================================================================\n // Initial mutations\n // ===========================================================================\n const {popper, onUpdate} = props.render(instance);\n\n popper.setAttribute('data-__NAMESPACE_PREFIX__-root', '');\n popper.id = `__NAMESPACE_PREFIX__-${instance.id}`;\n\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n\n const pluginsHooks = plugins.map((plugin) => plugin.fn(instance));\n const hasAriaExpanded = reference.hasAttribute('aria-expanded');\n\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n\n invokeHook('onCreate', [instance]);\n\n if (props.showOnCreate) {\n scheduleShow();\n }\n\n // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n popper.addEventListener('mouseenter', () => {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n\n popper.addEventListener('mouseleave', (event) => {\n if (\n instance.props.interactive &&\n instance.props.trigger.indexOf('mouseenter') >= 0\n ) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n });\n\n return instance;\n\n // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n function getNormalizedTouchSettings(): [string | boolean, number] {\n const {touch} = instance.props;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n\n function getIsCustomTouchBehavior(): boolean {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n\n function getIsDefaultRenderFn(): boolean {\n // @ts-ignore\n return !!instance.props.render?.$$tippy;\n }\n\n function getCurrentTarget(): Element {\n return currentTarget || reference;\n }\n\n function getDocument(): Document {\n const parent = getCurrentTarget().parentNode as Element;\n return parent ? getOwnerDocument(parent) : document;\n }\n\n function getDefaultTemplateChildren(): PopperChildren {\n return getChildren(popper);\n }\n\n function getDelay(isShow: boolean): number {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (\n (instance.state.isMounted && !instance.state.isVisible) ||\n currentInput.isTouch ||\n (lastTriggerEvent && lastTriggerEvent.type === 'focus')\n ) {\n return 0;\n }\n\n return getValueAtIndexOrReturn(\n instance.props.delay,\n isShow ? 0 : 1,\n defaultProps.delay\n );\n }\n\n function handleStyles(): void {\n popper.style.pointerEvents =\n instance.props.interactive && instance.state.isVisible ? '' : 'none';\n popper.style.zIndex = `${instance.props.zIndex}`;\n }\n\n function invokeHook(\n hook: keyof LifecycleHooks,\n args: [Instance, any?],\n shouldInvokePropsHook = true\n ): void {\n pluginsHooks.forEach((pluginHooks) => {\n if (pluginHooks[hook]) {\n pluginHooks[hook]!(...args);\n }\n });\n\n if (shouldInvokePropsHook) {\n instance.props[hook](...args);\n }\n }\n\n function handleAriaContentAttribute(): void {\n const {aria} = instance.props;\n\n if (!aria.content) {\n return;\n }\n\n const attr = `aria-${aria.content}`;\n const id = popper.id;\n const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n nodes.forEach((node) => {\n const currentValue = node.getAttribute(attr);\n\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? `${currentValue} ${id}` : id);\n } else {\n const nextValue = currentValue && currentValue.replace(id, '').trim();\n\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n\n function handleAriaExpandedAttribute(): void {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n\n const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n nodes.forEach((node) => {\n if (instance.props.interactive) {\n node.setAttribute(\n 'aria-expanded',\n instance.state.isVisible && node === getCurrentTarget()\n ? 'true'\n : 'false'\n );\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n\n function cleanupInteractiveMouseListeners(): void {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(\n (listener) => listener !== debouncedOnMouseMove\n );\n }\n\n function onDocumentPress(event: MouseEvent | TouchEvent): void {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n }\n\n // Clicked on interactive popper\n if (\n instance.props.interactive &&\n popper.contains(event.target as Element)\n ) {\n return;\n }\n\n // Clicked on the event listeners target\n if (getCurrentTarget().contains(event.target as Element)) {\n if (currentInput.isTouch) {\n return;\n }\n\n if (\n instance.state.isVisible &&\n instance.props.trigger.indexOf('click') >= 0\n ) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide();\n\n // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n didHideDueToDocumentMouseDown = true;\n setTimeout(() => {\n didHideDueToDocumentMouseDown = false;\n });\n\n // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n\n function onTouchMove(): void {\n didTouchMove = true;\n }\n\n function onTouchStart(): void {\n didTouchMove = false;\n }\n\n function addDocumentPress(): void {\n const doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function removeDocumentPress(): void {\n const doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function onTransitionedOut(duration: number, callback: () => void): void {\n onTransitionEnd(duration, () => {\n if (\n !instance.state.isVisible &&\n popper.parentNode &&\n popper.parentNode.contains(popper)\n ) {\n callback();\n }\n });\n }\n\n function onTransitionedIn(duration: number, callback: () => void): void {\n onTransitionEnd(duration, callback);\n }\n\n function onTransitionEnd(duration: number, callback: () => void): void {\n const box = getDefaultTemplateChildren().box;\n\n function listener(event: TransitionEvent): void {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n }\n\n // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n\n currentTransitionEndListener = listener;\n }\n\n function on(\n eventType: string,\n handler: EventListener,\n options: boolean | object = false\n ): void {\n const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach((node) => {\n node.addEventListener(eventType, handler, options);\n listeners.push({node, eventType, handler, options});\n });\n }\n\n function addListeners(): void {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {passive: true});\n on('touchend', onMouseLeave as EventListener, {passive: true});\n }\n\n splitBySpaces(instance.props.trigger).forEach((eventType) => {\n if (eventType === 'manual') {\n return;\n }\n\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave as EventListener);\n break;\n case 'focus':\n on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut as EventListener);\n break;\n case 'focusin':\n on('focusout', onBlurOrFocusOut as EventListener);\n break;\n }\n });\n }\n\n function removeListeners(): void {\n listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function onTrigger(event: Event): void {\n let shouldScheduleClickHide = false;\n\n if (\n !instance.state.isEnabled ||\n isEventListenerStopped(event) ||\n didHideDueToDocumentMouseDown\n ) {\n return;\n }\n\n const wasFocused = lastTriggerEvent?.type === 'focus';\n\n lastTriggerEvent = event;\n currentTarget = event.currentTarget as Element;\n\n handleAriaExpandedAttribute();\n\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach((listener) => listener(event));\n }\n\n // Toggle show/hide when clicking click-triggered tooltips\n if (\n event.type === 'click' &&\n (instance.props.trigger.indexOf('mouseenter') < 0 ||\n isVisibleFromClick) &&\n instance.props.hideOnClick !== false &&\n instance.state.isVisible\n ) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n\n function onMouseMove(event: MouseEvent): void {\n const target = event.target as Node;\n const isCursorOverReferenceOrPopper =\n getCurrentTarget().contains(target) || popper.contains(target);\n\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n\n const popperTreeData = getNestedPopperTree()\n .concat(popper)\n .map((popper) => {\n const instance = popper._tippy!;\n const state = instance.popperInstance?.state;\n\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props,\n };\n }\n\n return null;\n })\n .filter(Boolean) as PopperTreeData[];\n\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n\n function onMouseLeave(event: MouseEvent): void {\n const shouldBail =\n isEventListenerStopped(event) ||\n (instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick);\n\n if (shouldBail) {\n return;\n }\n\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n\n scheduleHide(event);\n }\n\n function onBlurOrFocusOut(event: FocusEvent): void {\n if (\n instance.props.trigger.indexOf('focusin') < 0 &&\n event.target !== getCurrentTarget()\n ) {\n return;\n }\n\n // If focus was moved to within the popper\n if (\n instance.props.interactive &&\n event.relatedTarget &&\n popper.contains(event.relatedTarget as Element)\n ) {\n return;\n }\n\n scheduleHide(event);\n }\n\n function isEventListenerStopped(event: Event): boolean {\n return currentInput.isTouch\n ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0\n : false;\n }\n\n function createPopperInstance(): void {\n destroyPopperInstance();\n\n const {\n popperOptions,\n placement,\n offset,\n getReferenceClientRect,\n moveTransition,\n } = instance.props;\n\n const arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n\n const computedReference = getReferenceClientRect\n ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement:\n getReferenceClientRect.contextElement || getCurrentTarget(),\n }\n : reference;\n\n const tippyModifier: Modifier<'$$tippy', {}> = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn({state}) {\n if (getIsDefaultRenderFn()) {\n const {box} = getDefaultTemplateChildren();\n\n ['placement', 'reference-hidden', 'escaped'].forEach((attr) => {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[`data-popper-${attr}`]) {\n box.setAttribute(`data-${attr}`, '');\n } else {\n box.removeAttribute(`data-${attr}`);\n }\n }\n });\n\n state.attributes.popper = {};\n }\n },\n };\n\n type TippyModifier = Modifier<'$$tippy', {}>;\n type ExtendedModifiers = StrictModifiers | Partial<TippyModifier>;\n\n const modifiers: Array<ExtendedModifiers> = [\n {\n name: 'offset',\n options: {\n offset,\n },\n },\n {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5,\n },\n },\n },\n {\n name: 'flip',\n options: {\n padding: 5,\n },\n },\n {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition,\n },\n },\n tippyModifier,\n ];\n\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3,\n },\n });\n }\n\n modifiers.push(...(popperOptions?.modifiers || []));\n\n instance.popperInstance = createPopper<ExtendedModifiers>(\n computedReference,\n popper,\n {\n ...popperOptions,\n placement,\n onFirstUpdate,\n modifiers,\n }\n );\n }\n\n function destroyPopperInstance(): void {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n\n function mount(): void {\n const {appendTo} = instance.props;\n\n let parentNode: any;\n\n // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n const node = getCurrentTarget();\n\n if (\n (instance.props.interactive && appendTo === defaultProps.appendTo) ||\n appendTo === 'parent'\n ) {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n }\n\n // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n\n createPopperInstance();\n\n /* istanbul ignore else */\n if (__DEV__) {\n // Accessibility check\n warnWhen(\n instance.props.interactive &&\n appendTo === defaultProps.appendTo &&\n node.nextElementSibling !== popper,\n [\n 'Interactive tippy element may not be accessible via keyboard',\n 'navigation because it is not directly after the reference element',\n 'in the DOM source order.',\n '\\n\\n',\n 'Using a wrapper <div> or <span> tag around the reference element',\n 'solves this by creating a new parentNode context.',\n '\\n\\n',\n 'Specifying `appendTo: document.body` silences this warning, but it',\n 'assumes you are using a focus management solution to handle',\n 'keyboard navigation.',\n '\\n\\n',\n 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity',\n ].join(' ')\n );\n }\n }\n\n function getNestedPopperTree(): PopperElement[] {\n return arrayFrom(\n popper.querySelectorAll('[data-__NAMESPACE_PREFIX__-root]')\n );\n }\n\n function scheduleShow(event?: Event): void {\n instance.clearDelayTimeouts();\n\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n\n addDocumentPress();\n\n let delay = getDelay(true);\n const [touchValue, touchDelay] = getNormalizedTouchSettings();\n\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n\n if (delay) {\n showTimeout = setTimeout(() => {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n\n function scheduleHide(event: Event): void {\n instance.clearDelayTimeouts();\n\n invokeHook('onUntrigger', [instance, event]);\n\n if (!instance.state.isVisible) {\n removeDocumentPress();\n\n return;\n }\n\n // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n if (\n instance.props.trigger.indexOf('mouseenter') >= 0 &&\n instance.props.trigger.indexOf('click') >= 0 &&\n ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 &&\n isVisibleFromClick\n ) {\n return;\n }\n\n const delay = getDelay(false);\n\n if (delay) {\n hideTimeout = setTimeout(() => {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(() => {\n instance.hide();\n });\n }\n }\n\n // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n function enable(): void {\n instance.state.isEnabled = true;\n }\n\n function disable(): void {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n\n function clearDelayTimeouts(): void {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n\n function setProps(partialProps: Partial<Props>): void {\n /* istanbul ignore else */\n if (__DEV__) {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n\n removeListeners();\n\n const prevProps = instance.props;\n const nextProps = evaluateProps(reference, {\n ...instance.props,\n ...partialProps,\n ignoreAttributes: true,\n });\n\n instance.props = nextProps;\n\n addListeners();\n\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(\n onMouseMove,\n nextProps.interactiveDebounce\n );\n }\n\n // Ensure stale aria-expanded attributes are removed\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach((node) => {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n\n handleAriaExpandedAttribute();\n handleStyles();\n\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n\n if (instance.popperInstance) {\n createPopperInstance();\n\n // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n getNestedPopperTree().forEach((nestedPopper) => {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy!.popperInstance!.forceUpdate);\n });\n }\n\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n\n function setContent(content: Content): void {\n instance.setProps({content});\n }\n\n function show(): void {\n /* istanbul ignore else */\n if (__DEV__) {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n }\n\n // Early bail-out\n const isAlreadyVisible = instance.state.isVisible;\n const isDestroyed = instance.state.isDestroyed;\n const isDisabled = !instance.state.isEnabled;\n const isTouchAndTouchDisabled =\n currentInput.isTouch && !instance.props.touch;\n const duration = getValueAtIndexOrReturn(\n instance.props.duration,\n 0,\n defaultProps.duration\n );\n\n if (\n isAlreadyVisible ||\n isDestroyed ||\n isDisabled ||\n isTouchAndTouchDisabled\n ) {\n return;\n }\n\n // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. <span>) is recommended.\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n\n invokeHook('onShow', [instance], false);\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n instance.state.isVisible = true;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n\n handleStyles();\n addDocumentPress();\n\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n }\n\n // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n if (getIsDefaultRenderFn()) {\n const {box, content} = getDefaultTemplateChildren();\n setTransitionDuration([box, content], 0);\n }\n\n onFirstUpdate = (): void => {\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n\n ignoreOnFirstUpdate = true;\n\n // reflow\n void popper.offsetHeight;\n\n popper.style.transition = instance.props.moveTransition;\n\n if (getIsDefaultRenderFn() && instance.props.animation) {\n const {box, content} = getDefaultTemplateChildren();\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'visible');\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n pushIfUnique(mountedInstances, instance);\n\n // certain modifiers (e.g. `maxSize`) require a second update after the\n // popper has been positioned for the first time\n instance.popperInstance?.forceUpdate();\n\n instance.state.isMounted = true;\n invokeHook('onMount', [instance]);\n\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, () => {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n\n mount();\n }\n\n function hide(): void {\n /* istanbul ignore else */\n if (__DEV__) {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n }\n\n // Early bail-out\n const isAlreadyHidden = !instance.state.isVisible;\n const isDestroyed = instance.state.isDestroyed;\n const isDisabled = !instance.state.isEnabled;\n const duration = getValueAtIndexOrReturn(\n instance.props.duration,\n 1,\n defaultProps.duration\n );\n\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n\n invokeHook('onHide', [instance], false);\n if (instance.props.onHide(instance) === false) {\n return;\n }\n\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles();\n\n if (getIsDefaultRenderFn()) {\n const {box, content} = getDefaultTemplateChildren();\n\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n\n function hideWithInteractivity(event: MouseEvent): void {\n /* istanbul ignore else */\n if (__DEV__) {\n warnWhen(\n instance.state.isDestroyed,\n createMemoryLeakWarning('hideWithInteractivity')\n );\n }\n\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n\n function unmount(): void {\n /* istanbul ignore else */\n if (__DEV__) {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n\n if (!instance.state.isMounted) {\n return;\n }\n\n destroyPopperInstance();\n\n // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n getNestedPopperTree().forEach((nestedPopper) => {\n nestedPopper._tippy!.unmount();\n });\n\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n\n mountedInstances = mountedInstances.filter((i) => i !== instance);\n\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n\n function destroy(): void {\n /* istanbul ignore else */\n if (__DEV__) {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n instance.clearDelayTimeouts();\n instance.unmount();\n\n removeListeners();\n\n delete reference._tippy;\n\n instance.state.isDestroyed = true;\n\n invokeHook('onDestroy', [instance]);\n }\n}\n", "import bindGlobalEventListeners, {\n currentInput,\n} from './bindGlobalEventListeners';\nimport createTippy, {mountedInstances} from './createTippy';\nimport {getArrayOfElements, isElement, isReferenceElement} from './dom-utils';\nimport {defaultProps, setDefaultProps, validateProps} from './props';\nimport {HideAll, HideAllOptions, Instance, Props, Targets} from './types';\nimport {validateTargets, warnWhen} from './validation';\n\nfunction tippy(\n targets: Targets,\n optionalProps: Partial<Props> = {}\n): Instance | Instance[] {\n const plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n\n /* istanbul ignore else */\n if (__DEV__) {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n\n bindGlobalEventListeners();\n\n const passedProps: Partial<Props> = {...optionalProps, plugins};\n\n const elements = getArrayOfElements(targets);\n\n /* istanbul ignore else */\n if (__DEV__) {\n const isSingleContentElement = isElement(passedProps.content);\n const isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(\n isSingleContentElement && isMoreThanOneReferenceElement,\n [\n 'tippy() was passed an Element as the `content` prop, but more than',\n 'one tippy instance was created by this invocation. This means the',\n 'content element will only be appended to the last tippy instance.',\n '\\n\\n',\n 'Instead, pass the .innerHTML of the element, or use a function that',\n 'returns a cloned version of the element instead.',\n '\\n\\n',\n '1) content: element.innerHTML\\n',\n '2) content: () => element.cloneNode(true)',\n ].join(' ')\n );\n }\n\n const instances = elements.reduce<Instance[]>(\n (acc, reference): Instance[] => {\n const instance = reference && createTippy(reference, passedProps);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n },\n []\n );\n\n return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\n\nexport default tippy;\n\nexport const hideAll: HideAll = ({\n exclude: excludedReferenceOrInstance,\n duration,\n}: HideAllOptions = {}) => {\n mountedInstances.forEach((instance) => {\n let isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance)\n ? instance.reference === excludedReferenceOrInstance\n : instance.popper === (excludedReferenceOrInstance as Instance).popper;\n }\n\n if (!isExcluded) {\n const originalDuration = instance.props.duration;\n\n instance.setProps({duration});\n instance.hide();\n\n if (!instance.state.isDestroyed) {\n instance.setProps({duration: originalDuration});\n }\n }\n });\n};\n", "import tippy from '..';\nimport {div} from '../dom-utils';\nimport {\n CreateSingleton,\n Plugin,\n CreateSingletonProps,\n ReferenceElement,\n CreateSingletonInstance,\n Instance,\n Props,\n} from '../types';\nimport {removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\nimport {applyStyles, Modifier} from '@popperjs/core';\n\n// The default `applyStyles` modifier has a cleanup function that gets called\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\nconst applyStylesModifier: Modifier<'applyStyles', {}> = {\n ...applyStyles,\n effect({state}) {\n const initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0',\n },\n arrow: {\n position: 'absolute',\n },\n reference: {},\n };\n\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n // intentionally return no cleanup function\n // return () => { ... }\n },\n};\n\nconst createSingleton: CreateSingleton = (\n tippyInstances,\n optionalProps = {}\n) => {\n /* istanbul ignore else */\n if (__DEV__) {\n errorWhen(\n !Array.isArray(tippyInstances),\n [\n 'The first argument passed to createSingleton() must be an array of',\n 'tippy instances. The passed value was',\n String(tippyInstances),\n ].join(' ')\n );\n }\n\n let individualInstances = tippyInstances;\n let references: Array<ReferenceElement> = [];\n let currentTarget: Element | null;\n let overrides = optionalProps.overrides;\n let interceptSetPropsCleanups: Array<() => void> = [];\n let shownOnCreate = false;\n\n function setReferences(): void {\n references = individualInstances.map((instance) => instance.reference);\n }\n\n function enableInstances(isEnabled: boolean): void {\n individualInstances.forEach((instance) => {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n\n function interceptSetProps(singleton: Instance): Array<() => void> {\n return individualInstances.map((instance) => {\n const originalSetProps = instance.setProps;\n\n instance.setProps = (props): void => {\n originalSetProps(props);\n\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n\n return (): void => {\n instance.setProps = originalSetProps;\n };\n });\n }\n\n // have to pass singleton, as it maybe undefined on first call\n function prepareInstance(\n singleton: Instance,\n target: ReferenceElement\n ): void {\n const index = references.indexOf(target);\n\n // bail-out\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n\n const overrideProps: Partial<Props> = (overrides || [])\n .concat('content')\n .reduce((acc, prop) => {\n (acc as any)[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n\n singleton.setProps({\n ...overrideProps,\n getReferenceClientRect:\n typeof overrideProps.getReferenceClientRect === 'function'\n ? overrideProps.getReferenceClientRect\n : (): ClientRect => target.getBoundingClientRect(),\n });\n }\n\n enableInstances(false);\n setReferences();\n\n const plugin: Plugin = {\n fn() {\n return {\n onDestroy(): void {\n enableInstances(true);\n },\n onHidden(): void {\n currentTarget = null;\n },\n onClickOutside(instance): void {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n currentTarget = null;\n }\n },\n onShow(instance): void {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n prepareInstance(instance, references[0]);\n }\n },\n onTrigger(instance, event): void {\n prepareInstance(instance, event.currentTarget as Element);\n },\n };\n },\n };\n\n const singleton = tippy(div(), {\n ...removeProperties(optionalProps, ['overrides']),\n plugins: [plugin, ...(optionalProps.plugins || [])],\n triggerTarget: references,\n popperOptions: {\n ...optionalProps.popperOptions,\n modifiers: [\n ...(optionalProps.popperOptions?.modifiers || []),\n applyStylesModifier,\n ],\n },\n }) as CreateSingletonInstance<CreateSingletonProps>;\n\n const originalShow = singleton.show;\n\n singleton.show = (target?: ReferenceElement | Instance | number): void => {\n originalShow();\n\n // first time, showOnCreate or programmatic call with no params\n // default to showing first instance\n if (!currentTarget && target == null) {\n return prepareInstance(singleton, references[0]);\n }\n\n // triggered from event (do nothing as prepareInstance already called by onTrigger)\n // programmatic call with no params when already visible (do nothing again)\n if (currentTarget && target == null) {\n return;\n }\n\n // target is index of instance\n if (typeof target === 'number') {\n return (\n references[target] && prepareInstance(singleton, references[target])\n );\n }\n\n // target is a child tippy instance\n if (individualInstances.includes(target as Instance)) {\n const ref = (target as Instance).reference;\n return prepareInstance(singleton, ref);\n }\n\n // target is a ReferenceElement\n if (references.includes(target as ReferenceElement)) {\n return prepareInstance(singleton, target as ReferenceElement);\n }\n };\n\n singleton.showNext = (): void => {\n const first = references[0];\n if (!currentTarget) {\n return singleton.show(0);\n }\n const index = references.indexOf(currentTarget);\n singleton.show(references[index + 1] || first);\n };\n\n singleton.showPrevious = (): void => {\n const last = references[references.length - 1];\n if (!currentTarget) {\n return singleton.show(last);\n }\n const index = references.indexOf(currentTarget);\n const target = references[index - 1] || last;\n singleton.show(target);\n };\n\n const originalSetProps = singleton.setProps;\n\n singleton.setProps = (props): void => {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n\n singleton.setInstances = (nextInstances): void => {\n enableInstances(true);\n interceptSetPropsCleanups.forEach((fn) => fn());\n\n individualInstances = nextInstances;\n\n enableInstances(false);\n setReferences();\n interceptSetProps(singleton);\n\n singleton.setProps({triggerTarget: references});\n };\n\n interceptSetPropsCleanups = interceptSetProps(singleton);\n\n return singleton;\n};\n\nexport default createSingleton;\n", "import tippy from '..';\nimport {TOUCH_OPTIONS} from '../constants';\nimport {defaultProps} from '../props';\nimport {Instance, Props, Targets} from '../types';\nimport {ListenerObject} from '../types-internal';\nimport {normalizeToArray, removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\n\nconst BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click',\n};\n\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\nfunction delegate(\n targets: Targets,\n props: Partial<Props> & {target: string}\n): Instance | Instance[] {\n /* istanbul ignore else */\n if (__DEV__) {\n errorWhen(\n !(props && props.target),\n [\n 'You must specity a `target` prop indicating a CSS selector string matching',\n 'the target elements that should receive a tippy.',\n ].join(' ')\n );\n }\n\n let listeners: ListenerObject[] = [];\n let childTippyInstances: Instance[] = [];\n let disabled = false;\n\n const {target} = props;\n\n const nativeProps = removeProperties(props, ['target']);\n const parentProps = {...nativeProps, trigger: 'manual', touch: false};\n const childProps = {...nativeProps, showOnCreate: true};\n\n const returnValue = tippy(targets, parentProps);\n const normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event: Event): void {\n if (!event.target || disabled) {\n return;\n }\n\n const targetNode = (event.target as Element).closest(target);\n\n if (!targetNode) {\n return;\n }\n\n // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n const trigger =\n targetNode.getAttribute('data-tippy-trigger') ||\n props.trigger ||\n defaultProps.trigger;\n\n // @ts-ignore\n if (targetNode._tippy) {\n return;\n }\n\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n\n if (\n event.type !== 'touchstart' &&\n trigger.indexOf((BUBBLING_EVENTS_MAP as any)[event.type]) < 0\n ) {\n return;\n }\n\n const instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(\n node: Element,\n eventType: string,\n handler: EventListener,\n options: object | boolean = false\n ): void {\n node.addEventListener(eventType, handler, options);\n listeners.push({node, eventType, handler, options});\n }\n\n function addEventListeners(instance: Instance): void {\n const {reference} = instance;\n\n on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners(): void {\n listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance: Instance): void {\n const originalDestroy = instance.destroy;\n const originalEnable = instance.enable;\n const originalDisable = instance.disable;\n\n instance.destroy = (shouldDestroyChildInstances = true): void => {\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach((instance) => {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n\n removeEventListeners();\n originalDestroy();\n };\n\n instance.enable = (): void => {\n originalEnable();\n childTippyInstances.forEach((instance) => instance.enable());\n disabled = false;\n };\n\n instance.disable = (): void => {\n originalDisable();\n childTippyInstances.forEach((instance) => instance.disable());\n disabled = true;\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n\n return returnValue;\n}\n\nexport default delegate;\n", "import {BACKDROP_CLASS} from '../constants';\nimport {div, setVisibilityState} from '../dom-utils';\nimport {getChildren} from '../template';\nimport {AnimateFill} from '../types';\nimport {errorWhen} from '../validation';\n\nconst animateFill: AnimateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn(instance) {\n // @ts-ignore\n if (!instance.props.render?.$$tippy) {\n if (__DEV__) {\n errorWhen(\n instance.props.animateFill,\n 'The `animateFill` plugin requires the default render function.'\n );\n }\n\n return {};\n }\n\n const {box, content} = getChildren(instance.popper);\n\n const backdrop = instance.props.animateFill\n ? createBackdropElement()\n : null;\n\n return {\n onCreate(): void {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild!);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n\n instance.setProps({arrow: false, animation: 'shift-away'});\n }\n },\n onMount(): void {\n if (backdrop) {\n const {transitionDuration} = box.style;\n const duration = Number(transitionDuration.replace('ms', ''));\n\n // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n content.style.transitionDelay = `${Math.round(duration / 10)}ms`;\n\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow(): void {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide(): void {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n },\n };\n },\n};\n\nexport default animateFill;\n\nfunction createBackdropElement(): HTMLDivElement {\n const backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n", "import {getOwnerDocument, isMouseEvent} from '../dom-utils';\nimport {FollowCursor, Instance} from '../types';\n\nlet mouseCoords = {clientX: 0, clientY: 0};\nlet activeInstances: Array<{instance: Instance; doc: Document}> = [];\n\nfunction storeMouseCoords({clientX, clientY}: MouseEvent): void {\n mouseCoords = {clientX, clientY};\n}\n\nfunction addMouseCoordsListener(doc: Document): void {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc: Document): void {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nconst followCursor: FollowCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn(instance) {\n const reference = instance.reference;\n const doc = getOwnerDocument(instance.props.triggerTarget || reference);\n\n let isInternalUpdate = false;\n let wasFocusEvent = false;\n let isUnmounted = true;\n let prevProps = instance.props;\n\n function getIsInitialBehavior(): boolean {\n return (\n instance.props.followCursor === 'initial' && instance.state.isVisible\n );\n }\n\n function addListener(): void {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener(): void {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function unsetGetReferenceClientRect(): void {\n isInternalUpdate = true;\n instance.setProps({getReferenceClientRect: null});\n isInternalUpdate = false;\n }\n\n function onMouseMove(event: MouseEvent): void {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n const isCursorOverReference = event.target\n ? reference.contains(event.target as Node)\n : true;\n const {followCursor} = instance.props;\n const {clientX, clientY} = event;\n\n const rect = reference.getBoundingClientRect();\n const relativeX = clientX - rect.left;\n const relativeY = clientY - rect.top;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n getReferenceClientRect() {\n const rect = reference.getBoundingClientRect();\n\n let x = clientX;\n let y = clientY;\n\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n\n const top = followCursor === 'horizontal' ? rect.top : y;\n const right = followCursor === 'vertical' ? rect.right : x;\n const bottom = followCursor === 'horizontal' ? rect.bottom : y;\n const left = followCursor === 'vertical' ? rect.left : x;\n\n return {\n width: right - left,\n height: bottom - top,\n top,\n right,\n bottom,\n left,\n };\n },\n });\n }\n }\n\n function create(): void {\n if (instance.props.followCursor) {\n activeInstances.push({instance, doc});\n addMouseCoordsListener(doc);\n }\n }\n\n function destroy(): void {\n activeInstances = activeInstances.filter(\n (data) => data.instance !== instance\n );\n\n if (activeInstances.filter((data) => data.doc === doc).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate(): void {\n prevProps = instance.props;\n },\n onAfterUpdate(_, {followCursor}): void {\n if (isInternalUpdate) {\n return;\n }\n\n if (\n followCursor !== undefined &&\n prevProps.followCursor !== followCursor\n ) {\n destroy();\n\n if (followCursor) {\n create();\n\n if (\n instance.state.isMounted &&\n !wasFocusEvent &&\n !getIsInitialBehavior()\n ) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount(): void {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords as MouseEvent);\n isUnmounted = false;\n }\n\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger(_, event): void {\n if (isMouseEvent(event)) {\n mouseCoords = {clientX: event.clientX, clientY: event.clientY};\n }\n wasFocusEvent = event.type === 'focus';\n },\n onHidden(): void {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n },\n };\n },\n};\n\nexport default followCursor;\n", "import {Modifier, Placement} from '@popperjs/core';\nimport {isMouseEvent} from '../dom-utils';\nimport {BasePlacement, InlinePositioning, Props} from '../types';\nimport {arrayFrom, getBasePlacement} from '../utils';\n\nfunction getProps(props: Props, modifier: Modifier<any, any>): Partial<Props> {\n return {\n popperOptions: {\n ...props.popperOptions,\n modifiers: [\n ...(props.popperOptions?.modifiers || []).filter(\n ({name}) => name !== modifier.name\n ),\n modifier,\n ],\n },\n };\n}\n\nconst inlinePositioning: InlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn(instance) {\n const {reference} = instance;\n\n function isEnabled(): boolean {\n return !!instance.props.inlinePositioning;\n }\n\n let placement: Placement;\n let cursorRectIndex = -1;\n let isInternalUpdate = false;\n\n const modifier: Modifier<'tippyInlinePositioning', {}> = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn({state}) {\n if (isEnabled()) {\n if (placement !== state.placement) {\n instance.setProps({\n getReferenceClientRect: () =>\n getReferenceClientRect(state.placement),\n });\n }\n\n placement = state.placement;\n }\n },\n };\n\n function getReferenceClientRect(placement: Placement): ClientRect {\n return getInlineBoundingClientRect(\n getBasePlacement(placement),\n reference.getBoundingClientRect(),\n arrayFrom(reference.getClientRects()),\n cursorRectIndex\n );\n }\n\n function setInternalProps(partialProps: Partial<Props>): void {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n\n function addModifier(): void {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger(_, event): void {\n if (isMouseEvent(event)) {\n const rects = arrayFrom(instance.reference.getClientRects());\n const cursorRect = rects.find(\n (rect) =>\n rect.left - 2 <= event.clientX &&\n rect.right + 2 >= event.clientX &&\n rect.top - 2 <= event.clientY &&\n rect.bottom + 2 >= event.clientY\n );\n\n cursorRectIndex = rects.indexOf(cursorRect);\n }\n },\n onUntrigger(): void {\n cursorRectIndex = -1;\n },\n };\n },\n};\n\nexport default inlinePositioning;\n\nexport function getInlineBoundingClientRect(\n currentBasePlacement: BasePlacement | null,\n boundingRect: ClientRect,\n clientRects: ClientRect[],\n cursorRectIndex: number\n): ClientRect {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n }\n\n // There are two rects and they are disjoined\n if (\n clientRects.length === 2 &&\n cursorRectIndex >= 0 &&\n clientRects[0].left > clientRects[1].right\n ) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom': {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = currentBasePlacement === 'top';\n\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n\n return {top, bottom, left, right, width, height};\n }\n case 'left':\n case 'right': {\n const minLeft = Math.min(...clientRects.map((rects) => rects.left));\n const maxRight = Math.max(...clientRects.map((rects) => rects.right));\n const measureRects = clientRects.filter((rect) =>\n currentBasePlacement === 'left'\n ? rect.left === minLeft\n : rect.right === maxRight\n );\n\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n\n return {top, bottom, left, right, width, height};\n }\n default: {\n return boundingRect;\n }\n }\n}\n", "import {VirtualElement} from '@popperjs/core';\nimport {ReferenceElement, Sticky} from '../types';\n\nconst sticky: Sticky = {\n name: 'sticky',\n defaultValue: false,\n fn(instance) {\n const {reference, popper} = instance;\n\n function getReference(): ReferenceElement | VirtualElement {\n return instance.popperInstance\n ? instance.popperInstance.state.elements.reference\n : reference;\n }\n\n function shouldCheck(value: 'reference' | 'popper'): boolean {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n let prevRefRect: ClientRect | null = null;\n let prevPopRect: ClientRect | null = null;\n\n function updatePosition(): void {\n const currentRefRect = shouldCheck('reference')\n ? getReference().getBoundingClientRect()\n : null;\n const currentPopRect = shouldCheck('popper')\n ? popper.getBoundingClientRect()\n : null;\n\n if (\n (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect)) ||\n (currentPopRect && areRectsDifferent(prevPopRect, currentPopRect))\n ) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount(): void {\n if (instance.props.sticky) {\n updatePosition();\n }\n },\n };\n },\n};\n\nexport default sticky;\n\nfunction areRectsDifferent(\n rectA: ClientRect | null,\n rectB: ClientRect | null\n): boolean {\n if (rectA && rectB) {\n return (\n rectA.top !== rectB.top ||\n rectA.right !== rectB.right ||\n rectA.bottom !== rectB.bottom ||\n rectA.left !== rectB.left\n );\n }\n\n return true;\n}\n", "import tippy from '../src';\nimport {render} from '../src/template';\n\ntippy.setDefaultProps({render});\n\nexport {default, hideAll} from '../src';\nexport {default as createSingleton} from '../src/addons/createSingleton';\nexport {default as delegate} from '../src/addons/delegate';\nexport {default as animateFill} from '../src/plugins/animateFill';\nexport {default as followCursor} from '../src/plugins/followCursor';\nexport {default as inlinePositioning} from '../src/plugins/inlinePositioning';\nexport {default as sticky} from '../src/plugins/sticky';\nexport {ROUND_ARROW as roundArrow} from '../src/constants';\n", "import Icon from './Icon';\n\nexport default Icon;\n", "import * as React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconProp, SizeProp } from '@fortawesome/fontawesome-svg-core';\n\nimport type { WosIconProp } from 'types/common_types';\n\nimport icons from './icons/index';\n\ntype IconProps = {\n icon: WosIconProp | IconProp;\n size?: SizeProp;\n className?: string;\n};\n\nfunction Icon({ icon, size = '1x', className = '' }: IconProps) {\n if (icons[icon as WosIconProp]) {\n const WosIcon = icons[icon as WosIconProp];\n return <WosIcon className={`wos-icon wos-icon--${size} ${className}`} />;\n }\n\n return <FontAwesomeIcon icon={icon as IconProp} size={size} className={className} />;\n}\n\nexport default Icon;\n", "import type { WosIconProps } from 'types/common_types';\n\n// generic icons\nimport close from './close';\nimport questionCircle from './questionCircle';\n\n// catalog icons\nimport acrylicPrints from './acrylicPrints';\nimport canvas from './canvas';\nimport cards from './cards';\nimport clusters from './clusters';\nimport collagewall from './collagewall';\nimport custom from './custom';\nimport dreamPrints from './dreamPrints';\nimport fineArt from './fineArt';\nimport framedPrints from './framedPrints';\nimport metalPrints from './metalPrints';\nimport photoGifts from './photoGifts';\nimport photoPrints from './photoPrints';\nimport standout from './standout';\nimport thinWraps from './thinWraps';\nimport woodPrints from './woodPrints';\nimport xpozer from './xpozer';\n\n// UI Features\nimport arrangements from './arrangements';\nimport arrangementsSave from './arrangements_save';\nimport arrangementsAdd from './arrangements_add';\nimport arrangementsRemove from './arrangements_remove';\nimport rooms from './rooms';\nimport signIn from './signIn';\nimport wallPreview from './wall_preview_icon';\nimport wallPreviewSaved from './wall_preview_icon_saved';\nimport wallPreviewShare from './wall_preview_icon_share';\nimport wallPreviewClose from './wall_preview_icon_close';\n\ntype IconComponentMap = {\n close: (props: WosIconProps) => JSX.Element;\n questionCircle: (props: WosIconProps) => JSX.Element;\n acrylicPrints: (props: WosIconProps) => JSX.Element;\n canvas: (props: WosIconProps) => JSX.Element;\n cards: (props: WosIconProps) => JSX.Element;\n clusters: (props: WosIconProps) => JSX.Element;\n collagewall: (props: WosIconProps) => JSX.Element;\n custom: (props: WosIconProps) => JSX.Element;\n dreamPrints: (props: WosIconProps) => JSX.Element;\n fineArt: (props: WosIconProps) => JSX.Element;\n framedPrints: (props: WosIconProps) => JSX.Element;\n metalPrints: (props: WosIconProps) => JSX.Element;\n photoGifts: (props: WosIconProps) => JSX.Element;\n photoPrints: (props: WosIconProps) => JSX.Element;\n standout: (props: WosIconProps) => JSX.Element;\n thinWraps: (props: WosIconProps) => JSX.Element;\n woodPrints: (props: WosIconProps) => JSX.Element;\n xpozer: (props: WosIconProps) => JSX.Element;\n arrangements: (props: WosIconProps) => JSX.Element;\n arrangementsSave: (props: WosIconProps) => JSX.Element;\n arrangementsAdd: (props: WosIconProps) => JSX.Element;\n arrangementsRemove: (props: WosIconProps) => JSX.Element;\n rooms: (props: WosIconProps) => JSX.Element;\n signIn: (props: WosIconProps) => JSX.Element;\n wallPreview: (props: WosIconProps) => JSX.Element;\n wallPreviewSaved: (props: WosIconProps) => JSX.Element;\n wallPreviewShare: (props: WosIconProps) => JSX.Element;\n wallPreviewClose: (props: WosIconProps) => JSX.Element;\n};\n\nconst icons: IconComponentMap = {\n close,\n questionCircle,\n acrylicPrints,\n canvas,\n cards,\n clusters,\n collagewall,\n custom,\n dreamPrints,\n fineArt,\n framedPrints,\n metalPrints,\n photoGifts,\n photoPrints,\n standout,\n thinWraps,\n woodPrints,\n xpozer,\n arrangements,\n arrangementsSave,\n arrangementsAdd,\n arrangementsRemove,\n rooms,\n signIn,\n wallPreview,\n wallPreviewSaved,\n wallPreviewShare,\n wallPreviewClose,\n};\n\nexport default icons;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction close(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 24 24\" className={className}>\n <g fill=\"currentColor\">\n <path\n d=\"M12,0A12,12,0,1,0,24,12,12.035,12.035,0,0,0,12,0Zm4.95,15.536L15.536,16.95,12,13.414,8.464,16.95,7.05,15.536,10.586,12,7.05,8.464,8.464,7.05,12,10.586,15.536,7.05,16.95,8.464,13.414,12Z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n );\n}\n\nexport default close;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction questionCircle(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 24 24\" className={className}>\n <g fill=\"currentColor\">\n <path\n fill=\"currentColor\"\n d=\"M12,0C5.383,0,0,5.383,0,12s5.383,12,12,12s12-5.383,12-12S18.617,0,12,0z M11.5,19 c-0.828,0-1.5-0.672-1.5-1.5s0.672-1.5,1.5-1.5s1.5,0.672,1.5,1.5S12.328,19,11.5,19z M15.811,10.127 c-0.309,0.495-0.896,1.051-1.762,1.669c-1.401,1.036-1.363,1.266-1.363,2.204h-2.457c0-0.733-0.016-1.296,0.38-1.981 c0.253-0.439,0.717-0.906,1.391-1.4c0.809-0.578,1.595-1.135,1.595-2.105c0-0.909-0.778-1.233-1.687-1.233 c-0.927,0-1.984,0.303-3.171,0.909l-1.011-2.03c2.157-1.209,5.561-1.756,7.422-0.241C16.514,7.032,16.522,8.989,15.811,10.127z\"\n />\n </g>\n </svg>\n );\n}\n\nexport default questionCircle;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction acrylicPrints(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 0h-66.316c-0.421 0-0.842 0.211-1.158 0.421l-9.474 9.474c-0.211 0.316-0.421 0.737-0.421 1.158v47.368c0 0.842 0.737 1.579 1.579 1.579h66.316c0.421 0 0.842-0.211 1.158-0.421l9.474-9.474c0.316-0.316 0.421-0.632 0.421-1.158v-47.368c0-0.842-0.737-1.579-1.579-1.579zM75.789 47.368h-6.316v-35.684l6.316-6.316v42zM73.579 50.526l-4.105 4.105v-4.105h4.105zM9.474 48.316l-6.316 6.316v-42h6.316v35.684zM5.368 9.474l4.105-4.105v4.105h-4.105zM12.632 12.632h53.684v34.737h-53.684v-34.737zM73.579 3.158l-6.316 6.316h-54.632v-6.316h60.947zM5.368 56.842l6.316-6.316h54.632v6.316h-60.947z\"\n />\n </svg>\n );\n}\n\nexport default acrylicPrints;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction canvas(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 0h-66.316c-0.421 0-0.842 0.211-1.158 0.421v0l-9.474 9.474c-0.211 0.316-0.421 0.737-0.421 1.158v47.368c0 0.842 0.737 1.579 1.579 1.579h66.316c0.421 0 0.842-0.211 1.158-0.421v0l9.474-9.474c0.316-0.316 0.421-0.632 0.421-1.158v-47.368c0-0.842-0.737-1.579-1.579-1.579zM3.158 11.684l6.316-6.316v42.947l-6.316 6.316v-42.947zM67.263 56.842h-61.895l6.316-6.316h61.895l-6.316 6.316zM75.789 47.368h-63.158v-44.211h63.158v44.211z\"\n />\n </svg>\n );\n}\n\nexport default canvas;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction cards(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 0h-66.526c-0.842 0-1.579 0.737-1.579 1.579l-9.263 45.053c-0.211 1.263 0.737 2.526 2.105 2.526l7.158 0.105v9.158c0 0.842 0.737 1.579 1.579 1.579h66.526c0.842 0 1.579-0.737 1.579-1.579v-56.842c0-0.842-0.737-1.579-1.579-1.579zM75.789 56.842h-63.368v-53.684h63.368v53.684z\"\n />\n </svg>\n );\n}\n\nexport default cards;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction clusters(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M44.537 3.158v53.684h-41.379v-53.684h41.379zM44.537 0h-41.379c-1.744 0-3.158 1.414-3.158 3.158v53.684c0 1.744 1.414 3.158 3.158 3.158h41.379c1.744 0 3.158-1.414 3.158-3.158v-53.684c0-1.744-1.414-3.158-3.158-3.158z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M75.789 0h-22.105c-1.744 0-3.158 1.414-3.158 3.158v22.105c0 1.744 1.414 3.158 3.158 3.158h22.105c1.744 0 3.158-1.414 3.158-3.158v-22.105c0-1.744-1.414-3.158-3.158-3.158zM75.789 25.263h-22.105v-22.105h22.105z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M75.789 34.737v22.105h-22.105v-22.105h22.105zM75.789 31.579h-22.105c-1.744 0-3.158 1.414-3.158 3.158v22.105c0 1.744 1.414 3.158 3.158 3.158h22.105c1.744 0 3.158-1.414 3.158-3.158v-22.105c0-1.744-1.414-3.158-3.158-3.158z\"\n />\n </svg>\n );\n}\n\nexport default clusters;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction collagewall(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M36.063 14.484h-6.842c-0.872 0-1.579-0.707-1.579-1.579v0-6.842c0-0.872 0.707-1.579 1.579-1.579v0h6.842c0.872 0 1.579 0.707 1.579 1.579v0 6.842c0 0.872-0.707 1.579-1.579 1.579v0zM30.8 11.326h3.684v-3.684h-3.684z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M8.695 41.853h-6.842c-0.872 0-1.579-0.707-1.579-1.579v0-6.842c0-0.872 0.707-1.579 1.579-1.579v0h6.842c0.872 0 1.579 0.707 1.579 1.579v0 6.842c0 0.872-0.707 1.579-1.579 1.579v0zM3.432 38.695h3.684v-3.684h-3.684z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M36.063 28.168h-34.211c-0.872 0-1.579-0.707-1.579-1.579v0-6.842c0-0.872 0.707-1.579 1.579-1.579v0h34.211c0.872 0 1.579 0.707 1.579 1.579v0 6.842c0 0.872-0.707 1.579-1.579 1.579v0zM3.432 25.011h31.053v-3.684h-31.053z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M36.063 55.537h-20.526c-0.872 0-1.579-0.707-1.579-1.579v0-20.526c0-0.872 0.707-1.579 1.579-1.579v0h20.526c0.872 0 1.579 0.707 1.579 1.579v0 20.526c0 0.872-0.707 1.579-1.579 1.579v0zM17.116 52.379h17.368v-17.368h-17.368z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M49.747 55.537h-6.842c-0.872 0-1.579-0.707-1.579-1.579v0-6.842c0-0.872 0.707-1.579 1.579-1.579v0h6.842c0.872 0 1.579 0.707 1.579 1.579v0 6.842c0 0.872-0.707 1.579-1.579 1.579v0zM44.484 52.379h3.684v-3.684h-3.684z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M77.116 28.168h-6.842c-0.872 0-1.579-0.707-1.579-1.579v0-6.842c0-0.872 0.707-1.579 1.579-1.579v0h6.842c0.872 0 1.579 0.707 1.579 1.579v0 6.842c0 0.872-0.707 1.579-1.579 1.579v0zM71.853 25.011h3.684v-3.684h-3.684z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M77.116 41.853h-34.211c-0.872 0-1.579-0.707-1.579-1.579v0-6.842c0-0.872 0.707-1.579 1.579-1.579v0h34.211c0.872 0 1.579 0.707 1.579 1.579v0 6.842c0 0.872-0.707 1.579-1.579 1.579v0zM44.484 38.695h31.053v-3.684h-31.053z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M63.432 28.168h-20.526c-0.872 0-1.579-0.707-1.579-1.579v0-20.526c0-0.872 0.707-1.579 1.579-1.579v0h20.526c0.872 0 1.579 0.707 1.579 1.579v0 20.526c0 0.872-0.707 1.579-1.579 1.579v0zM44.484 25.011h17.368v-17.368h-17.368z\"\n />\n </svg>\n );\n}\n\nexport default collagewall;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction custom(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M54.084 39.758l-10.4-17.337v-7.032h1.053c0.581 0 1.053-0.471 1.053-1.053s-0.471-1.053-1.053-1.053v0h-10.526c-0.581 0-1.053 0.471-1.053 1.053s0.471 1.053 1.053 1.053v0h1.053v7.032l-10.4 17.337c-2.379 3.968-0.547 7.221 4.084 7.221h21.053c4.632 0 6.474-3.253 4.084-7.221zM30.526 34.347l6.842-11.347v-7.6h4.211v7.6l6.842 11.347h-17.895z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M77.368 60.137h-75.789c-0.872 0-1.579-0.707-1.579-1.579v0-56.842c0-0.872 0.707-1.579 1.579-1.579v0h75.789c0.872 0 1.579 0.707 1.579 1.579v0 56.842c0 0.872-0.707 1.579-1.579 1.579v0zM3.158 56.979h72.632v-53.684h-72.632z\"\n />\n </svg>\n );\n}\n\nexport default custom;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction dreamPrints(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 60h-75.789c-0.872 0-1.579-0.707-1.579-1.579v0-56.842c0-0.872 0.707-1.579 1.579-1.579v0h75.789c0.872 0 1.579 0.707 1.579 1.579v0 56.842c0 0.872-0.707 1.579-1.579 1.579v0zM3.158 56.842h72.632v-53.684h-72.632z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M66.989 36.432v0c-0.52-1.676-1.54-3.071-2.883-4.048l-0.022-0.016c0.355-0.96 0.56-2.068 0.56-3.225 0-5.279-4.279-9.558-9.558-9.558-1.263 0-2.468 0.245-3.572 0.69l0.064-0.023c-1.658-6.364-7.354-10.986-14.129-10.986-7.397 0-13.508 5.509-14.452 12.648l-0.008 0.074c-6.394 0.448-11.411 5.745-11.411 12.214 0 0.014 0 0.027 0 0.041v-0.002c0 0.074 0 0.158 0 0.232v0.126c0.188 6.632 5.609 11.937 12.269 11.937 0.024 0 0.048-0 0.071-0h35.575c4.324-0.002 7.829-3.507 7.829-7.832 0-0.807-0.122-1.586-0.349-2.319l0.015 0.055zM59.495 43.474h-35.579c-4.967-0.026-9.005-3.971-9.178-8.9l-0-0.016v-0.158c0-0.053 0-0.105 0-0.168 0-4.941 3.886-8.974 8.768-9.21l0.021-0.001h0.442c2.997 0.026 5.655 1.455 7.352 3.662l0.016 0.022 0.347 0.463 2.263-2.105-0.295-0.379c-1.835-2.363-4.476-4.023-7.505-4.568l-0.074-0.011c0.914-5.53 5.661-9.695 11.38-9.695 6.314 0 11.442 5.077 11.525 11.371l0 0.008c0 0.358 0 0.716-0.053 1.053l-0.168 1.842 1.116-1.421c1.199-1.547 3.058-2.533 5.147-2.533 3.588 0 6.496 2.908 6.496 6.496 0 1.499-0.507 2.879-1.36 3.978l0.011-0.015-0.526 0.663 0.832 0.179c0.648 0.141 1.22 0.396 1.72 0.747l-0.015-0.010 0.295 0.221c0.598 0.49 1.071 1.112 1.378 1.822l0.012 0.031c0.22 0.526 0.348 1.137 0.348 1.778 0 0.030-0 0.060-0.001 0.089l0-0.004c-0.006 2.613-2.107 4.733-4.712 4.768l-0.003 0z\"\n />\n </svg>\n );\n}\n\nexport default dreamPrints;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction fineArt(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 60h-75.789c-0.842 0-1.579-0.737-1.579-1.579v-56.842c0-0.842 0.737-1.579 1.579-1.579h75.789c0.842 0 1.579 0.737 1.579 1.579v56.842c0 0.842-0.737 1.579-1.579 1.579zM3.158 56.842h72.632v-53.684h-72.632v53.684z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M67.895 50.526h-56.842c-0.842 0-1.579-0.737-1.579-1.579v-37.895c0-0.842 0.737-1.579 1.579-1.579h56.842c0.842 0 1.579 0.737 1.579 1.579v37.895c0 0.842-0.737 1.579-1.579 1.579zM12.632 47.368h53.684v-34.737h-53.684v34.737z\"\n />\n </svg>\n );\n}\n\nexport default fineArt;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction framedPrints(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M69.474 9.474v41.053h-60v-41.053h60zM76.842 0h-74.737c-1.158 0-2.105 0.947-2.105 2.105v55.789c0 1.158 0.947 2.105 2.105 2.105h74.737c1.158 0 2.105-0.947 2.105-2.105v-55.789c0-1.158-0.947-2.105-2.105-2.105v0z\"\n />\n </svg>\n );\n}\n\nexport default framedPrints;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction metalPrints(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 0h-75.789c-0.842 0-1.579 0.737-1.579 1.579v56.842c0 0.842 0.737 1.579 1.579 1.579h75.789c0.842 0 1.579-0.737 1.579-1.579v-56.842c0-0.842-0.737-1.579-1.579-1.579zM75.789 56.842h-46.211l16.211-16.211c0.632-0.632 0.632-1.579 0-2.211s-1.579-0.632-2.211 0l-18.421 18.421h-10.316l35.158-35.158c0.632-0.632 0.632-1.579 0-2.211s-1.579-0.632-2.211 0l-37.368 37.368h-7.263v-3.053l32.211-32.211c0.632-0.632 0.632-1.579 0-2.211s-1.579-0.632-2.211 0l-30 30v-46.211h72.632v53.684z\"\n />\n </svg>\n );\n}\n\nexport default metalPrints;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction photoGifts(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M10.863 59.916c-1.192-0.075-2.18-0.868-2.542-1.948-0.376-1.449-1.112-2.674-2.108-3.628-0.626-0.62-1.381-1.105-2.223-1.41l-0.316-0.108c-0.326-0.134-0.706-0.237-1.101-0.292-1.26-0.209-2.205-1.225-2.298-2.478-0.001-0.156-0.001-0.314-0.001-0.472v-23.389q0-7.905 0-15.789c-0.002-0.038-0.003-0.082-0.003-0.126 0-0.845 0.338-1.611 0.887-2.169 0.219-0.24 0.495-0.424 0.807-0.532l0.13-0.004c0.262-0.095 0.577-0.179 0.901-0.237 1.049-0.219 1.937-0.657 2.678-1.266 0.704-0.541 1.279-1.234 1.679-2.031 0.365-0.649 0.686-1.366 0.937-2.115 0.383-1.083 1.319-1.782 2.418-1.782 0.181 0 0.358 0.019 0.529 0.055l0.478 0.081 0.358 0.053 0.811 0.147h0.179l0.874 0.105 1.611 0.189 1.726 0.284 3.463 0.421h0.263l1.305 0.074c1.053 0 2.105 0.105 3.158 0.242 0.464 0.054 1.002 0.084 1.548 0.084 0.026 0 0.052-0 0.077-0 0.703 0.002 1.397 0.048 2.078 0.135 0.669 0.072 1.541 0.119 2.423 0.119 0.366 0 0.731-0.008 1.094-0.024 1.001 0.002 2.054 0.002 3.201 0.086 0.962 0.085 2.081 0.134 3.212 0.134 0.759 0 1.512-0.022 2.26-0.065 1.37-0.069 2.844-0.122 4.318-0.143h1.695c0.012 0 0.026 0 0.040 0 0.469 0 0.929-0.038 1.377-0.112 0.349-0.064 0.808-0.105 1.275-0.105 0.108 0 0.216 0.002 0.323 0.006 0.206-0 0.416-0 0.637-0 0.379 0 0.768-0.063 1.147-0.105l0.537-0.053c0.071-0.007 0.153-0.011 0.237-0.011s0.166 0.004 0.247 0.012c1.052-0.002 2.096-0.078 3.117-0.225 0.525-0.060 1.177-0.102 1.82-0.155s1.053-0.074 1.537-0.126 1.211-0.189 1.8-0.253l1.053-0.147h0.642l0.674-0.105h0.211l0.295-0.053 2.663-0.316h0.189c0.285-0.131 0.618-0.207 0.968-0.207s0.684 0.076 0.983 0.213c0.712 0.337 1.262 0.955 1.506 1.711 0.531 2.134 1.939 3.846 3.806 4.77 0.191 0.081 0.37 0.139 0.554 0.182 0.429 0.106 0.78 0.232 1.113 0.388l-0.036-0.015c0.572 0.069 1.078 0.309 1.476 0.665 0.645 0.578 1.050 1.418 1.050 2.352 0 0.005 0 0.010-0 0.015v39.157c0.002 0.037 0.003 0.080 0.003 0.124 0 1.049-0.556 1.969-1.39 2.479-0.311 0.203-0.672 0.326-1.061 0.344-0.701 0.096-1.33 0.315-1.894 0.635-0.809 0.405-1.51 0.972-2.070 1.659-0.502 0.617-0.919 1.312-1.231 2.061-0.115 0.287-0.199 0.529-0.273 0.761l-0.147 0.453c-0.325 1.025-1.269 1.755-2.383 1.755-0.277 0-0.544-0.045-0.793-0.129l-0.288 0.005-1.168-0.168-1.126-0.126-1.337-0.158-3.032-0.411h-0.221l-1.053-0.063c-0.821 0-1.663-0.105-2.516-0.232-0.39-0.054-0.856-0.091-1.328-0.105-0.684-0.018-1.32-0.079-1.943-0.18-0.33-0.052-0.807-0.090-1.293-0.094l-0.931-0-0.947-0.084c-0.379 0-0.768-0.084-1.147-0.095s-0.926 0-1.379 0c-0.737 0-1.495 0-2.274-0.063-2.621-0.232-5.326-0.189-7.947-0.158-1.053 0-2.189 0-3.284 0-0.781 0.103-1.684 0.161-2.601 0.161-0.133 0-0.265-0.001-0.398-0.004-0.061-0.001-0.156-0.001-0.252-0.001-0.679 0-1.351 0.031-2.013 0.092-0.462 0.057-0.968 0.067-1.557 0.088s-1.053 0-1.579 0.105-1.053 0.105-1.6 0.137-0.905 0-1.358 0.105c-1.053 0.137-2.105 0.242-3.221 0.337l-1.053 0.095c-0.589 0.053-1.179 0.158-1.758 0.253l-0.842 0.137-0.358 0.053-0.789 0.084c-0.537 0.053-1.053 0.105-1.621 0.179s-0.937 0.158-1.411 0.263l-0.579 0.116c-0.119-0.027-0.221-0.059-0.319-0.1zM68.442 56.758v0zM3.421 49.474c0.504 0.108 0.934 0.235 1.35 0.39l0.187 0.063c1.338 0.47 2.484 1.189 3.434 2.108 1.29 1.237 2.269 2.794 2.809 4.543 0.536-0.030 1.073-0.135 1.578-0.209s1.168-0.137 1.758-0.2l0.979-0.116 0.811-0.126c0.653-0.105 1.316-0.211 1.968-0.274l1.053-0.095c1.053-0.095 2.105-0.189 3.105-0.326 0.526-0.074 1.053-0.105 1.589-0.126s0.916 0 1.368-0.116c0.556-0.069 1.213-0.115 1.879-0.126 0.479-0 0.953-0 1.416-0.074 0.528-0.041 1.143-0.064 1.764-0.064 0.264 0 0.528 0.004 0.79 0.013 0.080 0.002 0.219 0.003 0.359 0.003 0.788 0 1.563-0.051 2.324-0.151l0.163 0.010c1.116 0 2.232 0 3.358 0 0.732-0.023 1.592-0.037 2.455-0.037 2.044 0 4.070 0.074 6.077 0.221 0.374 0.037 1.037-0.016 1.721-0.016 0.505 0 1.053 0 1.516 0s0.916 0.063 1.368 0.116l0.842 0.084h0.789c0.647 0.006 1.278 0.059 1.893 0.157 0.351 0.058 0.849 0.103 1.355 0.117 0.628 0.018 1.21 0.067 1.783 0.147 0.632 0.096 1.38 0.148 2.158 0.201l1.116 0.074h0.337l3.032 0.411 1.284 0.147 1.158 0.137 1.263 0.179h0.189c0.105-0.305 0.2-0.611 0.337-0.905 0.458-1.103 1.035-2.055 1.732-2.904 0.856-1.025 1.929-1.87 3.149-2.461 0.763-0.37 1.583-0.637 2.444-0.785l0.055-38.955c-0.293-0.053-0.554-0.14-0.796-0.26-0.132-0.055-0.311-0.113-0.496-0.156-0.429-0.107-0.78-0.233-1.113-0.389-2.564-1.24-4.519-3.49-5.355-6.228l-0.366-0.072h-0.105l-2.463 0.284h-0.421l-0.789 0.116h-0.684l-0.989 0.137c-0.632 0.095-1.263 0.189-1.905 0.253s-1.053 0.095-1.653 0.137-1.2 0.084-1.789 0.147c-0.982 0.13-2.134 0.214-3.303 0.231l-0.234 0-0.516 0.053c-0.432 0-0.874 0.095-1.305 0.116s-0.579 0-0.863 0c-0.147-0.015-0.317-0.023-0.489-0.023s-0.343 0.008-0.511 0.024c-0.528 0.162-1.178 0.292-1.846 0.363l-1.795 0.004c-1.442 0-2.884 0.074-4.326 0.147-0.684 0.040-1.485 0.062-2.29 0.062-1.235 0-2.458-0.053-3.667-0.157-0.801-0.052-1.759-0.052-2.811-0.052-0.245 0.008-0.533 0.013-0.822 0.013-1.127 0-2.239-0.070-3.33-0.205-0.356-0.047-0.919-0.081-1.49-0.082-0.008 0-0.017 0-0.025 0-0.692 0-1.375-0.042-2.045-0.124-0.825-0.076-1.762-0.118-2.814-0.171l-1.347-0.074h-0.442l-1.874-0.221h-0.379l-2.905-0.453-2.526-0.305-0.347-0.074-0.705-0.126h-0.411c-0.319 0.838-0.642 1.532-1.005 2.2-0.605 1.175-1.503 2.231-2.593 3.047-1.156 0.866-2.525 1.464-4.013 1.705l-0.137 0.007q0 7.884 0 15.789zM2.789 49.389v0zM2.937 10.526v0zM10.526 3.263v0zM68.421 3.158v0z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M36.053 16.674c-0.003 0.048-0.004 0.105-0.004 0.162 0 1.144 0.654 2.135 1.609 2.62 0.449 0.332 0.994 0.526 1.585 0.526 0.19 0 0.375-0.020 0.554-0.058 0.588-0.16 1.118-0.413 1.588-0.744 1.3-1.042 2.089-2.695 0.805-4.474-0.578-0.827-1.525-1.36-2.596-1.36-0.41 0-0.802 0.078-1.162 0.221-1.326 0.438-2.297 1.65-2.378 3.099z\"\n />\n </svg>\n );\n}\n\nexport default photoGifts;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction photoPrints(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 60h-75.789c-0.842 0-1.579-0.737-1.579-1.579v-56.842c0-0.842 0.737-1.579 1.579-1.579h75.789c0.842 0 1.579 0.737 1.579 1.579v56.842c0 0.842-0.737 1.579-1.579 1.579zM3.158 56.842h72.632v-53.684h-72.632v53.684z\"\n />\n </svg>\n );\n}\n\nexport default photoPrints;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction standout(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 0h-66.316c-0.421 0-0.842 0.211-1.158 0.421v0l-9.474 9.474c-0.211 0.316-0.421 0.737-0.421 1.158v47.368c0 0.842 0.737 1.579 1.579 1.579h66.316c0.421 0 0.842-0.211 1.158-0.421v0l9.474-9.474c0.316-0.316 0.421-0.632 0.421-1.158v-47.368c0-0.842-0.737-1.579-1.579-1.579zM75.789 47.368h-63.158v-44.211h63.158v44.211z\"\n />\n </svg>\n );\n}\n\nexport default standout;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction thinWraps(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 0h-75.789c-0.872 0-1.579 0.707-1.579 1.579v56.842c0 0.872 0.707 1.579 1.579 1.579h75.789c0.872 0 1.579-0.707 1.579-1.579v-56.842c0-0.872-0.707-1.579-1.579-1.579zM75.789 56.842h-72.632v-53.684h72.632v53.684z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M71.053 53.684h-60c-2.616 0-4.737-2.121-4.737-4.737v-41.053c0-0.872 0.707-1.579 1.579-1.579s1.579 0.707 1.579 1.579v41.053c0 0.872 0.707 1.579 1.579 1.579h60c0.872 0 1.579 0.707 1.579 1.579s-0.707 1.579-1.579 1.579z\"\n />\n </svg>\n );\n}\n\nexport default thinWraps;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction woodPrints(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 0h-75.789c-0.842 0-1.579 0.737-1.579 1.579v56.842c0 0.842 0.737 1.579 1.579 1.579h75.789c0.842 0 1.579-0.737 1.579-1.579v-56.842c0-0.842-0.737-1.579-1.579-1.579zM67.263 3.158c0.421 1.158 0.947 2.105 1.579 2.526 0.316 0.211 0.737 0.421 1.158 0.421 0.105 0 0.316 0 0.421-0.105 0.947-0.211 1.368-1.263 1.684-2.842h1.053c0 0.211 0 0.526 0 0.737-0.632 9.789-1.684 12.105-2 12.632-1.474-0.632-3.789-5.684-5.474-13.368h1.579zM62.947 3.158c1.579 7.368 4.211 15.474 8 16 0.105 0 0.211 0 0.316 0 0.526 0 0.947-0.211 1.368-0.526 1.053-0.947 2.316-3.368 3.053-14.526 0-0.316 0-0.526 0-0.842h0.105v17.474c-1.895 7.474-3.895 11.474-4.842 12-0.316 0-2.211-0.632-5.474-8.526-2.211-5.263-4.526-12.632-6.526-20.842h4zM3.158 4.632c0.211-0.421 0.421-0.947 0.737-1.474h4c-1.684 2.526-3.368 5.579-4.737 8.842v-7.368zM3.158 56.842v-10.421c3.368 4.421 7.789 8.316 11.684 10.421h-11.684zM30.947 56.842h-8.421c1.053-1.368 2-3.579 2.947-6.632 2.105-7.053 3.263-16.947 3.053-25.158-0.211-7.263-1.579-16.421-7.158-18.526-2.632-0.947-5.263-0.632-7.474 1.053-7.474 5.474-10.105 23.895-10 27.789 0.211 3.684 4.737 9.158 6.105 10.842 1.368 1.579 6.105 6.842 8.947 6.842 1.684 0 2.316-2.105 2.842-5.158 0.421-2.526 0.737-6.105 0.947-10 0.316-6.211 0.105-12.526-0.421-17.368-0.737-6.737-2-9.789-4.316-10-2.211-0.211-4.105 2-5.579 6.526-2.421 6.947-4.105 21.474 0.211 24.211 1.158 0.737 2.421 0.632 3.474-0.316 3.474-3.368 4-19.474 2.421-22-0.316-0.632-1.158-0.842-1.789-0.421-0.632 0.316-0.842 1.158-0.421 1.789 0.737 1.368 0.737 12.632-1.263 17.474-0.526 1.263-0.947 1.474-0.947 1.474s-0.105 0-0.211-0.105c-2.105-1.263-2-12.947 0.842-21.263 1.158-3.474 2.421-4.737 2.947-4.737 0.105 0.105 0.737 0.632 1.368 3.579 0.947 4.316 1.368 12 1.053 20-0.316 8.211-1.158 12.526-1.684 13.789-1.053-0.421-3.474-2.211-6.632-5.895s-5.368-7.474-5.474-9.263c-0.211-4 2.632-21.053 8.947-25.684 1.579-1.158 3.263-1.368 5.158-0.737 7.053 2.632 6.632 26.842 2.526 40.632-1.684 5.684-3.158 6.737-3.474 6.632-4.316-1.053-12-7.368-16.316-14.105v-23.053c2-5.789 4.737-11.789 7.789-15.895h14.316c3.263 4 5.789 10.421 7.263 18.737 1.684 9.579 1.684 20.211-0.105 29.053-0.421 2.105-0.947 4.105-1.474 5.895zM37.158 56.842h-3.579c3.158-10 3.579-23.474 1.474-35.368-1.263-7.158-3.368-13.158-6.105-17.579-0.105-0.211-0.316-0.526-0.526-0.737h3.789c1.579 4.421 2.211 8.105 2.316 8.105 0.105 0.632 0.632 1.053 1.263 1.053 0.105 0 0.105 0 0.211 0 0.737-0.105 1.158-0.842 1.053-1.474-0.105-0.316-0.737-3.579-2.105-7.684h2.316c2.421 20.105 3.474 38.526-0.105 53.684zM45.474 56.842h-5.684c3.474-15.368 2.526-33.684 0-53.684h4.316c1.158 5.474 2.737 14.526 3.158 25.368 0.316 8.105 0 18-1.789 28.316zM48 56.842c1.789-10.421 2.105-20.316 1.789-28.421-0.421-10.632-1.895-19.579-3.053-25.263h4.842c4.737 15.158 10 34.421 3.895 53.684h-7.474zM54.105 3.158h2.211c2.211 8.737 4.526 16.316 6.842 21.895 3.789 9.053 6.316 10.105 7.895 10.105 0.105 0 0.105 0 0.211 0 0.737 0 1.474-0.421 2.105-1.263 0.842-0.947 1.684-2.632 2.526-4.737v15.789c-0.526 0.421-0.947 0.842-1.474 1.158-0.947 0.632-1.789 0.737-2.737 0.526-2.737-0.842-5.053-5.158-5.789-6.737-0.211-0.526-0.737-0.842-1.368-0.737-0.526 0.105-1.053 0.526-1.053 1.053 0 0.105-0.947 7.579-3.368 16.632h-1.895c5.684-19.368 0.632-38.526-4.105-53.684zM62.526 56.842c1.368-5.053 2.211-9.579 2.737-12.632 1.263 1.895 3.158 4.105 5.579 4.842 1.684 0.526 3.368 0.211 4.842-0.842 0 0 0.105 0 0.105-0.105v8.737h-13.263z\"\n />\n </svg>\n );\n}\n\nexport default woodPrints;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction xpozer(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 79 60\" className={className}>\n <path\n fill=\"currentColor\"\n d=\"M77.368 0h-75.789c-0.842 0-1.579 0.737-1.579 1.579v56.842c0 0.842 0.737 1.579 1.579 1.579h75.789c0.842 0 1.579-0.737 1.579-1.579v-56.842c0-0.842-0.737-1.579-1.579-1.579zM75.789 56.842h-72.632v-53.684h72.632v53.684z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M14.737 52.632v-22.105h4.211v1.053h41.053v-1.053h4.211v22.105h7.368v-7.368l-4.211 4.211v-38.947l4.211 4.211v-7.368h-7.368v22.105h-4.211v-1.053h-41.053v1.053h-4.211v-22.105h-7.368v7.368l4.211-4.211v38.947l-4.211-4.211v7.368z\"\n />\n </svg>\n );\n}\n\nexport default xpozer;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction arrangements(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 721.1 722.5\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M309.46,432.97H28.46c-14.1,0-25.55-10.71-25.55-23.91V26.58C2.91,13.38,14.36,2.67,28.46,2.67H309.46c14.1,0,25.55,10.71,25.55,23.91V409.06c0,13.2-11.44,23.91-25.55,23.91Z\" />\n <path d=\"M309.46,719.83H28.46c-14.1,0-25.55-10.71-25.55-23.91v-191.24c0-13.2,11.44-23.91,25.55-23.91H309.46c14.1,0,25.55,10.71,25.55,23.91v191.24c0,13.2-11.44,23.91-25.55,23.91Z\" />\n <path d=\"M692.64,241.72H411.64c-14.1,0-25.55-10.71-25.55-23.91V26.58c0-13.2,11.44-23.91,25.55-23.91h281c14.1,0,25.55,10.71,25.55,23.91V217.82c0,13.2-11.44,23.91-25.55,23.91Z\" />\n <path d=\"M692.64,719.83H411.64c-14.1,0-25.55-10.71-25.55-23.91V313.44c0-13.2,11.44-23.91,25.55-23.91h281c14.1,0,25.55,10.71,25.55,23.91v382.49c0,13.2-11.44,23.91-25.55,23.91Z\" />\n </svg>\n );\n}\n\nexport default arrangements;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction arrangementsSave(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n className={className}\n viewBox=\"0 0 721.1 663.49\"\n >\n <path d=\"M147.95,3.11H13.66C6.92,3.11,1.45,8.23,1.45,14.53V197.33c0,6.31,5.47,11.42,12.21,11.42H147.95c6.74,0,12.21-5.12,12.21-11.42V14.53c0-6.31-5.47-11.42-12.21-11.42Z\" />\n <path d=\"M147.95,231.6H13.66c-6.74,0-12.21,5.12-12.21,11.42v91.4c0,6.31,5.47,11.42,12.21,11.42H147.95c6.74,0,12.21-5.12,12.21-11.42v-91.4c0-6.31-5.47-11.42-12.21-11.42Z\" />\n <path d=\"M331.08,3.11H196.79c-6.74,0-12.21,5.12-12.21,11.42V105.93c0,6.31,5.47,11.42,12.21,11.42h134.29c6.74,0,12.21-5.12,12.21-11.42V14.53c0-6.31-5.47-11.42-12.21-11.42Z\" />\n <path d=\"M331.08,140.2H196.79c-6.74,0-12.21,5.12-12.21,11.42v182.8c0,6.31,5.47,11.42,12.21,11.42h134.29c6.74,0,12.21-5.12,12.21-11.42V151.63c0-6.31-5.47-11.42-12.21-11.42Z\" />\n <path d=\"M705.42,192.01c-18.98-19.01-49.64-19.01-68.62,0l-355.69,354.17L122.52,386.33c-18.98-18.98-49.73-18.98-68.71,0-18.97,18.98-18.97,49.64,0,68.62l194.36,194.31c18.98,18.98,49.64,18.98,68.62,0l388.63-388.63c18.98-18.98,18.98-49.64,0-68.62Z\" />\n </svg>\n );\n}\n\nexport default arrangementsSave;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction arrangementsAdd(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 721.1 722.5\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M412.7,551.05c-18.39,.83-34.1-14.88-34.21-34.21,.1-19.32,15.81-35.03,34.21-34.21l97.24,.1,.83-98.17c.1-19.32,15.81-35.03,34.21-34.21,20.25-.83,35.96,14.88,34.21,34.21l.83,96.31,97.24,1.76c20.25-.83,35.96,14.88,34.21,34.21,1.76,19.32-13.95,35.03-34.21,34.21l-97.24,1.76-.83,96.31c1.76,19.32-13.95,35.03-34.21,34.21-18.39,.83-34.1-14.88-34.21-34.21l-.83-98.17-97.24,.1h0Z\" />\n <g>\n <path d=\"M309.49,432.92H28.67c-14.09,0-25.53-10.7-25.53-23.89V26.79C3.14,13.61,14.58,2.9,28.67,2.9H309.49c14.09,0,25.53,10.7,25.53,23.89V409.03c0,13.19-11.44,23.89-25.53,23.89Z\" />\n <path d=\"M309.49,719.6H28.67c-14.09,0-25.53-10.7-25.53-23.89v-191.12c0-13.19,11.44-23.89,25.53-23.89H309.49c14.09,0,25.53,10.7,25.53,23.89v191.12c0,13.19-11.44,23.89-25.53,23.89Z\" />\n <path d=\"M692.43,241.8H411.61c-14.09,0-25.53-10.7-25.53-23.89V26.79c0-13.19,11.44-23.89,25.53-23.89h280.82c14.09,0,25.53,10.7,25.53,23.89V217.91c0,13.19-11.44,23.89-25.53,23.89Z\" />\n </g>\n </svg>\n );\n}\n\nexport default arrangementsAdd;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction arrangementsRemove(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 721.1 722.5\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M412.86,551.64c-18.45,.83-34.21-14.93-34.31-34.31,.1-19.38,15.86-35.14,34.31-34.31h265.37c20.32-.83,36.07,14.93,34.31,34.31,1.76,19.38-13.99,35.14-34.31,34.31H412.86Z\" />\n <g>\n <path d=\"M309.33,433.14H27.65c-14.14,0-25.61-10.74-25.61-23.96V25.76C2.04,12.53,13.51,1.8,27.65,1.8H309.33c14.14,0,25.61,10.74,25.61,23.96V409.18c0,13.23-11.47,23.96-25.61,23.96Z\" />\n <path d=\"M309.33,720.7H27.65c-14.14,0-25.61-10.74-25.61-23.96v-191.71c0-13.23,11.47-23.96,25.61-23.96H309.33c14.14,0,25.61,10.74,25.61,23.96v191.71c0,13.23-11.47,23.96-25.61,23.96Z\" />\n <path d=\"M693.45,241.43H411.77c-14.14,0-25.61-10.74-25.61-23.96V25.76c0-13.23,11.47-23.96,25.61-23.96h281.69c14.14,0,25.61,10.74,25.61,23.96V217.47c0,13.23-11.47,23.96-25.61,23.96Z\" />\n </g>\n </svg>\n );\n}\n\nexport default arrangementsRemove;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction rooms(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg viewBox=\"0 0 24 24\" className={className}>\n <g>\n <path\n fill=\"currentColor\"\n d=\"M23.2453 6.1969C23.7094 6.46408 24 6.96096 24 7.50002V22.5C24 23.3297 23.3297 24 22.5 24C21.6703 24 21 23.3297 21 22.5V8.3719L12 3.22783L3 8.3719V22.5C3 23.3297 2.32828 24 1.5 24C0.671719 24 0 23.3297 0 22.5V7.50002C0 6.96096 0.288422 6.46408 0.755625 6.1969L11.2547 0.197644C11.6766 -0.0658406 12.2812 -0.0658406 12.7453 0.197644L23.2453 6.1969ZM10.125 7.87502C10.125 6.83908 10.9641 6.00002 12 6.00002C13.0359 6.00002 13.875 6.83908 13.875 7.87502C13.875 8.91096 13.0359 9.75002 12 9.75002C10.9641 9.75002 10.125 8.91096 10.125 7.87502ZM10.5 24C9.87656 24 9.375 23.4985 9.375 22.875V14.6953L8.11406 17.0344C7.81875 17.5781 7.13906 17.7844 6.59063 17.4891C6.00469 17.1938 5.84062 16.5141 6.13594 15.9656L7.90781 12.6703C8.62969 11.3344 10.0266 10.4578 11.5406 10.4578H12.4594C13.9734 10.4578 15.3703 11.3344 16.0922 12.6703L17.8641 15.9656C18.1594 16.5141 17.9531 17.1938 17.4094 17.4891C16.8609 17.7844 16.1812 17.5781 15.8859 17.0344L14.625 14.6953V22.875C14.625 23.4985 14.1234 24 13.5 24C12.8766 24 12.375 23.4985 12.375 22.875V18.75H11.625V22.875C11.625 23.4985 11.1234 24 10.5 24Z\"\n />\n </g>\n </svg>\n );\n}\n\nexport default rooms;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction signIn(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <g fill=\"#111111\">\n <path\n fill=\"currentColor\"\n d=\"M12,0C5.383,0,0,5.383,0,12s5.383,12,12,12s12-5.383,12-12S18.617,0,12,0z M18.698,19.404 C18.034,17.431,16.198,16,14,16h-4c-2.198,0-4.032,1.432-4.696,3.405C3.281,17.574,2,14.937,2,12C2,6.486,6.486,2,12,2 s10,4.486,10,10C22,14.936,20.72,17.573,18.698,19.404z\"\n />{' '}\n <path\n data-color=\"color-2\"\n d=\"M12,5C9.791,5,8,6.791,8,9v1c0,2.209,1.791,4,4,4s4-1.791,4-4V9C16,6.791,14.209,5,12,5z\"\n />\n </g>\n </svg>\n );\n}\n\nexport default signIn;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction wallPreviewIcon(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n fill=\"currentColor\"\n viewBox=\"0 0 721.1 722.5\"\n >\n <path d=\"M496.71,721.81h-56.3c-9.21-3.89-12.08-8.29-12.08-18.53v-14.43H109.02c0,4.91-.2,9.52,0,14.13,.41,9.01-2.97,15.56-11.67,18.84H41.15c-8.91-3.07-11.98-9.62-11.98-18.63,.1-39,.1-78.11-.1-117.11-.1-2.56-1.13-5.02-2.87-6.86-10.24-8.91-17.51-20.68-20.88-33.89-1.33-4.91-2.05-9.93-3.07-14.95v-11.26c.31-1.64,.72-3.28,.92-5.02,1.54-10.95,4.91-21.29,11.16-30.51,10.75-15.87,24.98-25.29,44.84-24.47,7.37,.31,14.64,.2,22.01,0,9.42-.2,16.38,3.99,21.6,11.36,4.3,6.24,6.45,13.62,6.35,21.19v98.18H428.12c.1-1.95,.2-3.58,.2-5.22,0-30.71-.1-61.42,.1-92.14,0-4.4,.72-8.8,1.95-13.1,3.99-13.41,13.72-20.37,27.64-20.37,7.99,0,16.07-.61,24.06,.2,6.65,.61,13.72,1.84,19.55,4.71,17.1,8.39,26.21,23.34,30.92,41.26,1.23,4.61,2.05,9.21,3.07,13.82v11.26c-.51,1.54-.92,3.17-1.23,4.81-2.66,17.1-9.21,32.04-22.73,43.3-2.35,1.84-3.69,4.81-3.48,7.88,.1,38.9,0,77.7,.1,116.5,0,9.11-2.97,15.56-11.57,19.04Z\" />\n <path d=\"M130.21,327.67H406.62c8.39,2.56,17.4,3.89,25.08,7.78,27.44,14.03,41.46,38.08,47.6,67.36,1.64,7.58,1.95,15.36,2.87,23.65-8.6,0-15.87,.1-23.14,0-19.45-.41-34.09,8.09-44.84,23.85-7.78,11.36-11.98,24.77-12.08,38.49-.31,20.78-.2,41.56-.31,62.45,0,1.95-.2,3.89-.2,5.84H135.64v-5.94c0-18.22-.1-36.55,0-54.77,.1-16.79-2.97-32.66-12.69-46.58-9.73-13.92-22.42-22.73-39.93-23.14-7.17-.1-14.33-.2-21.5-.31-1.84,0-3.58-.1-5.84-.2,.41-24.77,6.65-46.99,21.29-66.54,10.75-14.33,24.36-24.67,41.87-29.38,3.79-1.02,7.58-1.74,11.36-2.56Z\" />\n <g>\n <path d=\"M48.31,221.1c0,10.13,8.29,18.43,18.43,18.43h217.03c10.13,0,18.43-8.29,18.43-18.43V73.17c0-10.13-8.29-18.43-18.43-18.43H66.74c-10.13,0-18.43,8.29-18.43,18.43V221.1Z\" />\n <path d=\"M48.31,221.1c0,10.13,8.29,18.43,18.43,18.43h217.03c10.13,0,18.43-8.29,18.43-18.43V73.17c0-10.13-8.29-18.43-18.43-18.43H66.74c-10.13,0-18.43,8.29-18.43,18.43V221.1Z\" />\n </g>\n <g>\n <path d=\"M394.44,260.62c0,10.13,8.29,18.43,18.43,18.43h287.56c10.13,0,18.43-8.29,18.43-18.43V19.12c0-10.13-8.29-18.43-18.43-18.43H412.86c-10.13,0-18.43,8.29-18.43,18.43v241.5Z\" />\n <path d=\"M394.44,260.62c0,10.13,8.29,18.43,18.43,18.43h287.56c10.13,0,18.43-8.29,18.43-18.43V19.12c0-10.13-8.29-18.43-18.43-18.43H412.86c-10.13,0-18.43,8.29-18.43,18.43v241.5Z\" />\n </g>\n <g>\n <path d=\"M575.43,436.7c0,10.13,8.29,18.43,18.43,18.43h76.88c10.13,0,18.43-8.29,18.43-18.43v-66.34c0-10.13-8.29-18.43-18.43-18.43h-76.88c-10.13,0-18.43,8.29-18.43,18.43v66.34Z\" />\n <path d=\"M575.43,436.7c0,10.13,8.29,18.43,18.43,18.43h76.88c10.13,0,18.43-8.29,18.43-18.43v-66.34c0-10.13-8.29-18.43-18.43-18.43h-76.88c-10.13,0-18.43,8.29-18.43,18.43v66.34Z\" />\n </g>\n </svg>\n );\n}\n\nexport default wallPreviewIcon;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction wallPreviewIconSaved(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n fill=\"currentColor\"\n viewBox=\"0 0 721.1 567.05\"\n >\n <path d=\"M545.96,1.03H61.68C28.25,1.03,1.14,28.13,1.14,61.56V384.42c0,33.43,27.1,60.54,60.54,60.54h484.28c33.43,0,60.54-27.1,60.54-60.54V61.56c0-33.43-27.11-60.54-60.54-60.54ZM144.87,505.49h423.75c50.07,0,90.8-40.74,90.8-90.8V112.01c0-16.65,13.56-30.27,30.27-30.27s30.27,13.62,30.27,30.27V414.68c0,83.49-67.89,151.34-151.34,151.34H144.87c-16.71,0-30.27-13.56-30.27-30.27s13.49-30.27,30.27-30.27Zm312.36-138.49h-38.13c-6.24-2.83-8.18-6.04-8.18-13.49v-10.51H194.72c0,3.58-.14,6.93,0,10.29,.28,6.56-2.01,11.33-7.9,13.72h-38.06c-6.03-2.24-8.11-7.01-8.11-13.57,.07-28.4,.07-56.88-.07-85.28-.07-1.86-.76-3.65-1.94-4.99-6.93-6.49-11.85-15.06-14.14-24.67-.9-3.58-1.39-7.23-2.08-10.88v-8.2c.21-1.19,.49-2.39,.62-3.65,1.04-7.98,3.33-15.5,7.56-22.21,7.28-11.55,16.91-18.41,30.36-17.82,4.99,.22,9.91,.15,14.9,0,6.38-.15,11.09,2.91,14.63,8.27,2.91,4.55,4.37,9.91,4.3,15.43v71.49h216c.07-1.42,.14-2.61,.14-3.8,0-22.36-.07-44.73,.07-67.09,0-3.21,.49-6.41,1.32-9.54,2.7-9.77,9.29-14.83,18.72-14.83,5.41,0,10.88-.45,16.29,.15,4.51,.45,9.29,1.34,13.24,3.43,11.58,6.11,17.75,17,20.93,30.04,.83,3.35,1.39,6.71,2.08,10.06v8.2c-.35,1.12-.62,2.31-.83,3.5-1.8,12.45-6.24,23.33-15.39,31.53-1.59,1.34-2.5,3.5-2.36,5.74,.07,28.33,0,56.58,.07,84.83,0,6.63-2.01,11.33-7.83,13.86ZM209.07,80.01h187.16c5.68,1.86,11.78,2.83,16.98,5.67,18.58,10.21,28.07,27.73,32.23,49.05,1.11,5.52,1.32,11.18,1.94,17.22-5.82,0-10.74,.07-15.67,0-13.17-.3-23.08,5.89-30.36,17.37-5.27,8.27-8.11,18.04-8.18,28.03-.21,15.13-.14,30.26-.21,45.47,0,1.42-.14,2.83-.14,4.25H212.74v-4.32c0-13.27-.07-26.61,0-39.88,.07-12.22-2.01-23.78-8.6-33.92-6.59-10.14-15.18-16.55-27.03-16.85-4.85-.07-9.7-.15-14.56-.22-1.25,0-2.43-.07-3.95-.15,.28-18.04,4.51-34.21,14.42-48.45,7.28-10.44,16.5-17.96,28.35-21.39,2.56-.75,5.13-1.27,7.69-1.86Z\" />\n </svg>\n );\n}\n\nexport default wallPreviewIconSaved;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction wallPreviewIconShare(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n fill=\"currentColor\"\n viewBox=\"0 0 721.1 590.43\"\n >\n <path d=\"M719.96,126.41c0,70.58-56.31,125.72-125.72,125.72-33.92,0-64.69-12.18-87.22-34.05l-123.23,61.55c.65,5.11-.26,9.17-.26,15.58,0,5.24,.92,9.3,.26,15.58l123.23,61.55c22.52-21.87,53.3-35.23,87.22-35.23,69.41,0,125.72,55.13,125.72,125.72s-56.31,125.72-125.72,125.72-125.72-56.31-125.72-125.72c0-6.42,.26-10.48,.92-15.58l-123.23-61.55c50.82-27.46-43.72-162.38,0-180.98l123.23-61.55c-.65-6.29-.92-10.35-.92-15.58,0-69.43,55.13-125.72,125.72-125.72s125.72,56.28,125.72,125.72v-1.18Z\" />\n <path d=\"M329.38,433.9h-28.52c-4.67-2.12-6.12-4.52-6.12-10.09v-7.86H132.98c0,2.68-.1,5.19,0,7.7,.21,4.91-1.5,8.48-5.91,10.26h-28.47c-4.51-1.67-6.07-5.24-6.07-10.15,.05-21.25,.05-42.55-.05-63.8-.05-1.39-.57-2.73-1.45-3.74-5.19-4.85-8.87-11.27-10.58-18.46-.67-2.68-1.04-5.41-1.56-8.14v-6.13c.16-.89,.36-1.78,.47-2.73,.78-5.97,2.49-11.6,5.65-16.62,5.45-8.64,12.65-13.77,22.71-13.33,3.73,.17,7.42,.11,11.15,0,4.77-.11,8.3,2.17,10.94,6.19,2.18,3.4,3.27,7.42,3.22,11.54v53.48h161.6c.05-1.06,.1-1.95,.1-2.84,0-16.73-.05-33.46,.05-50.19,0-2.4,.36-4.8,.99-7.14,2.02-7.31,6.95-11.1,14-11.1,4.05,0,8.14-.33,12.19,.11,3.37,.33,6.95,1,9.91,2.57,8.66,4.57,13.28,12.71,15.66,22.47,.62,2.51,1.04,5.02,1.56,7.53v6.13c-.26,.84-.47,1.73-.62,2.62-1.35,9.31-4.67,17.46-11.51,23.59-1.19,1-1.87,2.62-1.76,4.29,.05,21.19,0,42.33,.05,63.46,0,4.96-1.5,8.48-5.86,10.37ZM143.72,219.2h140.02c4.25,1.39,8.82,2.12,12.71,4.24,13.9,7.64,21,20.75,24.11,36.69,.83,4.13,.99,8.37,1.45,12.88-4.36,0-8.04,.06-11.72,0-9.85-.22-17.27,4.41-22.71,12.99-3.94,6.19-6.07,13.5-6.12,20.97-.16,11.32-.1,22.64-.16,34.02,0,1.06-.1,2.12-.1,3.18H146.46v-3.23c0-9.93-.05-19.91,0-29.84,.05-9.15-1.5-17.79-6.43-25.37-4.93-7.58-11.36-12.38-20.23-12.6-3.63-.06-7.26-.11-10.89-.17-.93,0-1.82-.06-2.96-.11,.21-13.5,3.37-25.6,10.79-36.25,5.45-7.81,12.34-13.44,21.21-16.01,1.92-.56,3.84-.95,5.76-1.39Zm70.27-105.49C96.44,113.71,1.14,209,1.14,326.55s95.29,212.84,212.84,212.84,212.84-95.29,212.84-212.84S331.54,113.71,213.99,113.71Z\" />\n </svg>\n );\n}\n\nexport default wallPreviewIconShare;\n", "import * as React from 'react';\n\nimport type { WosIconProps } from 'types/common_types';\n\nfunction wallPreviewIconClose(props: WosIconProps) {\n const { className } = props;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n fill=\"currentColor\"\n viewBox=\"0 0 721.1 533.15\"\n >\n <path d=\"M667.86,532.45h-75.96c-12.43-5.25-16.3-11.19-16.3-25v-19.47H144.81c0,6.63-.28,12.84,0,19.06,.55,12.15-4.01,20.99-15.75,25.41H53.24c-12.02-4.14-16.16-12.98-16.16-25.14,.14-52.62,.14-105.38-.14-158.01-.14-3.45-1.52-6.77-3.87-9.25-13.81-12.02-23.62-27.9-28.18-45.72-1.8-6.63-2.76-13.4-4.14-20.17v-15.19c.41-2.21,.97-4.42,1.24-6.77,2.07-14.78,6.63-28.73,15.05-41.16,14.5-21.41,33.7-34.11,60.5-33.01,9.94,.41,19.75,.28,29.7,0,12.71-.28,22.1,5.39,29.14,15.33,5.8,8.43,8.7,18.37,8.56,28.59v132.45h430.37c.14-2.62,.28-4.83,.28-7.04,0-41.44-.14-82.87,.14-124.31,0-5.94,.97-11.88,2.62-17.68,5.39-18.09,18.51-27.49,37.29-27.49,10.77,0,21.68-.83,32.46,.28,8.98,.83,18.51,2.49,26.38,6.35,23.07,11.33,35.36,31.49,41.71,55.66,1.66,6.22,2.76,12.43,4.14,18.65v15.19c-.69,2.07-1.24,4.28-1.66,6.49-3.59,23.07-12.43,43.23-30.66,58.42-3.18,2.49-4.97,6.49-4.7,10.64,.14,52.48,0,104.83,.14,157.18,0,12.29-4.01,20.99-15.61,25.69ZM158.07,4.16c-23.62,6.35-41.99,20.3-56.49,39.64-19.75,26.38-28.18,56.35-28.73,89.78,3.04,.14,5.39,.28,7.87,.28,9.67,.14,19.34,.28,29,.41,23.62,.55,40.74,12.43,53.87,31.21,13.12,18.78,17.26,40.19,17.13,62.84-.14,24.58,0,49.31,0,73.89v8.01h358.83c0-2.62,.28-5.25,.28-7.87,.14-28.18,0-56.21,.41-84.25,.14-18.51,5.8-36.6,16.3-51.93,14.5-21.27,34.25-32.73,60.5-32.18,9.81,.14,19.61,0,31.21,0-1.24-11.19-1.66-21.68-3.87-31.9-8.29-39.5-27.21-71.96-64.22-90.88-10.36-5.25-22.51-7.04-33.84-10.5H173.4c-5.11,1.1-10.22,2.07-15.33,3.45Zm123.97,96.48c-10-9.14-10-25.49,0-35.6,10.11-10,26.46-10,35.6,0l50.55,50.66,51.52-50.66c10.11-10,26.46-10,35.6,0,10.97,10.11,10.97,26.46,0,35.6l-49.69,50.55,49.69,51.52c10.97,10.11,10.97,26.46,0,35.6-9.14,10.97-25.49,10.97-35.6,0l-51.52-49.69-50.55,49.69c-9.14,10.97-25.49,10.97-35.6,0-10-9.14-10-25.49,0-35.6l50.66-51.52-50.66-50.55h0Z\" />\n </svg>\n );\n}\n\nexport default wallPreviewIconClose;\n", "import React from 'react';\n\nimport Link from 'components/shared/Link';\nimport Menu from 'components/shared/Menu/';\n\nfunction Support() {\n const menuItems = [\n <Link\n role=\"menuitem\"\n type=\"no-style\"\n id=\"support_link\"\n href=\"https://support.bayphoto.com/s/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Help & FAQs\n </Link>,\n <Link\n role=\"menuitem\"\n type=\"no-style\"\n id=\"specials_link\"\n href=\"https://bayphoto.com/specials/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Specials\n </Link>,\n <Link\n role=\"menuitem\"\n type=\"no-style\"\n id=\"product_templates_link\"\n href=\"https://bayphoto.com/product-templates/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Product Templates\n </Link>,\n <Link\n role=\"menuitem\"\n type=\"no-style\"\n id=\"production_times_link\"\n href=\"https://bayphoto.com/production-times/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Production Times\n </Link>,\n <Link\n role=\"menuitem\"\n type=\"no-style\"\n id=\"shipping_policies_link\"\n href=\"https://bayphoto.com/shipping-policies/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Shipping Policies\n </Link>,\n ];\n\n return (\n <div className=\"support_container\">\n <Menu\n appearance=\"light\"\n className=\"nav_link mobile-support-menu\"\n menuItems={menuItems}\n triggerText=\"Support\"\n triggerIcon=\"question-circle\"\n triggerId=\"support-menu-trigger-mobile\"\n iconOnlyTrigger\n />\n <Menu\n className=\"nav_link support-menu\"\n menuItems={menuItems}\n appearance=\"light\"\n triggerId=\"support-menu-trigger\"\n triggerText=\"Support\"\n position=\"right\"\n />\n </div>\n );\n}\n\nexport default Support;\n", "import Menu from './Menu';\n\nexport default Menu;\n", "import React, { useCallback, useMemo, useState, useEffect, useRef } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconProp, SizeProp } from '@fortawesome/fontawesome-svg-core';\n\nimport Button from 'components/shared/Button';\nimport Icon from 'components/shared/Icon';\n\nimport { handleKeyEvents } from 'utils/handlers';\n\ntype MenuProps = {\n triggerText: string;\n menuItems: JSX.Element[];\n triggerId: string;\n className?: string;\n triggerIcon?: IconProp | null;\n triggerIconSize?: SizeProp;\n iconOnlyTrigger?: boolean;\n direction?: 'up' | 'down';\n position?: 'left' | 'right';\n appearance?: 'dark' | 'light' | 'themed';\n disabled?: boolean;\n};\n\nfunction Menu({\n direction = 'down',\n position = 'left',\n triggerIcon = null,\n triggerIconSize = 'lg',\n iconOnlyTrigger = false,\n className = '',\n appearance = 'dark',\n disabled = false,\n triggerId,\n triggerText,\n menuItems,\n}: MenuProps) {\n const [menuIsOpen, setMenuIsOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n\n function handleTriggerClick() {\n setMenuIsOpen((prev) => !prev);\n }\n\n const handleArrowUp = useCallback(() => {\n if (menuIsOpen && menuRef.current) {\n const listItems: NodeListOf<HTMLButtonElement> =\n menuRef.current.querySelectorAll('li button');\n listItems[listItems.length - 1].focus();\n } else {\n setMenuIsOpen(true);\n }\n }, [menuIsOpen]);\n\n const handleArrowDown = useCallback(() => {\n if (menuIsOpen) {\n setMenuIsOpen(false);\n }\n }, [menuIsOpen]);\n\n const handleArrowRight = useCallback(() => {\n if (!menuIsOpen) {\n setMenuIsOpen(true);\n }\n }, [menuIsOpen]);\n\n const handleArrowLeft = useCallback(() => {\n if (menuIsOpen) {\n setMenuIsOpen(false);\n }\n }, [menuIsOpen]);\n\n const handleArrowKeys = useCallback(\n (e: React.KeyboardEvent) => {\n const { key } = e;\n e.preventDefault();\n switch (key) {\n case 'ArrowUp':\n handleArrowUp();\n break;\n case 'ArrowDown':\n handleArrowDown();\n break;\n case 'ArrowRight':\n handleArrowRight();\n break;\n case 'ArrowLeft':\n handleArrowLeft();\n break;\n default:\n break;\n }\n },\n [handleArrowDown, handleArrowLeft, handleArrowRight, handleArrowUp]\n );\n\n function handleOffClickClose(e: MouseEvent) {\n const target = e.target as HTMLElement;\n if (menuRef.current && menuRef.current.contains && !menuRef.current.contains(target)) {\n setMenuIsOpen(false);\n }\n }\n\n const caretDirection = useMemo(() => {\n switch (direction) {\n case 'up':\n return menuIsOpen ? 'down' : 'up';\n case 'down':\n return menuIsOpen ? 'up' : 'down';\n }\n }, [direction, menuIsOpen]);\n\n const triggerAppearance = useMemo(() => {\n switch (appearance) {\n case 'dark':\n return 'light';\n case 'light':\n return 'dark';\n case 'themed':\n return 'themed';\n }\n }, [appearance]);\n\n const icon = useMemo(() => {\n if (!triggerIcon) {\n return null;\n }\n\n return (\n <Icon className=\"menu-trigger-icon\" icon={triggerIcon as IconProp} size={triggerIconSize} />\n );\n }, [triggerIcon, triggerIconSize]);\n\n useEffect(() => {\n if (menuIsOpen) {\n document.addEventListener('click', handleOffClickClose);\n } else {\n document.removeEventListener('click', handleOffClickClose);\n }\n\n return () => {\n document.removeEventListener('click', handleOffClickClose);\n };\n }, [menuIsOpen]);\n\n return (\n <div\n ref={menuRef}\n className={`menu-container ${appearance} ${className} ${menuIsOpen ? 'open' : ''}`}\n >\n <Button\n type={iconOnlyTrigger ? 'icon' : 'cornered'}\n icon={iconOnlyTrigger && triggerIcon ? triggerIcon : undefined}\n id={triggerId && triggerId}\n aria-controls={`${triggerId}-menu`}\n aria-expanded={menuIsOpen}\n className=\"menu-trigger\"\n a11yText={triggerText}\n appearance={triggerAppearance}\n size=\"lg\"\n disabled={disabled}\n onClick={handleTriggerClick}\n onKeyDown={handleKeyEvents({ open: () => false, navigate: handleArrowKeys })}\n >\n {!iconOnlyTrigger && triggerIcon && icon}\n {!iconOnlyTrigger && triggerText}\n <FontAwesomeIcon className=\"menu-trigger-caret\" icon={`chevron-${caretDirection}`} />\n </Button>\n\n <ul\n role=\"menu\"\n id={`${triggerId}-menu`}\n aria-labelledby={triggerId}\n className={`menu-items ${position} ${direction}`}\n >\n {menuItems.map((item, index) => (\n <li\n // FIXME: these should probably be objects with nodes as property\n // eslint-disable-next-line react/no-array-index-key\n key={`${triggerText}-${index}`}\n className={`menu-item ${item.props.disabled ? 'disabled' : ''}`}\n >\n {item}\n </li>\n ))}\n </ul>\n </div>\n );\n}\n\nexport default Menu;\n", "type KeyEventHandlers<T> = {\n open?: (e: React.KeyboardEvent<T>) => void;\n close?: (e: React.KeyboardEvent<T>) => void;\n navigate?: (e: React.KeyboardEvent<T>) => void;\n};\n\ntype KeyEventAction<T> = keyof KeyEventHandlers<T>;\n\nconst handledKeys = {\n Enter: 'open',\n ' ': 'open',\n Escape: 'close',\n ArrowUp: 'navigate',\n ArrowDown: 'navigate',\n ArrowLeft: 'navigate',\n ArrowRight: 'navigate',\n};\n\ntype HandledKey = keyof typeof handledKeys;\n\nfunction isHandledKey(key: string): key is HandledKey {\n return Object.keys(handledKeys).includes(key);\n}\n\nexport function handleKeyEvents<T extends HTMLElement>(\n handlers: KeyEventHandlers<T>\n): React.KeyboardEventHandler<T> {\n // some element types should allow the default behavior\n const allowDefault = ['select', 'button'];\n\n return (e) => {\n const { key } = e;\n\n if (isHandledKey(key)) {\n const target = e.target as T;\n\n const action = handledKeys[key] as KeyEventAction<T>;\n const handler = handlers[action];\n\n if (handler) {\n if (allowDefault.indexOf(target.tagName.toLowerCase()) === -1) {\n e.preventDefault();\n }\n e.stopPropagation();\n handler(e);\n }\n }\n };\n}\n", "import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport SignInSSO from 'components/shared/SignInSSO';\nimport Link from 'components/shared/Link';\nimport Menu from 'components/shared/Menu/';\n\nimport type { Session } from 'domains/session';\n\nimport { MYBAYPHOTO_BASE_URL } from 'utils/globals';\n\ntype AccountMenuProps = {\n session: Partial<Session>;\n};\n\nfunction AccountMenu({ session }: AccountMenuProps) {\n function isLoggedIn(session: Partial<Session>): session is Session {\n return !!session.customer_num;\n }\n\n const menuItems = [\n <Link role=\"menuitem\" type=\"no-style\" id=\"my_account\" href={MYBAYPHOTO_BASE_URL}>\n <FontAwesomeIcon className=\"signin-item-icon\" icon=\"cog\" /> My Account\n </Link>,\n <Link role=\"menuitem\" type=\"no-style\" id=\"projects_link\" href=\"/projects\">\n <FontAwesomeIcon className=\"signin-item-icon\" icon=\"folder\" /> My Projects\n </Link>,\n <Link role=\"menuitem\" type=\"no-style\" id=\"logout\" href=\"/users/end_session\">\n <FontAwesomeIcon className=\"signin-item-icon\" icon=\"sign-out-alt\" /> Log out\n </Link>,\n ];\n\n const menuItemsNotLoggedIn = [\n <span className=\"sign-in-input\">\n <FontAwesomeIcon icon=\"sign-out-alt\" className=\"signin-item-icon\" />\n <SignInSSO text=\"Sign In\" />\n </span>,\n <Link\n role=\"menuitem\"\n type=\"no-style\"\n id=\"get_an_account_link\"\n href=\"https://my.bayphoto.com/users/sign_up\"\n >\n <FontAwesomeIcon className=\"signin-item-icon\" icon=\"user-plus\" /> Get an Account\n </Link>,\n ];\n\n const mobileCustomerName = (\n <div className=\"mobile-customer-name\">\n <div className=\"signed_in_as\">Signed in as</div>\n <span>{session && session.customer_name}</span>\n </div>\n );\n\n return (\n <div className=\"signin_container\">\n {isLoggedIn(session) ? (\n <React.Fragment>\n <Menu\n appearance=\"light\"\n className=\"nav_link mobile-signin-menu\"\n menuItems={[mobileCustomerName, ...menuItems]}\n triggerId=\"account-menu-trigger-mobile\"\n triggerText=\"Open Account Menu\"\n triggerIcon=\"user-circle\"\n iconOnlyTrigger\n />\n <Menu\n className=\"nav_link signin-menu\"\n menuItems={menuItems}\n appearance=\"light\"\n triggerId=\"account-menu-trigger\"\n triggerText={session.customer_name}\n position=\"right\"\n />\n </React.Fragment>\n ) : (\n <React.Fragment>\n <Menu\n appearance=\"light\"\n className=\"nav_link mobile-signin-menu\"\n menuItems={menuItemsNotLoggedIn}\n triggerId=\"account-menu-trigger-mobile\"\n triggerText=\"My Account\"\n triggerIcon=\"user-circle\"\n iconOnlyTrigger\n />\n <Menu\n className=\"nav_link signin-menu\"\n menuItems={menuItemsNotLoggedIn}\n appearance=\"light\"\n triggerId=\"account-menu-trigger\"\n triggerText=\"My Account\"\n position=\"right\"\n />\n </React.Fragment>\n )}\n </div>\n );\n}\n\nexport default AccountMenu;\n", "import SignInSSO from './SignInSSO';\n\nexport default SignInSSO;\n", "import React from 'react';\n\nimport { MYBAYPHOTO_OAUTH_CLIENT_ID, MYBAYPHOTO_OAUTH_CLIENT_SECRET } from 'utils/globals';\n\nconst csrfField = document.querySelector('meta[name=\"csrf-token\"]');\nconst csrfToken = csrfField?.getAttribute('content') || '';\n\ntype SignInProps = {\n text: string;\n className?: string;\n};\n\nfunction SignInSSO({ text, className = '' }: SignInProps) {\n const signInHref = `/users/auth/mybayphoto?redirect_url=${encodeURIComponent(\n window.location.href\n )}`;\n\n return (\n <form method=\"post\" action={signInHref}>\n <input type=\"hidden\" name=\"authenticity_token\" value={csrfToken || ''} />\n <input type=\"hidden\" name=\"client_id\" value={MYBAYPHOTO_OAUTH_CLIENT_ID} />\n <input type=\"hidden\" name=\"client_secret\" value={MYBAYPHOTO_OAUTH_CLIENT_SECRET} />\n <input className={className} type=\"submit\" value={text} />\n </form>\n );\n}\n\nexport default SignInSSO;\n", "import * as React from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Button from 'components/shared/Button';\n\nconst { useEffect } = React;\n\nexport type CartStatusProps = {\n onClick: React.MouseEventHandler;\n cartCount: number;\n showCartNotification?: boolean;\n setShowCartNotification?: (set: boolean) => void;\n confirmationMessage?: string;\n};\n\nfunction CartStatus({\n onClick,\n cartCount,\n showCartNotification = false,\n setShowCartNotification = () => {},\n confirmationMessage = '',\n}: CartStatusProps) {\n const notificationId = 'add_to_cart_notification';\n\n const removeNotification = () => {\n const elem = document.getElementById(notificationId);\n if (elem) {\n elem.classList.add('hide');\n elem.removeEventListener('animationend', removeNotification);\n }\n setShowCartNotification(false);\n };\n\n function animateNotificationIn() {\n const elem = document.getElementById(notificationId);\n if (elem) {\n elem.classList.remove('hide');\n elem.classList.add('slideInDown');\n }\n }\n\n function animateNotificationOut() {\n const elem = document.getElementById(notificationId);\n if (elem) {\n elem.classList.add('fadeOut');\n elem.classList.remove('slideInDown');\n elem.addEventListener('animationend', removeNotification);\n }\n }\n\n useEffect(() => {\n if (showCartNotification) {\n animateNotificationIn();\n // show notification for 4 seconds before fading out.\n // listen for the animation to end and remove the notification\n window.setTimeout(() => {\n animateNotificationOut();\n }, 4000);\n }\n }, [showCartNotification]);\n\n return (\n <Button type=\"cornered\" id=\"cart_status_view\" className=\"cart_status\" onClick={onClick}>\n <FontAwesomeIcon icon=\"shopping-cart\" />\n <span className=\"screen-reader-text\">Your Cart</span>\n <span>{cartCount}</span>\n <div\n id={notificationId}\n className=\"add_to_cart_notification animated hide\"\n data-testid=\"cart-notification\"\n >\n <span>{confirmationMessage}</span>\n <FontAwesomeIcon icon=\"check-circle\" />\n </div>\n </Button>\n );\n}\n\nexport default CartStatus;\n", "import actions from './session.actions';\nimport selectors from './session.selectors';\nimport slice from './session.slice';\n\nexport * from './session.types';\n\nconst allActions = { ...actions, ...slice.actions };\n\nconst module = {\n actions: allActions,\n selectors,\n};\n\nexport { default as slice } from './session.slice';\n\nexport default module;\n", "import { createAPIActions } from 'utils/common';\n\nimport type { Session } from './session.types';\n\nconst getSession = createAPIActions<void, Session>('session', 'getSession');\n\nexport default {\n getSession,\n};\n", "import slice from './session.slice';\nimport { combineReducers, compose } from '@reduxjs/toolkit';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectSession = (state: LocalState) => state;\nconst selectIsLoggedIn = (state: LocalState) => !!state.customer_num;\nconst selectCustomerName = (state: LocalState) => state.customer_name;\n\nexport default {\n session: compose(selectSession, localState),\n name: compose(selectCustomerName, localState),\n isLoggedIn: compose(selectIsLoggedIn, localState),\n};\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport actions from './session.actions';\n\nimport type { Session } from './session.types';\n\nconst initialState: Partial<Session> = {};\n\nconst session = createSlice({\n name: 'session',\n initialState,\n reducers: {\n reset() {\n return initialState;\n },\n },\n extraReducers(builder) {\n builder.addCase(actions.getSession.fulfilled, (state, { payload }) => {\n return payload;\n });\n },\n});\n\nexport default session;\n", "export type Session = {\n customer_email: string;\n customer_num: number;\n customer_name: string;\n cart_products_count: number;\n is_net_wos: boolean;\n};\n", "import selectors from './multiphotos.selectors';\nimport slice from './multiphotos.slice';\n\n// TODO: replace this with epics\nimport * as thunks from './multiphotos.thunks';\n\nconst module = {\n actions: { ...thunks, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './multiphotos.slice';\nexport default module;\n", "import { combineReducers, createSelector, compose } from '@reduxjs/toolkit';\nimport { round } from 'lodash';\n\nimport slice from './multiphotos.slice';\nimport multiphotosAdapter from './multiphotos.adapter';\n\nimport cropsModule from 'domains/crops';\nimport photoModule from 'domains/photos';\nimport products from 'domains/products';\n\nimport activeEditor from 'domains/active_editor';\nimport { selectDefaultPPI } from 'selectors/ppi';\n\nimport { calculateBoundDimension } from 'utils/bounds_util';\nimport { validDimension } from 'utils/type_guards';\nimport { orientationAndRatioPercentage } from 'utils/math_util';\nimport { fitImageToNode } from 'utils/pan_util';\n\nimport type { CartProductPhotoCreateParams } from 'domains/cart_products';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst defaultSelectors = multiphotosAdapter.getSelectors();\n\nconst selectSelectedPhotoIds = createSelector(\n [compose(defaultSelectors.selectIds, localState), cropsModule.selectors.selectAll],\n (multiphotoIds, crops) => {\n if (multiphotoIds.length > 0) {\n return multiphotoIds;\n }\n\n return crops.map((crop) => crop.photoId);\n }\n);\n\ntype CartProductMultiPhotoCreateParams = CartProductPhotoCreateParams & { autoRotate?: boolean };\nconst selectMultiPhotosForCreateCartProduct = createSelector(\n [\n compose(defaultSelectors.selectAll, localState),\n photoModule.selectors.selectEntities,\n products.selectors.selectEntities,\n activeEditor.selectors.canvas,\n selectDefaultPPI,\n ],\n (\n multiphotos,\n photosById,\n productsById,\n activeCanvas,\n ppi\n ): CartProductMultiPhotoCreateParams[] => {\n const withImageDimensions = multiphotos.filter((mp) => mp.photoLoaded);\n\n if (!activeCanvas || !activeCanvas.product || multiphotos.length !== withImageDimensions.length)\n throw new Error('Not Enough Data');\n\n const product = productsById[activeCanvas.product];\n const node = product?.nodes.find((n) => n.node_type === 1);\n if (!product || !node) throw new Error('Product or Node Not Found');\n\n const [, , w, h] = node.bounds\n .split(',')\n .map((b) => calculateBoundDimension(b, 'image', product, activeCanvas) * ppi);\n\n const { orientation: nodeOrientation } = orientationAndRatioPercentage(w, h);\n\n return multiphotos.map((mp) => {\n const photo = photosById[mp.id];\n if (!photo) throw new Error('Photo Not Found');\n\n const imageDimensions = { height: mp.imageHeight, width: mp.imageWidth };\n if (!validDimension(imageDimensions)) throw new Error('Invalid Image Dimension');\n\n const { orientation: imageOrientation } = orientationAndRatioPercentage(\n imageDimensions.width,\n imageDimensions.height\n );\n\n const autoRotate =\n imageOrientation !== 'square' &&\n imageOrientation !== nodeOrientation &&\n product.rotation_allowed &&\n nodeOrientation !== 'square' &&\n !products.utils.isCustomSizeProduct(product);\n\n const nodeDimensions = autoRotate ? { width: h, height: w } : { width: w, height: h };\n\n const { fitCropH, fitCropW } = fitImageToNode(nodeDimensions, imageDimensions);\n\n return {\n autoRotate,\n filename: photo.original_filename,\n url: photo.ink_url,\n external_asset_id: photo.id,\n rotation: 0,\n node_id: node.id,\n crop: {\n x: 50,\n y: 50,\n w: round(fitCropW * 100, 6),\n h: round(fitCropH * 100, 6),\n },\n };\n });\n }\n);\n\nexport default {\n ...multiphotosAdapter.getSelectors(localState),\n selectedPhotoIds: selectSelectedPhotoIds,\n forCreateCartProduct: selectMultiPhotosForCreateCartProduct,\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport multiphotosAdapter from './multiphotos.adapter';\n\nimport photoModule from 'domains/photos';\nimport canvases from 'domains/canvases';\nimport cartProductEditor from 'domains/cart_product_editor';\n\nimport type {\n AddMultiPhotoPayload,\n AddMultiPhotoCropPayload,\n MultiPhotoEntity,\n} from './multiphotos.types';\n\nconst multiphotos = createSlice({\n name: 'multiphotos',\n initialState: multiphotosAdapter.getInitialState(),\n reducers: {\n addMultiPhoto(state, { payload }: PayloadAction<AddMultiPhotoPayload>) {\n return multiphotosAdapter.addOne(state, { ...payload, nodeUid: '1' });\n },\n addMultipleMultiPhotos(state, { payload }: PayloadAction<number[]>) {\n const items: MultiPhotoEntity[] = payload.map((id) => ({\n id,\n photoId: id,\n nodeUid: '1',\n photoLoaded: false,\n }));\n\n return multiphotosAdapter.addMany(state, items);\n },\n addMultiPhotoCrop(state, { payload }: PayloadAction<AddMultiPhotoCropPayload>) {\n const { imageDimensions } = payload;\n return multiphotosAdapter.updateOne(state, {\n id: payload.id,\n changes: {\n imageHeight: imageDimensions.height,\n imageWidth: imageDimensions.width,\n photoLoaded: true,\n },\n });\n },\n deleteMultiPhoto(state, { payload }: PayloadAction<number>) {\n return multiphotosAdapter.removeOne(state, payload);\n },\n resetMultiPhotos() {\n return multiphotosAdapter.getInitialState();\n },\n },\n extraReducers(builder) {\n builder\n .addCase(photoModule.actions.removeManyPhotos.fulfilled, () => {\n return multiphotosAdapter.getInitialState();\n })\n .addCase(photoModule.actions.removePhoto.fulfilled, (state, { payload }) => {\n const update = multiphotosAdapter.removeOne(state, payload.id);\n return update;\n })\n .addCase(cartProductEditor.actions.pending, () => {\n return multiphotosAdapter.getInitialState();\n })\n .addCase(photoModule.actions.setActiveCollection, () => {\n return multiphotosAdapter.getInitialState();\n })\n .addCase(canvases.actions.resetToSingleCanvas, () => {\n return multiphotosAdapter.getInitialState();\n });\n },\n});\n\nexport default multiphotos;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\nimport type { MultiPhotoEntity } from './multiphotos.types';\n\nconst multiphotosAdapter = createEntityAdapter<MultiPhotoEntity>();\n\nexport default multiphotosAdapter;\n", "import { createSelector } from '@reduxjs/toolkit';\nimport canvases from 'domains/canvases';\nimport products from 'domains/products';\nimport dimensions from 'domains/stage_dimensions';\nimport rooms from 'domains/wall_preview_rooms';\nimport { calculateArrangementHeight, calculateArrangementWidth } from 'utils/arrangement_util';\nimport { orientationAndRatioPercentage } from 'utils/math_util';\n\nexport const selectDefaultPPI = createSelector(\n [\n canvases.selectors.selectAll,\n products.selectors.selectEntities,\n dimensions.selectors.screenDimensions,\n dimensions.selectors.wallPreviewDimensions,\n rooms.selectors.whichWallPreview,\n ],\n (allCanvases, productsById, screenDimensions, wallPreviewDimensions, whichWallPreview) => {\n // Find the largest configured canvas\n let largestProduct = { width: 0, height: 0 };\n allCanvases.forEach((canvas) => {\n if (!canvas.product) return;\n\n const product = productsById[canvas.product];\n // Might not have the products yet\n if (!product) return;\n\n let height;\n let width;\n if (products.utils.isCustomSizeProduct(product)) {\n if (!canvas.width || !canvas.height || !product.custom_options) return;\n\n ({ width, height } = products.utils.buildCombinedCustomSize(\n canvas.width,\n canvas.height,\n product.custom_options\n ));\n } else {\n const { rotation } = canvas;\n const printSizeX = parseFloat(product.print_size_x);\n const printSizeY = parseFloat(product.print_size_y);\n height = rotation === 90 ? printSizeX : printSizeY;\n width = rotation === 90 ? printSizeY : printSizeX;\n }\n\n if (width > largestProduct.width) {\n largestProduct = { width, height };\n }\n });\n\n // Make sure we have all the data to make the calculation\n if (largestProduct.width === 0 || !screenDimensions.smallest) return 0;\n\n // Get the wall preview sizing dependencies\n const wallPreviewPx = wallPreviewDimensions ? wallPreviewDimensions.width : 0;\n const wallPreviewIn = whichWallPreview?.wallSize;\n const shouldCalculateWallPreview = wallPreviewPx && wallPreviewIn;\n\n // Determine how many pixels the stage represents\n let width;\n if (shouldCalculateWallPreview) {\n // Multiply the stage width in pixels the ratio of product width in inches by the wall width in inches\n width = wallPreviewPx * (largestProduct.width / wallPreviewIn);\n } else {\n const { ratioPercentage: productRatio, orientation: productOrientation } =\n orientationAndRatioPercentage(largestProduct.width, largestProduct.height);\n\n // This defaults to filling the smallest dimension and maintaining that ppi\n // It could be expanded if we want to do better about having the product fill\n // as much available space as possible\n width =\n productOrientation === 'landscape'\n ? screenDimensions.smallest\n : screenDimensions.smallest * productRatio;\n }\n\n return width / largestProduct.width;\n }\n);\n\nexport const selectZoomedPPI = createSelector(\n [selectDefaultPPI, dimensions.selectors.zoom],\n (defaultPPI, zoom) => {\n return defaultPPI * zoom;\n }\n);\n\nexport const selectArrangementWidth = createSelector(\n [\n canvases.selectors.selectAll,\n canvases.selectors.selectEntities,\n products.selectors.selectEntities,\n selectZoomedPPI,\n ],\n calculateArrangementWidth\n);\n\nexport const selectArrangementHeight = createSelector(\n [\n canvases.selectors.selectAll,\n canvases.selectors.selectEntities,\n products.selectors.selectEntities,\n selectZoomedPPI,\n ],\n calculateArrangementHeight\n);\n", "import slice from './stage_dimensions.slice';\nimport selectors from './stage_dimensions.selectors';\n\nconst module = {\n actions: { ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './stage_dimensions.slice';\n\nexport default module;\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport rooms from 'domains/wall_preview_rooms';\nimport { calculateWallPreviewImageSize } from 'utils/math_util';\n\nimport type { Dimension, ImageNaturalDimension } from 'types/common_types';\n\nexport type ScreenDimension = Dimension & {\n smallest: number;\n};\n\nexport type WallPreviewDimension = ScreenDimension & ImageNaturalDimension;\n\ntype StageDimensionsSliceInitialState = {\n screen: ScreenDimension;\n wallPreview: WallPreviewDimension | null;\n zoom: number;\n};\n\nconst initialState: StageDimensionsSliceInitialState = {\n screen: {\n width: 0,\n height: 0,\n smallest: 0,\n },\n wallPreview: null,\n zoom: 1,\n};\n\nconst stageDimensions = createSlice({\n name: 'stageDimensions',\n initialState,\n reducers: {\n setScreenDimensions(state, { payload }) {\n let { width, height } = payload;\n\n // There are cases where we need to divide by the screen or node dimensions\n // So don't ever let these be 0\n width = width > 0 ? width : 1;\n height = height > 0 ? height : 1;\n\n const update = {\n ...state,\n screen: {\n width,\n height,\n smallest: Math.min(width, height),\n },\n };\n\n // Update the wall preview size if it's on\n if (update.wallPreview) {\n const nextSize = calculateWallPreviewImageSize(update.screen, {\n width: update.wallPreview.naturalWidth,\n height: update.wallPreview.naturalHeight,\n });\n\n update.wallPreview = {\n ...update.wallPreview,\n width: nextSize.width,\n height: nextSize.height,\n smallest: Math.min(nextSize.height, nextSize.width),\n };\n }\n\n return update;\n },\n setStageZoom(state, { payload }: PayloadAction<number>) {\n return {\n ...state,\n zoom: payload,\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(rooms.actions.wallPreviewImageLoad.fulfilled, (state, { payload }) => {\n const { naturalWidth, naturalHeight } = payload;\n const size = calculateWallPreviewImageSize(state.screen, {\n width: naturalWidth,\n height: naturalHeight,\n });\n\n return {\n ...state,\n zoom: 1,\n wallPreview: {\n ...payload,\n ...size,\n smallest: Math.min(size.width, size.height),\n },\n };\n })\n .addCase(rooms.actions.unsetWhichWallPreview, (state) => {\n return {\n ...state,\n wallPreview: null,\n };\n })\n .addCase('canvases/resetToSingleCanvas', (state) => {\n return {\n ...state,\n zoom: 1,\n };\n });\n },\n});\n\nexport default stageDimensions;\n", "import actions from './wall_preview_rooms.actions';\nimport slice from './wall_preview_rooms.slice';\nimport selectors from './wall_preview_rooms.selectors';\nimport { combineReducers } from '@reduxjs/toolkit';\n\nexport * from './wall_preview_rooms.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './wall_preview_rooms.slice';\n\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport { createAPIActions } from 'utils/common';\n\nimport type {\n RawWallPreviewUserRoom,\n WallPreviewImageLoadPayload,\n CreateUserRoomPOSTData,\n} from './wall_preview_rooms.types';\n\nconst fetchUserRooms = createAPIActions<void, RawWallPreviewUserRoom[]>(\n 'wallPreview',\n 'fetchUserRooms'\n);\n\nconst wallPreviewImageLoad = {\n fulfilled: createAction<WallPreviewImageLoadPayload>('wallPreview/imageLoad/fulfilled'),\n};\n\nconst createUserRooms = createAPIActions<CreateUserRoomPOSTData[], RawWallPreviewUserRoom[]>(\n 'wallPreview',\n 'createUserRooms'\n);\n\nconst saveUserRooms = createAPIActions<void, RawWallPreviewUserRoom[]>(\n 'wallPreview',\n 'saveUserRooms'\n);\n\nconst deleteUserRoom = createAPIActions<number, number>('wallPreview', 'deleteUserRoom');\n\nexport default {\n fetchUserRooms,\n wallPreviewImageLoad,\n createUserRooms,\n saveUserRooms,\n deleteUserRoom,\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport cartProductEditor from 'domains/cart_product_editor';\n\nimport actions from './wall_preview_rooms.actions';\nimport wallPreviewsAdapter from './wall_preview_rooms.adapter';\nimport utils from './wall_preview_rooms.utils';\n\nimport type { LoadingStatus } from 'types/common_types';\n\nimport type {\n EditUserRoomDraft,\n RawWallPreviewSampleRoom,\n WallPreviewActiveRoom,\n WallPreviewRoom,\n WallPreviewSampleRoom,\n WallPreviewUserRoom,\n} from './wall_preview_rooms.types';\n\ntype WallPreviewsInitialState = {\n whichWallPreview: WallPreviewActiveRoom | null;\n editRoomDrafts: Record<string, Partial<EditUserRoomDraft>>;\n status: LoadingStatus;\n};\n\nconst initialState: WallPreviewsInitialState = {\n whichWallPreview: null,\n editRoomDrafts: {},\n status: 'idle',\n};\n\nconst loadedState = wallPreviewsAdapter.addMany(\n wallPreviewsAdapter.getInitialState(initialState),\n utils.sampleRooms.map(\n (r: RawWallPreviewSampleRoom) => utils.normalizeRoomData(r) as WallPreviewSampleRoom\n )\n);\n\nconst wallPreview = createSlice({\n name: 'wallPreview',\n initialState: loadedState,\n reducers: {\n setWhichWallPreview(state, { payload }: PayloadAction<WallPreviewRoom>) {\n return {\n ...state,\n whichWallPreview: payload,\n };\n },\n unsetWhichWallPreview(state) {\n return {\n ...state,\n whichWallPreview: null,\n };\n },\n createRoomEditDraft(state, { payload }: PayloadAction<number>) {\n return {\n ...state,\n editRoomDrafts: {\n [payload]: {},\n },\n };\n },\n updateRoomEditDraft(\n state,\n { payload }: PayloadAction<{ id: number; update: EditUserRoomDraft }>\n ) {\n return {\n ...state,\n editRoomDrafts: {\n ...state.editRoomDrafts,\n [payload.id]: payload.update,\n },\n };\n },\n resetEditDrafts(state) {\n return {\n ...state,\n editRoomDrafts: {},\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.wallPreviewImageLoad.fulfilled, (state, { payload }) => {\n if (!state.whichWallPreview) return state;\n\n const { blobSrc } = payload;\n return {\n ...state,\n whichWallPreview: { ...state.whichWallPreview, blobSrc },\n };\n })\n .addCase(actions.fetchUserRooms.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.fetchUserRooms.fulfilled, (state, { payload }) => {\n const normalized = payload.map(utils.normalizeRoomData) as WallPreviewUserRoom[];\n const update = wallPreviewsAdapter.addMany(state, normalized);\n update.status = 'idle';\n return update;\n })\n .addCase(actions.fetchUserRooms.rejected, (state) => {\n // Handle an error, send more details to sentry, etc\n return { ...state, status: 'error' };\n })\n .addCase(actions.createUserRooms.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.createUserRooms.fulfilled, (state, { payload }) => {\n const normalized = payload.map(utils.normalizeRoomData) as WallPreviewUserRoom[];\n const update = wallPreviewsAdapter.addMany(state, normalized);\n const drafts = normalized.reduce(\n (acc: Record<string, Partial<EditUserRoomDraft>>, room) => {\n acc[room.id] = {};\n return acc;\n },\n {}\n );\n\n update.editRoomDrafts = drafts;\n update.status = 'idle';\n return update;\n })\n .addCase(actions.createUserRooms.rejected, (state) => {\n // Handle an error, send more details to sentry, etc\n return { ...state, status: 'error' };\n })\n .addCase(actions.saveUserRooms.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.saveUserRooms.fulfilled, (state, { payload }) => {\n const normalized = payload.map(utils.normalizeRoomData) as WallPreviewUserRoom[];\n const updates = normalized.map((room) => ({ id: room.id, changes: room }));\n const update = wallPreviewsAdapter.updateMany(state, updates);\n\n update.editRoomDrafts = {};\n update.status = 'idle';\n return update;\n })\n .addCase(actions.saveUserRooms.rejected, (state) => {\n // Handle an error, send more details to sentry, etc\n return { ...state, status: 'error' };\n })\n .addCase(actions.deleteUserRoom.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.deleteUserRoom.fulfilled, (state, { payload }) => {\n return wallPreviewsAdapter.removeOne(state, payload);\n })\n .addCase(actions.deleteUserRoom.rejected, (state) => {\n // Handle an error, send more details to sentry, etc\n return { ...state, status: 'error' };\n })\n .addCase(cartProductEditor.actions.pending, (state) => {\n return { ...state, whichWallPreview: null };\n });\n },\n});\n\nexport default wallPreview;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { WallPreviewSampleRoom, WallPreviewUserRoom } from './wall_preview_rooms.types';\n\nconst wallPreviewsAdapter = createEntityAdapter<WallPreviewUserRoom | WallPreviewSampleRoom>({\n // Sort user rooms ahead of sample rooms\n // Sort user rooms by updated_at\n // Sort sample rooms by the order they appear in the static array\n sortComparer(a, b) {\n const bothSample = a.type === 'sample' && b.type === 'sample';\n const bothUser = a.type === 'user' && b.type === 'user';\n\n if (bothUser) {\n const dateA = new Date(a.updated_at);\n const dateB = new Date(b.updated_at);\n return dateA > dateB ? -1 : 1;\n }\n\n if (bothSample) {\n const posA = a.id.split('sample')[1];\n const posB = b.id.split('sample')[1];\n return parseInt(posA) - parseInt(posB);\n }\n\n return a.type === 'user' ? -1 : 1;\n },\n});\n\nexport default wallPreviewsAdapter;\n", "import { inchesToFeetInches } from 'utils/math_util';\n\nimport type {\n RawWallPreviewSampleRoom,\n RawWallPreviewUserRoom,\n WallPreviewRoom,\n} from './wall_preview_rooms.types';\n\nfunction normalizeRoomData(\n room: RawWallPreviewSampleRoom | RawWallPreviewUserRoom\n): WallPreviewRoom {\n const normalized: Partial<WallPreviewRoom> = { ...room };\n const previewImagePath = '/backgrounds/previews/';\n const imagePath = '/backgrounds/';\n\n if (room.type !== 'sample') {\n normalized.type = 'user';\n normalized.fullSrc = room.url;\n normalized.previewSrc = room.url;\n normalized.wallSize = room.wall_size;\n normalized.extraSpace = 0;\n } else {\n normalized.fullSrc = imagePath + room.filename;\n normalized.previewSrc = previewImagePath + room.filename;\n }\n\n const formattedSize = inchesToFeetInches(normalized.wallSize as number);\n normalized.displaySize = `${formattedSize[0]}ft ${formattedSize[1]}in`;\n\n return normalized as WallPreviewRoom;\n}\n\nexport const sampleRooms: RawWallPreviewSampleRoom[] = [\n {\n id: 'sample01',\n type: 'sample',\n filename: 'bedroom.jpg',\n description: 'Bedroom',\n wallSize: 144.0,\n extraSpace: 0.0,\n },\n {\n id: 'sample02',\n type: 'sample',\n filename: 'family_room.jpg',\n description: 'Family Room',\n wallSize: 96.0,\n extraSpace: 17.0,\n },\n {\n id: 'sample03',\n type: 'sample',\n filename: 'gallery.jpg',\n description: 'Gallery',\n wallSize: 144.0,\n extraSpace: 42.0,\n },\n {\n id: 'sample04',\n type: 'sample',\n filename: 'holiday.jpg',\n description: 'Holiday',\n wallSize: 120.0,\n extraSpace: 12.0,\n },\n {\n id: 'sample05',\n type: 'sample',\n filename: 'kids_room.jpg',\n description: 'Kids Room',\n wallSize: 144.0,\n extraSpace: 0.0,\n },\n {\n id: 'sample06',\n type: 'sample',\n filename: 'living_room.jpg',\n description: 'Living Room 1',\n wallSize: 120.0,\n extraSpace: 0.0,\n },\n {\n id: 'sample07',\n type: 'sample',\n filename: 'living_room_02.jpg',\n description: 'Living Room 2',\n wallSize: 144.0,\n extraSpace: 0.0,\n },\n {\n id: 'sample09',\n type: 'sample',\n filename: 'seating_area.jpg',\n description: 'Seating Area 1',\n wallSize: 120.0,\n extraSpace: 0.0,\n },\n {\n id: 'sample10',\n type: 'sample',\n filename: 'seating_area_02.jpg',\n description: 'Seating Area 2',\n wallSize: 144.0,\n extraSpace: 0.0,\n },\n];\n\nexport default {\n normalizeRoomData,\n sampleRooms,\n};\n", "import { createSelector, compose, combineReducers } from '@reduxjs/toolkit';\n\nimport wallPreviewsAdapter from './wall_preview_rooms.adapter';\nimport slice from './wall_preview_rooms.slice';\n\nimport { notNull, roomIsUserRoom } from 'utils/type_guards';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst defaultSelectors = wallPreviewsAdapter.getSelectors();\n\nexport const selectWhichWallPreview = (state: LocalState) => state.whichWallPreview;\nexport const selectEditRoomDrafts = (state: LocalState) => state.editRoomDrafts;\nexport const selectEditRoomDraftById = (state: LocalState, id: number) => state.editRoomDrafts[id];\n\nexport const selectUserRooms = createSelector(\n [compose(defaultSelectors.selectAll, localState)],\n (rooms) => rooms.filter((room) => room.type === 'user')\n);\n\nexport const selectDraftRooms = createSelector(\n [compose(selectEditRoomDrafts, localState), compose(defaultSelectors.selectEntities, localState)],\n (drafts, roomsById) => {\n const draftIds = Object.keys(drafts);\n return draftIds\n .map((id) => roomsById[id])\n .filter(notNull)\n .filter(roomIsUserRoom);\n }\n);\n\nexport default {\n ...wallPreviewsAdapter.getSelectors(localState),\n whichWallPreview: compose(selectWhichWallPreview, localState),\n editRoomDrafts: compose(selectEditRoomDrafts, localState),\n editRoomDraftById: (state: GlobalState, id: number) =>\n selectEditRoomDraftById(localState(state), id),\n // Following are already globalized\n draftRooms: selectDraftRooms,\n userRooms: selectUserRooms,\n};\n", "import { ImageNaturalDimension } from 'types/common_types';\n\nexport type BaseWallPreviewRoom = {\n id: string | number;\n type: 'sample' | 'user';\n description: string;\n};\n\nexport type RawWallPreviewSampleRoom = BaseWallPreviewRoom & {\n id: string;\n type: 'sample';\n filename: string;\n wallSize: number;\n extraSpace: number;\n};\n\nexport type RawWallPreviewUserRoom = BaseWallPreviewRoom & {\n id: number;\n type: 'user';\n customer_id: string;\n updated_at: string;\n created_at: string;\n wall_size: number;\n url: string;\n};\n\ntype FormattedWallPreviewRoom = {\n previewSrc: string;\n fullSrc: string;\n displaySize: string;\n wallSize: number;\n extraSpace: number;\n};\n\nexport type WallPreviewRoom = BaseWallPreviewRoom & FormattedWallPreviewRoom;\nexport type WallPreviewSampleRoom = RawWallPreviewSampleRoom & FormattedWallPreviewRoom;\nexport type WallPreviewUserRoom = RawWallPreviewUserRoom & FormattedWallPreviewRoom;\nexport type WallPreviewActiveRoom = WallPreviewRoom & { blobSrc?: string };\n\nexport type WallPreviewImageLoadPayload = ImageNaturalDimension & { blobSrc: string };\n\nexport type CreateUserRoomPOSTData = {\n url: string;\n filename: string;\n wall_size: number;\n};\n\nexport type SaveUserRoomPUTData = {\n id: number;\n description: string;\n wall_size?: number;\n};\n\nexport type EditUserRoomDraft = {\n id: number;\n description: string;\n wallSize: number;\n shouldUpdateWidth: boolean;\n lengthInput?: number;\n x1?: number;\n y1?: number;\n x2?: number;\n y2?: number;\n};\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './stage_dimensions.slice';\n\nimport rooms, { slice as wallPreviewRooms } from 'domains/wall_preview_rooms';\n\nimport type { WallPreviewDimension } from './stage_dimensions.slice';\n\n/**\n * Represents the slice as it exists in the final store's reducer\n *\n * Since we have dependencies on other state trees, we include those\n * in the GlobalState type\n */\nconst combined = combineReducers({\n [slice.name]: slice.reducer,\n [wallPreviewRooms.name]: wallPreviewRooms.reducer,\n});\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectScreenDimensions = (state: LocalState) => state.screen;\nconst selectWallPreviewDimensions = (state: LocalState) => state.wallPreview;\nconst selectWallPreviewBounds = (state: LocalState) => {\n const { screen } = state;\n const wallPreview = state.wallPreview as WallPreviewDimension;\n\n return {\n leftLimit: screen.width / 2 - wallPreview.width / 2,\n rightLimit: screen.width / 2 + wallPreview.width / 2,\n topLimit: screen.height / 2 - wallPreview.height / 2,\n bottomLimit: screen.height / 2 + wallPreview.height / 2,\n };\n};\nconst selectStageZoom = (state: LocalState) => state.zoom;\n\nconst selectWallPreviewActive = (state: GlobalState) => {\n const localized = localState(state);\n const hasRoomSrc = !!rooms.selectors.whichWallPreview(state)?.fullSrc;\n const hasWallPreviewSize = !!localized.wallPreview && !!localized.wallPreview.naturalWidth;\n return hasRoomSrc && hasWallPreviewSize;\n};\n\nexport default {\n screenDimensions: compose(selectScreenDimensions, localState),\n wallPreviewDimensions: compose(selectWallPreviewDimensions, localState),\n wallPreviewBounds: compose(selectWallPreviewBounds, localState),\n zoom: compose(selectStageZoom, localState),\n // Already globalized\n wallPreviewActive: selectWallPreviewActive,\n};\n", "import { uniq } from 'lodash';\n\nimport cropsModule from 'domains/crops';\nimport canvases from 'domains/canvases';\nimport ui from 'domains/ui';\nimport photoModule from 'domains/photos';\n\nimport slice from './multiphotos.slice';\n\nimport { loadBlobAsImage } from 'utils/image_load';\n\nimport type { AppThunk } from 'store/wos_store';\n\nexport function moveCropsToMultiPhotos(photoIds: number[]): AppThunk {\n return function moveToMultiPhotosThunk(dispatch, getState) {\n const state = getState();\n const crops = cropsModule.selectors.selectAll(state);\n const cropPhotoIds = crops.map((crop) => crop.photoId);\n\n const ids = uniq([...cropPhotoIds, ...photoIds]);\n dispatch(slice.actions.addMultipleMultiPhotos(ids));\n\n ids.forEach((id) => {\n dispatch(createMultiPhotoCrop(id));\n });\n\n dispatch(cropsModule.actions.resetCrops());\n dispatch(canvases.actions.updateCanvas({ rotation: 0, userRotated: false }));\n };\n}\n\nexport function createManyMultiPhotos(photoIds: number[]): AppThunk {\n return function createManyThunk(dispatch) {\n dispatch(slice.actions.addMultipleMultiPhotos(photoIds));\n\n photoIds.forEach((photoId) => {\n dispatch(createMultiPhotoCrop(photoId));\n });\n };\n}\n\nexport function createMultiPhotoCrop(photoId: number): AppThunk {\n return async function createMultiPhotoThunk(dispatch, getState) {\n const state = getState();\n const photo = photoModule.selectors.selectById(state, photoId);\n\n if (!photo) return;\n\n dispatch(\n slice.actions.addMultiPhoto({\n id: photoId,\n photoId,\n photoLoaded: false,\n })\n );\n\n try {\n const image = await loadBlobAsImage(photo.file_path_1024);\n const { naturalWidth, naturalHeight } = image;\n\n const imageDimensions = { width: naturalWidth, height: naturalHeight };\n\n const cropData = {\n id: photoId,\n imageDimensions,\n };\n\n dispatch(slice.actions.addMultiPhotoCrop(cropData));\n URL.revokeObjectURL(image.src);\n } catch (error) {\n dispatch(\n ui.actions.setSiteMessage({\n enabled: true,\n messageType: 'error',\n message: 'Failed to load image. Remove images and try again.',\n })\n );\n dispatch(slice.actions.deleteMultiPhoto(photoId));\n }\n };\n}\n", "import PriceTool from './PriceTool';\n\nexport default PriceTool;\n", "import React, { useEffect, useState, useMemo } from 'react';\n\nimport { formatMoney } from 'accounting';\nimport sanitize from 'utils/sanitize';\nimport { buildConfiguredURL } from 'utils/routing';\n\nimport { ROUTE_MAP } from 'utils/globals';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport Button from 'components/shared/Button';\nimport Icon from 'components/shared/Icon';\nimport Spinner from 'components/shared/Spinner';\n\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\nimport catalogModule from 'domains/catalogs';\nimport productsModule from 'domains/products';\nimport navigation from 'domains/navigation';\n\nimport {\n selectCatalogsLoaded,\n selectCatalogsLoading,\n selectCustomPriceLoading,\n selectOptionsLoaded,\n selectOptionsLoading,\n selectSubcatalogsLoaded,\n selectSubcatalogsLoading,\n} from 'selectors/loading_states';\nimport { selectPriceTotal, selectProductPrice } from 'selectors/prices';\n\nimport PriceToolCustomSizePickerContainer from './PriceToolCustomSizePickerContainer';\nimport KeepBrowsingLink from './KeepBrowsingLink';\nimport PriceToolOptionSelect from './PriceToolOptionSelect';\n\nimport type { ProductTemplateAPIData } from 'types/catalog_types';\nimport type { Dimension } from 'types/common_types';\n\nexport const DEFAULT_REFERRER = 'https://bayphoto.com/products';\n\nfunction PriceTool() {\n const dispatch = useAppDispatch();\n const catalogs = useAppSelector(catalogModule.selectors.selectAll);\n const catalogsLoaded = useAppSelector(selectCatalogsLoaded);\n const catalogsLoading = useAppSelector(selectCatalogsLoading);\n const subcatalogs = useAppSelector(activeEditor.selectors.subcatalogs);\n const subcatalogsLoaded = useAppSelector(selectSubcatalogsLoaded);\n const subcatalogsLoading = useAppSelector(selectSubcatalogsLoading);\n const activeCatalog = useAppSelector(activeEditor.selectors.catalog);\n const activeCanvas = useAppSelector(activeEditor.selectors.canvas);\n const activeProduct = useAppSelector(activeEditor.selectors.product);\n const activeCanvasCustomSizes = useAppSelector(activeEditor.selectors.customSize);\n const subcatalogId = useAppSelector(activeEditor.selectors.subcatalogId);\n const products = useAppSelector(activeEditor.selectors.products);\n const optionGroups = useAppSelector(activeEditor.selectors.optionGroups);\n const optionsLoading = useAppSelector(selectOptionsLoading);\n const optionsLoaded = useAppSelector(selectOptionsLoaded);\n const productPrice = useAppSelector(selectProductPrice);\n const total = useAppSelector(selectPriceTotal);\n const customPriceLoading = useAppSelector(selectCustomPriceLoading);\n const canvasConfigPath = useAppSelector(navigation.selectors.canvasConfigPath);\n const canvasOptionsParam = useAppSelector(navigation.selectors.optionsQueryParam);\n const customSizeParam = useAppSelector(navigation.selectors.customSizeQueryParam);\n\n const [referrer, setReferrer] = useState(DEFAULT_REFERRER);\n const [copyNote, setCopyNote] = useState(false);\n\n // We need to keep track of the fields for height/width locally so the redux config does not have custom\n // size data for a standard product\n const [priceToolDimension, setPriceToolDimension] = useState<Dimension>({ height: 0, width: 0 });\n const [initialized, setInitialized] = useState(false);\n\n const customProduct = useMemo(() => {\n return products.find((p) => productsModule.utils.isCustomSizeProduct(p));\n }, [products]);\n\n const showPriceSpinner = useMemo(() => {\n return catalogsLoading || subcatalogsLoading || optionsLoading;\n }, [catalogsLoading, subcatalogsLoading, optionsLoading]);\n\n const showPrice = useMemo(() => {\n return catalogsLoaded && subcatalogsLoaded && optionsLoaded;\n }, [catalogsLoaded, optionsLoaded, subcatalogsLoaded]);\n\n const handlePriceToolSubmit = (e: React.MouseEvent<HTMLButtonElement> | React.FormEvent) => {\n e.preventDefault();\n dispatch(navigation.actions.navigateTo('editor'));\n };\n\n function copyLink() {\n const url = buildConfiguredURL(\n new URL(window.location.href),\n ROUTE_MAP.editor,\n canvasConfigPath,\n canvasOptionsParam,\n customSizeParam\n );\n const params = new URLSearchParams(url.search);\n params.set('src', 'pricetool');\n url.search = params.toString();\n\n window.navigator.clipboard.writeText(url.toString()).then(() => {\n setCopyNote(true);\n setTimeout(() => {\n setCopyNote(false);\n }, 2000);\n });\n }\n\n // run once on mount\n useEffect(() => {\n // referrer?\n const params = new URL(document.location.href).searchParams;\n const rParam = params.get('r');\n if (rParam) {\n setReferrer(rParam);\n }\n }, []);\n\n useEffect(() => {\n if (catalogs && catalogs.length && !activeCatalog) {\n dispatch(canvases.actions.changeActiveCanvasConfig.catalog(catalogs[0].id));\n }\n }, [catalogs, activeCatalog, dispatch]);\n\n // Initialize the local size state if it isn't already configured\n useEffect(() => {\n if (!initialized && activeProduct) {\n const hasExistingSize = activeCanvasCustomSizes.height && activeCanvasCustomSizes.width;\n const realDim = productsModule.utils.getProductRealDimension(activeProduct);\n\n const initialHeight = hasExistingSize ? activeCanvasCustomSizes.height : realDim.height;\n const initialWidth = hasExistingSize ? activeCanvasCustomSizes.width : realDim.width;\n\n setPriceToolDimension({ height: initialHeight, width: initialWidth });\n setInitialized(true);\n }\n }, [initialized, activeProduct, activeCanvasCustomSizes, priceToolDimension]);\n\n function handleSelectCatalog(value: string) {\n dispatch(canvases.actions.changeActiveCanvasConfig.catalog(parseInt(value)));\n }\n\n function handleSelectSubcatalog(value: string) {\n dispatch(canvases.actions.changeActiveCanvasConfig.subcatalog(parseInt(value)));\n }\n\n function handleSelectProduct(value: string) {\n dispatch(canvases.actions.changeActiveCanvasConfig.product(parseInt(value)));\n }\n\n function productText(product: ProductTemplateAPIData, products: ProductTemplateAPIData[]) {\n if (products.filter((p) => p.id !== product.id).find((p) => p.name === product.name)) {\n return `${product.name} - (${product.filter_group})`;\n }\n return product.name;\n }\n\n return (\n <div className=\"PriceToolWrapper\">\n {referrer !== DEFAULT_REFERRER && (\n <a href={`${referrer}?src=pricetool`} className=\"PriceToolWrapper__close-button\">\n <Icon icon=\"close\" size=\"2x\" />\n </a>\n )}\n <div className=\"PriceTool\">\n <form className=\"PriceTool__form form\" onSubmit={handlePriceToolSubmit}>\n <div className=\"PriceTool__field-set\">\n <h2 className=\"PriceTool__legend\">\n <span>Product</span>\n </h2>\n\n <div className=\"PriceTool__input\">\n <label htmlFor=\"catalog-select\">Catalog</label>\n <select\n id=\"catalog-select\"\n value={activeCanvas && activeCanvas.catalog ? activeCanvas.catalog : ''}\n disabled={!catalogsLoaded}\n onChange={(e) => handleSelectCatalog(e.target.value)}\n >\n {(catalogs || []).map((catalog) => {\n return (\n <option key={catalog.id} value={catalog.id}>\n {catalog.name}\n </option>\n );\n })}\n </select>\n </div>\n\n <div className=\"PriceTool__input\">\n <label htmlFor=\"subcatalog-select\">Product</label>\n <select\n id=\"subcatalog-select\"\n value={subcatalogId === null ? '' : subcatalogId}\n disabled={!catalogsLoaded || !subcatalogsLoaded}\n onChange={(e) => handleSelectSubcatalog(e.target.value)}\n >\n {subcatalogs.map((subcatalog) => {\n return (\n <option\n key={subcatalog.id}\n value={subcatalog.id}\n disabled={subcatalog.read_only}\n >\n {sanitize(subcatalog.name)}\n </option>\n );\n })}\n </select>\n </div>\n\n <label htmlFor=\"product-select\">\n <span>Size</span>\n <span\n className=\"PriceTool__input__price\"\n style={customPriceLoading ? { opacity: '0.25' } : {}}\n >\n {productPrice > 0 && formatMoney(productPrice)}\n </span>\n </label>\n <div className=\"PriceTool__input-row\">\n {customProduct && (\n <PriceToolCustomSizePickerContainer\n customProduct={customProduct}\n priceToolDimension={priceToolDimension}\n setPriceToolDimension={setPriceToolDimension}\n />\n )}\n {!customProduct && (\n <div className=\"PriceTool__input\">\n <select\n id=\"product-select\"\n value={activeProduct?.id === null ? '' : activeProduct?.id}\n disabled={!catalogsLoaded || !subcatalogsLoaded}\n onChange={(e) => handleSelectProduct(e.target.value)}\n >\n {products.map((product) => {\n return (\n <option key={product.id} value={product.id} disabled={product.read_only}>\n {sanitize(productText(product, products))}\n {product.id !== activeProduct?.id &&\n parseFloat(product.price) > 0 &&\n ` - ${formatMoney(product.price)}`}\n </option>\n );\n })}\n </select>\n </div>\n )}\n </div>\n </div>\n\n <div className=\"PriceTool__field-set\">\n <h2 className=\"PriceTool__legend\">\n <span>Options</span>\n </h2>\n {optionGroups.map((optionGroup) => (\n <PriceToolOptionSelect key={optionGroup.id} optionGroup={optionGroup} />\n ))}\n </div>\n\n <input type=\"submit\" value=\"Submit\" style={{ display: 'none' }} />\n </form>\n <div className=\"PriceTool__results\">\n <div className=\"PriceTool__results__price-wrap\">\n {showPriceSpinner && (\n <Spinner\n style={{\n height: '100%',\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n size=\"44\"\n color=\"#00a7e1\"\n strokeWidth=\"1\"\n />\n )}\n {showPrice && (\n <div\n className=\"PriceTool__results__price\"\n style={customPriceLoading ? { opacity: '0.125' } : {}}\n data-testid=\"pricetool-price\"\n >\n <span>$</span>\n {formatMoney(total, { symbol: '' })}\n </div>\n )}\n </div>\n <div className=\"PriceTool__actions\">\n <Button\n className=\"OrderNowLink yield\"\n disabled={!catalogsLoaded || !subcatalogsLoaded || !optionsLoaded}\n onClick={handlePriceToolSubmit}\n >\n Order Online Now\n </Button>\n <Button type=\"link\" className=\"copy-link\" onClick={copyLink}>\n {copyNote && 'Copied!'}\n {!copyNote && 'Copy Link'}\n </Button>\n <div className=\"PriceTool__sub-actions\">\n Also available in{' '}\n <a href=\"https://bayphoto.com/order/bay-roes?src=pricetool\" className=\"link regular\">\n BayRoes\n </a>{' '}\n or{' '}\n <KeepBrowsingLink\n className=\"link regular\"\n title=\"keep browsing\"\n linkTo={`${referrer}?src=pricetool`}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport default PriceTool;\n", "const sanitize = (str: string) => {\n return str.replace(/(<([^>]+)>)/gi, '').replace(/\\s\\s+/g, ' ');\n};\n\nexport default sanitize;\n", "import Spinner from './Spinner';\n\nexport default Spinner;\n", "import React from 'react';\n\ntype SpinnerProps = {\n size?: string;\n strokeWidth?: string;\n color?: string;\n duration?: string;\n repeatCount?: string;\n style?: React.CSSProperties | null;\n};\n\nfunction Spinner({\n size = '26',\n strokeWidth = '3',\n color = '#fff',\n duration = '0.4',\n repeatCount = 'indefinite',\n style = null,\n}: SpinnerProps) {\n return (\n <div\n className=\"spinner\"\n data-testid=\"spinner\"\n style={style || { display: 'inline-block', width: `${size}px`, height: `${size}px` }}\n >\n <svg\n className=\"Spinner\"\n width={size}\n height={size}\n viewBox=\"-1 -1 40 40\"\n stroke={color}\n style={{ padding: strokeWidth }}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(1 1)\" strokeWidth={strokeWidth}>\n <circle strokeOpacity=\".25\" cx=\"18\" cy=\"18\" r=\"18\" />\n <path d=\"M36 18c0-9.94-8.06-18-18-18\" transform=\"rotate(211.717 18 18)\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur={`${duration}s`}\n repeatCount={repeatCount}\n />\n </path>\n </g>\n </g>\n </svg>\n </div>\n );\n}\n\nexport default Spinner;\n", "import type { RootState } from 'store/wos_store';\nimport type { LGRootState } from 'store/link_generator_store';\nimport type { CheckoutRootState } from 'store/checkout_store';\n\nexport const selectCartLoading = (state: RootState) => {\n return state.cart.status === 'loading';\n};\n\nexport const selectCartPageLoading = (state: RootState) =>\n state.cart.status === 'loading' && !state.cart.betterCart && !state.cart.cartCheck;\n\nexport const selectCartLoaded = (state: RootState) => {\n return state.cart.status === 'idle' && (!!state.cart.betterCart || state.cart.cartCheck);\n};\n\nexport const selectCartProductsLoading = (state: RootState | CheckoutRootState) => {\n return state.cartProducts.status === 'loading';\n};\n\nexport const selectCatalogsLoading = (state: RootState) => {\n return state.catalogs.status === 'loading';\n};\n\nexport const selectCatalogsLoaded = (state: RootState | LGRootState) => {\n return state.catalogs.status === 'idle' && state.catalogs.ids.length > 0;\n};\n\nexport const selectCatalogsLoadError = (state: RootState) => {\n return state.catalogs.status === 'error';\n};\n\nexport const selectSubcatalogsLoading = (state: RootState) => {\n return state.subcatalogs.status === 'loading';\n};\n\nexport const selectSubcatalogsLoaded = (state: RootState) => {\n return state.subcatalogs.status === 'idle' && state.subcatalogs.ids.length > 0;\n};\n\nexport const selectSubcatalogsLoadError = (state: RootState) => {\n return state.subcatalogs.status === 'error';\n};\n\nexport const selectOptionsLoading = (state: RootState) => {\n return state.optionGroups.status === 'loading';\n};\n\nexport const selectOptionsLoaded = (state: RootState) => {\n return state.optionGroups.status === 'idle' && state.optionGroups.ids.length > 0;\n};\n\nexport const selectOptionsLoadError = (state: RootState) => {\n return state.optionGroups.status === 'error';\n};\n\nexport const selectCustomPriceLoading = (state: RootState) => {\n return state.canvases.status === 'loading';\n};\n\nexport const selectCustomPriceLoaded = (state: RootState) => {\n return (\n state.canvases.status === 'idle' &&\n state.canvases.active &&\n !!state.canvases.entities[state.canvases.active]?.customPrice\n );\n};\n\nexport const selectCustomPriceError = (state: RootState) => {\n return state.canvases.status === 'error';\n};\n\nexport const selectCanvasProductLoading = (state: RootState) => {\n return state.subcatalogs.status === 'loading' || state.optionGroups.status === 'loading';\n};\n\nexport const selectProjectsLoading = (state: RootState) => {\n return state.projects.status === 'loading';\n};\n", "import { createSelector } from '@reduxjs/toolkit';\n\nimport products from 'domains/products';\nimport optionGroups from 'domains/option_groups';\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\n\nimport { byId } from 'utils/common';\n\nimport type { CanvasConfiguration } from 'domains/canvases';\nimport type { OptionGroupAPIData } from 'domains/option_groups';\nimport type { Dictionary } from 'types/common_types';\nimport type { ProductTemplateAPIData } from 'types/catalog_types';\n\nexport function getCanvasProductPrice(\n canvas: CanvasConfiguration,\n productsById: Dictionary<ProductTemplateAPIData>\n) {\n const { product: productId, customPrice } = canvas;\n\n if (!productId) return 0;\n\n const product = productsById[productId];\n const productPrice = product && product.price;\n // Return 0 by default if product data is not available yet\n return parseFloat(customPrice || productPrice || '0');\n}\n\nexport const selectProductPrice = createSelector(\n [activeEditor.selectors.canvas, products.selectors.selectEntities],\n (activeCanvas, productsById) => {\n if (!activeCanvas) return 0;\n\n return getCanvasProductPrice(activeCanvas, productsById);\n }\n);\n\nexport function getCanvasOptionPrices(\n canvas: CanvasConfiguration,\n optionGroupsById: Dictionary<OptionGroupAPIData>\n) {\n const { options, customOptionPrices } = canvas;\n const optionPrices: Record<string, number> = {};\n\n if (!options) return {};\n\n Object.entries(options).forEach(([optionGroupId, optionId]) => {\n const option = optionGroupsById[optionGroupId]?.options.find(byId(optionId));\n\n if (customOptionPrices && customOptionPrices[optionGroupId]) {\n optionPrices[optionGroupId] = parseFloat(customOptionPrices[optionGroupId]);\n } else if (option && !option.hidden) {\n optionPrices[optionGroupId] = parseFloat(option.service.price);\n } else {\n // Return 0 by default, if we don't have the data available yet\n optionPrices[optionGroupId] = 0;\n }\n });\n\n return optionPrices;\n}\n\nexport const selectOptionPrices = createSelector(\n [activeEditor.selectors.canvas, optionGroups.selectors.selectEntities],\n (activeCanvas, optionGroupsById) => {\n if (!activeCanvas) return {};\n return getCanvasOptionPrices(activeCanvas, optionGroupsById);\n }\n);\n\nexport const selectPriceTotal = createSelector(\n [\n canvases.selectors.selectAll,\n optionGroups.selectors.selectEntities,\n products.selectors.selectEntities,\n ],\n (allCanvases, optionGroupsById, productsById) => {\n const productsTotal = allCanvases.reduce((total, canvas) => {\n return total + getCanvasProductPrice(canvas, productsById);\n }, 0);\n\n const optionsTotal = allCanvases.reduce((total, canvas) => {\n const options = Object.values(getCanvasOptionPrices(canvas, optionGroupsById));\n return total + options.reduce((canvasOptionTotal, price) => price + canvasOptionTotal, 0);\n }, 0);\n\n return productsTotal + optionsTotal;\n }\n);\n", "import React, { useMemo } from 'react';\n\nimport CustomSizePicker from 'components/shared/CustomSizePicker';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport {\n selectCatalogsLoaded,\n selectCustomPriceLoading,\n selectOptionsLoaded,\n selectSubcatalogsLoaded,\n} from 'selectors/loading_states';\nimport { selectProductPrice } from 'selectors/prices';\n\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\nimport products from 'domains/products';\nimport ui from 'domains/ui';\n\nimport type { CustomSizePayload } from 'domains/canvases';\nimport type { CustomSizeProductCustomOptions, ProductTemplateAPIData } from 'types/catalog_types';\nimport type { Dimension } from 'types/common_types';\n\ntype PriceToolCustomSizePickerContainerProps = {\n customProduct: ProductTemplateAPIData;\n priceToolDimension: Dimension;\n setPriceToolDimension: (dimension: Dimension) => void;\n};\n\nfunction PriceToolCustomSizePickerContainer(props: PriceToolCustomSizePickerContainerProps) {\n const { customProduct, priceToolDimension, setPriceToolDimension } = props;\n\n const dispatch = useAppDispatch();\n const catalogsLoaded = useAppSelector(selectCatalogsLoaded);\n const subcatalogsLoaded = useAppSelector(selectSubcatalogsLoaded);\n const optionsLoaded = useAppSelector(selectOptionsLoaded);\n const customPriceLoading = useAppSelector(selectCustomPriceLoading);\n const customSizeErrorMessage = useAppSelector(ui.selectors.customSizeErrors);\n const price = useAppSelector(selectProductPrice);\n const allProducts = useAppSelector(activeEditor.selectors.products);\n\n const isLoading = useMemo(() => {\n return !catalogsLoaded || !subcatalogsLoaded || !optionsLoaded;\n }, [catalogsLoaded, subcatalogsLoaded, optionsLoaded]);\n\n function setCustomSize(payload: CustomSizePayload) {\n const update = { ...priceToolDimension, ...payload };\n\n setPriceToolDimension(update);\n\n const standardMatch = products.utils.getProductIdFromDimensions(\n update.width,\n update.height,\n allProducts\n );\n\n if (standardMatch) {\n dispatch(canvases.actions.changeActiveCanvasConfig.product(standardMatch));\n } else {\n dispatch(\n canvases.actions.changeActiveCanvasConfig.priceToolSize({\n product: customProduct.id,\n ...update,\n })\n );\n }\n }\n\n // Price tool needs to use the custom options from whatever the current subcatalog's\n // custom product is\n const priceToolCustomOptions = useMemo(() => {\n return allProducts.find((p) => !!p.custom_options)?.custom_options;\n }, [products]);\n\n if (!priceToolCustomOptions) return null;\n\n return (\n <CustomSizePicker\n customPriceLoading={customPriceLoading}\n isLoading={isLoading}\n setCustomSize={setCustomSize}\n customWidth={priceToolDimension.width}\n customHeight={priceToolDimension.height}\n activeProductCustomOptions={priceToolCustomOptions as CustomSizeProductCustomOptions}\n customPrice={price.toString()}\n showPrice={false}\n errorMessage={customSizeErrorMessage}\n />\n );\n}\n\nexport default PriceToolCustomSizePickerContainer;\n", "import CustomSizePicker from './CustomSizePicker';\n\nexport default CustomSizePicker;\n", "import React, { useState } from 'react';\nimport { formatMoney } from 'accounting';\n\nimport Button from 'components/shared/Button';\nimport Input from 'components/shared/Input';\n\nimport type { Dimension } from 'types/common_types';\nimport type { CustomSizeProductCustomOptions } from 'types/catalog_types';\n\nexport type CustomSizePickerProps = {\n customPriceLoading: boolean;\n isLoading: boolean;\n activeProductCustomOptions: CustomSizeProductCustomOptions;\n setCustomSize: (payload: Partial<Dimension>) => void;\n customHeight: number;\n customWidth: number;\n customPrice?: string;\n showPrice?: boolean;\n errorMessage?: string;\n};\n\nfunction CustomSizePicker({\n customPriceLoading,\n isLoading,\n activeProductCustomOptions,\n setCustomSize,\n customHeight,\n customWidth,\n customPrice = '0',\n showPrice = true,\n errorMessage,\n}: CustomSizePickerProps) {\n const { shortmin, shortmax, longmin, longmax, increment } = activeProductCustomOptions;\n const [lockPerspective, setLockPerspective] = useState(false);\n\n function swapWidthHeight() {\n setCustomSize({\n width: customHeight,\n height: customWidth,\n });\n }\n\n function handleChangeWidth(width: number) {\n if (!lockPerspective) {\n setCustomSize({ width });\n return;\n }\n\n const diff = customWidth - width;\n const height = customHeight - diff;\n\n setCustomSize({ height, width });\n }\n\n function handleChangeHeight(height: number) {\n if (!lockPerspective) {\n setCustomSize({ height });\n return;\n }\n\n const diff = customHeight - height;\n const width = customWidth - diff;\n\n setCustomSize({ height, width });\n }\n\n return (\n <div className=\"custom_size_picker\">\n <div className=\"size-picker-header\">\n <div className=\"stats\">\n <div>\n {shortmin}x{longmin} min\n </div>\n <div>-</div>\n <div>\n {shortmax}x{longmax} max\n </div>\n </div>\n\n {!showPrice && errorMessage && (\n <div className=\"custom-size-error\">\n <span>{errorMessage}</span>\n </div>\n )}\n\n {showPrice && (\n <div className=\"custom-size-picker-price\">\n {customPriceLoading && <span className=\"price\">Calculating...</span>}\n <span className={`price ${customPriceLoading ? 'calculating' : ''}`}>\n {formatMoney(customPrice)}\n </span>\n </div>\n )}\n </div>\n <div className=\"custom_size_picker_inputs\">\n <div className=\"size-picker-input\">\n <Input\n id=\"input-width\"\n label=\"Width\"\n onChange={handleChangeWidth}\n value={customWidth}\n type=\"number\"\n step={increment}\n disabled={isLoading}\n />\n </div>\n <span className=\"buttons\">\n {lockPerspective && (\n <Button\n type=\"icon\"\n icon=\"lock\"\n className=\"lock\"\n appearance=\"light\"\n a11yText=\"Unlock Perspective\"\n onClick={() => setLockPerspective(false)}\n />\n )}\n\n {!lockPerspective && (\n <Button\n type=\"icon\"\n icon=\"unlock\"\n appearance=\"light\"\n a11yText=\"Lock Perspective\"\n onClick={() => setLockPerspective(true)}\n />\n )}\n\n <Button\n type=\"icon\"\n icon=\"exchange-alt\"\n appearance=\"light\"\n a11yText={lockPerspective ? 'Swap not available when locked' : 'Swap width & height'}\n disabled={lockPerspective}\n onClick={swapWidthHeight}\n />\n </span>\n <div className=\"size-picker-input\">\n <Input\n id=\"input-height\"\n label=\"Height\"\n onChange={handleChangeHeight}\n value={customHeight}\n type=\"number\"\n step={increment}\n disabled={isLoading}\n />\n </div>\n </div>\n </div>\n );\n}\n\nexport default CustomSizePicker;\n", "import Input from './Input';\n\nexport default Input;\n", "import React, { useState, useRef, useMemo, useEffect } from 'react';\nimport { partial } from 'lodash';\nimport { useDebounce } from 'utils/hooks';\n\nimport InputWrapper from './InputWrapper';\n\ntype InputFormatter = {\n format: (value: number | string) => number | string;\n reverse: (value: string) => string;\n};\n\nexport type InputInvalidField = {\n id: string;\n label?: string;\n message: string;\n};\n\nexport type InputSelectCommonProps = {\n required?: boolean;\n disabled?: boolean;\n className?: string;\n labelPosition?: 'top' | 'bottom' | 'left' | 'right';\n validator?: (value: InputSelectCommonProps['value']) => void;\n onInvalid?: (id: string, label: string, message: string) => void;\n onValid?: (id: string) => void;\n errorMessageProp?: string;\n debounceTime?: number;\n id: string;\n label: string;\n onChange: (value: InputSelectCommonProps['value']) => void;\n value: string | number;\n};\n\nexport type InputProps = InputSelectCommonProps &\n Omit<React.ComponentPropsWithoutRef<'input'>, 'onChange' | 'onInvalid'> & {\n formatter?: InputFormatter;\n };\n\nfunction Input({\n required = false,\n disabled = false,\n className = '',\n type = 'text',\n labelPosition = 'top',\n onInvalid = () => {},\n onValid = () => {},\n debounceTime = 750,\n errorMessageProp,\n validator,\n formatter,\n label,\n value,\n id,\n onChange,\n ...rest\n}: InputProps) {\n const debouncedValue = useDebounce(value, debounceTime);\n const isFirstRender = useRef(true);\n const [errorMessage, setErrorMessage] = useState('');\n\n const partialOnInvalid = partial(onInvalid, id, label);\n const partialOnValid = partial(onValid, id);\n\n const formattedValue = useMemo(\n () => (formatter ? formatter.format(value) : value),\n [formatter, value]\n );\n\n // Remove formatting before reporting the input's value\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n let val = e.target.value;\n let numVal: number | undefined;\n\n if (formatter) {\n val = formatter.reverse(val);\n }\n\n if (type === 'number') {\n numVal = parseFloat(val);\n }\n\n onChange(numVal ? numVal : val);\n }\n\n // Validate the debounced input value, but not on first render\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n\n if (validator) {\n try {\n validator(debouncedValue);\n setErrorMessage('');\n partialOnValid();\n } catch (e) {\n setErrorMessage(e.message);\n partialOnInvalid(e.message);\n }\n }\n // FIXME: review this behavior\n }, [debouncedValue, validator]);\n\n return (\n <InputWrapper\n errorMessage={errorMessageProp || errorMessage || undefined}\n id={id}\n className={className}\n label={label}\n labelPosition={labelPosition}\n required={required}\n disabled={disabled}\n >\n <input\n id={id}\n type={type}\n value={formattedValue}\n onChange={handleChange}\n disabled={disabled}\n {...rest}\n />\n </InputWrapper>\n );\n}\n\nexport default Input;\n", "import * as React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\ntype InputWrapperProps = {\n required: boolean;\n disabled: boolean;\n className: string;\n labelPosition: 'top' | 'bottom' | 'left' | 'right';\n id: string;\n label: string;\n errorMessage?: string;\n children: React.ReactNode;\n};\n\nfunction InputWrapper({\n id,\n className,\n label,\n labelPosition,\n errorMessage,\n disabled,\n required,\n children,\n}: InputWrapperProps) {\n const hasError = !!errorMessage && errorMessage !== '';\n const alignment = labelPosition === 'top' || labelPosition === 'bottom' ? 'column' : 'row';\n\n return (\n <span className={`input ${alignment} ${hasError ? 'error' : ''} ${className}`}>\n <label htmlFor={id} className={`${labelPosition} ${disabled ? 'disabled' : ''}`}>\n {label} {required && <small>(required)</small>}\n </label>\n <div className=\"input-error-wrapper\">\n {children}\n <span className={`error-message ${labelPosition} ${hasError}`}>\n <FontAwesomeIcon icon=\"exclamation-circle\" />\n <span>{errorMessage}</span>\n <span className=\"spacer\" aria-hidden=\"true\">\n spacer\n </span>\n </span>\n </div>\n </span>\n );\n}\n\nexport default InputWrapper;\n", "import React from 'react';\n\ntype KeepBrowsingLinkProps = {\n title: string;\n linkTo: string;\n className?: string;\n};\n\nfunction KeepBrowsingLink(props: KeepBrowsingLinkProps) {\n const { title, linkTo, className } = props;\n\n return (\n <a\n href={linkTo}\n className={`KeepBrowsingLink ${className && className}`}\n rel=\"noopener noreferrer\"\n >\n {title}\n </a>\n );\n}\n\nexport default KeepBrowsingLink;\n", "import React, { useMemo } from 'react';\nimport { formatMoney } from 'accounting';\nimport sanitize from 'utils/sanitize';\nimport { byId } from 'utils/common';\n\nimport canvases from 'domains/canvases';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport {\n selectCatalogsLoaded,\n selectCustomPriceLoading,\n selectOptionsLoaded,\n selectSubcatalogsLoaded,\n} from 'selectors/loading_states';\nimport activeEditor from 'domains/active_editor';\nimport { selectOptionPrices } from 'selectors/prices';\n\nimport type { OptionAPIData, OptionGroupAPIData } from 'domains/option_groups';\nimport type { OptionalPair } from 'types/common_types';\n\ntype PriceToolOptionSelectProps = {\n optionGroup: OptionGroupAPIData;\n};\n\ntype PriceToolOptionProps = {\n optionGroupId: number;\n option: OptionAPIData;\n};\n\nfunction PriceToolOptionSelect(props: PriceToolOptionSelectProps) {\n const { optionGroup } = props;\n const isRequired = optionGroup.required;\n\n const dispatch = useAppDispatch();\n const catalogsLoaded = useAppSelector(selectCatalogsLoaded);\n const subcatalogsLoaded = useAppSelector(selectSubcatalogsLoaded);\n const optionsLoaded = useAppSelector(selectOptionsLoaded);\n const activeOptionConfig = useAppSelector(activeEditor.selectors.optionConfig);\n const optionPrices = useAppSelector(selectOptionPrices);\n const customPriceLoading = useAppSelector(selectCustomPriceLoading);\n\n function handleChangeOption(value: string) {\n const selectionId = value === '' ? undefined : parseInt(value);\n const optionPair: OptionalPair<number, number> = [optionGroup.id, selectionId];\n const payload = { options: [optionPair] };\n dispatch(canvases.actions.changeActiveCanvasConfig.options(payload));\n }\n\n const selectedOption = useMemo(() => {\n const optionId = activeOptionConfig[optionGroup.id];\n return optionGroup.options.find(byId(optionId));\n }, [activeOptionConfig, optionGroup]);\n\n const optionGroupPrice = useMemo(() => {\n return optionPrices[optionGroup.id] || 0;\n }, [optionPrices, optionGroup.id]);\n\n return (\n <div key={optionGroup.uid} className=\"PriceTool__input\">\n <label htmlFor={`${optionGroup.name}-select`}>\n <span dangerouslySetInnerHTML={{ __html: optionGroup.name }} />\n {optionGroupPrice > 0 && (\n <span\n className=\"PriceTool__input__price\"\n style={customPriceLoading ? { opacity: '0.25' } : {}}\n >\n + {formatMoney(optionGroupPrice)}\n </span>\n )}\n </label>\n <select\n id={`${optionGroup.name}-select`}\n value={selectedOption ? selectedOption.id : 'default'}\n disabled={!catalogsLoaded || !subcatalogsLoaded || !optionsLoaded || customPriceLoading}\n onChange={(e) => handleChangeOption(e.target.value)}\n >\n {!isRequired && <option value=\"\">None</option>}\n {optionGroup.options.map((option) => (\n <PriceToolOption key={option.id} optionGroupId={optionGroup.id} option={option} />\n ))}\n </select>\n </div>\n );\n}\n\nfunction PriceToolOption(props: PriceToolOptionProps) {\n const { optionGroupId, option } = props;\n\n const activeOptionConfig = useAppSelector(activeEditor.selectors.optionConfig);\n const disabledOptions = useAppSelector(activeEditor.selectors.disabledOptions);\n\n if (!option) return null;\n\n const priceDisplay = useMemo(() => {\n const isSelected = activeOptionConfig[optionGroupId] === option.id;\n if (!isSelected && parseFloat(option.service.price) > 0) {\n return formatMoney(option.service.price);\n }\n\n return null;\n }, [activeOptionConfig, optionGroupId, option]);\n\n const isDisabled = useMemo(() => {\n return !!disabledOptions[option.id] || option.read_only;\n }, [disabledOptions, option]);\n\n const disabledBy = useMemo(() => {\n if (disabledOptions[option.id]) {\n return `Not available with ${sanitize(disabledOptions[option.id].by)}`;\n }\n\n return '';\n }, [disabledOptions, option.id]);\n\n return (\n <option\n key={option.id}\n value={option.id || 'default'}\n disabled={isDisabled}\n title={isDisabled ? disabledBy : ''}\n >\n {sanitize(option.name)}\n {priceDisplay && ` +${priceDisplay}`}\n </option>\n );\n}\n\nexport default PriceToolOptionSelect;\n", "import CartPage from './CartPage';\n\nexport default CartPage;\n", "import React, { useState, useEffect, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { hasCart, notNull } from 'utils/type_guards';\nimport { renderModal } from 'utils/modal_util';\n\nimport Alert from 'components/shared/Alert';\nimport Pagination from 'components/shared/Pagination';\nimport CartProductList from 'components/shared/CartProductList';\nimport CartHeader from 'components/features/Cart/CartHeader';\nimport CartSidebar from 'components/features/Cart/CartSidebar';\nimport ProjectControls from 'components/features/Projects/ProjectControls';\nimport Spinner from 'components/shared/Spinner';\nimport Button from 'components/shared/Button';\nimport ImageGallery from 'components/shared/ImageGallery';\nimport ColorCorrectOption from 'components/features/Cart/CartSidebar/ColorCorrectOption';\nimport CheckoutLink from 'components/features/Cart/CheckoutLink';\nimport Modal from 'components/shared/Modal';\nimport CartAddOns from 'components/features/Cart/CartSidebar/CartAddOns';\n\nimport projects from 'domains/projects';\nimport photoModule from 'domains/photos';\nimport cartProductEditor from 'domains/cart_product_editor';\nimport navigation from 'domains/navigation';\nimport cartProductsModule from 'domains/cart_products';\nimport cartModule from 'domains/cart';\nimport cartBilling from 'domains/cart_billing';\n\nimport {\n selectCartLoading,\n selectCartProductsLoading,\n selectCartPageLoading,\n} from 'selectors/loading_states';\n\nimport type { CartProductMaybeThumb } from 'domains/cart_products';\n\ntype CartPageProps = {\n showProjects?: boolean;\n};\n\nfunction CartPage({ showProjects }: CartPageProps) {\n const dispatch = useAppDispatch();\n const cartProductsPage = useAppSelector(cartProductsModule.selectors.page);\n const cartProductsPages = useAppSelector(cartProductsModule.selectors.pageCount);\n const cartLoading = useAppSelector(selectCartLoading);\n const cartProductsLoading = useAppSelector(selectCartProductsLoading);\n const photosById = useAppSelector(photoModule.selectors.selectEntities);\n const canvasConfigPath = useAppSelector(navigation.selectors.canvasConfigPath);\n const cartPageLoading = useAppSelector(selectCartPageLoading);\n const cartProducts = useAppSelector(cartProductsModule.selectors.paginated);\n const betterCart = useAppSelector(cartModule.selectors.cart);\n const billing = useSelector(cartBilling.selectors.billing);\n const editStatus = useAppSelector(cartProductEditor.selectors.status);\n\n const projectsCount = useAppSelector(projects.selectors.selectTotal);\n\n const [loading, setLoading] = useState(false);\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n const [showCartImageGallery, setShowCartImageGallery] = useState(false);\n const [cartImageGalleryIndex, setCartImageGalleryIndex] = useState(0);\n const [redirectToReview, setRedirectToReview] = useState(false);\n const [showProjectsList, setShowProjectsList] = useState(showProjects);\n\n const [showMissingPhotosDialog, setShowMissingPhotosDialog] = useState(false);\n const [pendingEditId, setPendingEditId] = useState<number | null>(null);\n const [missingPhotosMessage, setMissingPhotosMessage] = useState('');\n\n function handleDeleteCartProduct(id: number) {\n dispatch(cartProductsModule.actions.destroy.pending(id));\n }\n\n const confirmEmptyCart = () => window.location.assign('/cart/delete');\n\n useEffect(() => {\n document.body.classList.toggle('hideBranding', localStorage.getItem('hideBranding') === 'true');\n }, []);\n\n // We want to redirect to the checkout review page if we have the query param for it\n useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n if (params.get('redirect') === 'review') {\n setRedirectToReview(true);\n }\n }, []);\n\n useEffect(() => {\n if (editStatus?.status === 'ready') {\n dispatch(navigation.actions.navigateTo('editor'));\n }\n }, [editStatus]);\n\n function handleContinueOrder() {\n if (canvasConfigPath === '') {\n dispatch(navigation.actions.navigateTo('catalogSelector'));\n } else {\n dispatch(navigation.actions.navigateTo('editor'));\n }\n }\n\n function handleEditCartProduct(cartProduct: CartProductMaybeThumb) {\n const photoIds = cartProduct.photos.map((p) => p.external_asset_id);\n const missingPhotoIds = photoIds.map((id) => (photosById[id] ? null : id)).filter(notNull);\n\n if (missingPhotoIds.length > 0) {\n let message = '';\n if (missingPhotoIds.length === 1 && photoIds.length === 1) {\n message = 'The photo used in this item has been deleted.';\n } else if (missingPhotoIds.length > 1 && photoIds.length > 1) {\n message = 'All photos used in this item have been deleted.';\n } else if (missingPhotoIds.length > 1) {\n message = 'Some photos used in this item have been deleted.';\n }\n\n message += ' Would you like to continue to edit this item and add new photos?';\n\n setMissingPhotosMessage(message);\n setPendingEditId(cartProduct.id);\n setShowMissingPhotosDialog(true);\n } else {\n dispatch(cartProductEditor.actions.pending(cartProduct.id));\n }\n }\n\n function handlePagination(page: number) {\n dispatch(cartProductsModule.actions.setPage(page));\n }\n\n function changeCartProductQuantity(cartProductId: number, quantity: number) {\n dispatch(cartProductsModule.actions.updateQuantity.pending({ id: cartProductId, quantity }));\n }\n\n function toggleColorCorrect(value: boolean) {\n dispatch(cartModule.actions.update.pending({ color_correct: value }));\n }\n\n function handleShowCartImageGallery(show: boolean, index: number) {\n setCartImageGalleryIndex(index);\n setShowCartImageGallery(show);\n }\n\n const cartProductImages = useMemo(() => {\n return cartProducts\n .filter(cartProductsModule.utils.hasPreviewUrl)\n .map((cp) => ({ id: cp.id, src: cp.preview_url }));\n }, [cartProducts]);\n\n const smallLoading = useMemo(\n () => cartPageLoading && (cartProductsLoading || cartLoading),\n [cartPageLoading, cartProductsLoading, cartLoading]\n );\n\n if (cartPageLoading) {\n return (\n <div className=\"cart_page\">\n <Spinner color=\"#fff\" size=\"50\" style={{ margin: 'auto' }} />\n </div>\n );\n }\n\n return (\n <div className=\"cart_page\">\n {(!hasCart(betterCart) || betterCart.product_ids.length === 0) && (\n <div className=\"cart-page-empty\">\n <React.Fragment>\n <h1 className=\"legend\">Your cart is empty.</h1>\n <p className=\"empty-cart-actions\">\n {projectsCount > 0 && (\n <Button\n type=\"link\"\n onClick={() => dispatch(navigation.actions.navigateTo('projects'))}\n >\n Load a Saved Project\n </Button>\n )}\n {projectsCount > 0 && <span> or </span>}\n <Button type=\"link\" onClick={handleContinueOrder}>\n Continue Ordering\n </Button>\n </p>\n </React.Fragment>\n </div>\n )}\n\n {hasCart(betterCart) && betterCart.product_ids.length > 0 && (\n <React.Fragment>\n <div className=\"content page\">\n <div className=\"cart_container\">\n <CartHeader loading={smallLoading} handleContinueOrder={handleContinueOrder} />\n <div className=\"pagination-projects-container\">\n <Button\n type=\"bare\"\n id=\"empty-cart-button\"\n onClick={() => setShowConfirmDialog(true)}\n >\n Empty Cart\n </Button>\n {cartProductsPages > 1 && (\n <Pagination\n label=\"cart items pagination\"\n currentPage={cartProductsPage}\n pageCount={cartProductsPages}\n onPaginate={handlePagination}\n />\n )}\n <ProjectControls onShowProjects={() => setShowProjectsList(true)} />\n </div>\n <CartProductList\n cartProducts={cartProducts}\n changeCartProductQuantity={changeCartProductQuantity}\n onDelete={handleDeleteCartProduct}\n onEdit={handleEditCartProduct}\n onShowImageGallery={handleShowCartImageGallery}\n />\n {cartProductsPages > 1 && cartProducts.length > 0 && (\n <Pagination\n currentPage={cartProductsPage}\n pageCount={cartProductsPages}\n onPaginate={handlePagination}\n />\n )}\n </div>\n </div>\n\n <CartSidebar guid={betterCart.guid} billing={billing}>\n <CheckoutLink loading={loading} redirectToReview={redirectToReview} />\n <ColorCorrectOption\n isChecked={betterCart.color_correct}\n onChange={toggleColorCorrect}\n />\n <CartAddOns />\n </CartSidebar>\n\n {showCartImageGallery && (\n <ImageGallery\n images={cartProductImages}\n setIsOpen={setShowCartImageGallery}\n startIndex={cartImageGalleryIndex}\n />\n )}\n </React.Fragment>\n )}\n\n {showConfirmDialog &&\n renderModal(\n <Alert\n title=\"Confirm Empty Cart\"\n labelledBy=\"confirm-empty-cart-modal\"\n lastFocusedElementId=\"empty-cart-button\"\n message=\"You are about to delete the items in your cart. This can NOT be undone. Are you sure you want to empty your cart?\"\n onContinue={confirmEmptyCart}\n onClose={() => setShowConfirmDialog(false)}\n onCancel={() => setShowConfirmDialog(false)}\n />\n )}\n\n {showMissingPhotosDialog && (\n <Alert\n lastFocusedElementId={`edit-cart-product-${pendingEditId || ''}`}\n title={`Unable to Find Photos`}\n labelledBy=\"no-edit-cart-product\"\n message={missingPhotosMessage}\n onContinue={() => {\n pendingEditId && dispatch(cartProductEditor.actions.pending(pendingEditId));\n }}\n onClose={() => setShowMissingPhotosDialog(false)}\n onCancel={() => setShowMissingPhotosDialog(false)}\n />\n )}\n\n {editStatus?.status === 'setup' &&\n renderModal(\n <Modal\n labelledBy=\"edit modal\"\n modalClass={['dark', 'edit-cart-product']}\n lastFocusedElementId={`edit-cart-product-${editStatus.id}`}\n title=\"Edit Cart Product\"\n // We do not want this modal to be closable\n onClose={() => {}}\n >\n <Spinner size=\"30\" />\n <p>Preparing item...</p>\n </Modal>\n )}\n </div>\n );\n}\n\nexport default CartPage;\n", "import { createPortal } from 'react-dom';\n\nexport const renderModal = (modal: React.ReactNode) => {\n const el = document.getElementById('main');\n if (!el) return;\n\n return createPortal(modal, el);\n};\n", "import Alert from './Alert';\n\nexport default Alert;\n", "import React, { useMemo } from 'react';\n\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\n\nimport type { ModalProps } from 'components/shared/Modal/Modal';\n\nexport type AlertProps = Pick<ModalProps, 'title' | 'labelledBy' | 'lastFocusedElementId'> & {\n onClose: () => void;\n message?: string;\n messageHTML?: JSX.Element | JSX.Element[] | null;\n showPreventDialog?: boolean;\n onPreventDialog?: React.ChangeEventHandler<HTMLInputElement>;\n onContinue: React.MouseEventHandler;\n onCancel: React.MouseEventHandler;\n};\n\nfunction Alert({\n title,\n labelledBy,\n lastFocusedElementId,\n onClose,\n message = '',\n messageHTML = null,\n showPreventDialog = false,\n onPreventDialog = () => {},\n onContinue,\n onCancel,\n}: AlertProps) {\n const alertMessage = messageHTML ? (\n <div className=\"alert-message\">{messageHTML}</div>\n ) : (\n <p className=\"alert-message\">{message}</p>\n );\n\n const alertButtons = (\n <React.Fragment>\n <Button type=\"confirm\" onClick={onContinue}>\n Continue\n </Button>\n <Button type=\"cancel\" onClick={onCancel}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n const preventDialogMessage = useMemo(() => {\n if (showPreventDialog)\n return (\n <div>\n <input id=\"prevent-dialog\" type=\"checkbox\" onChange={onPreventDialog} />\n <label htmlFor=\"prevent-dialog\">Don't show this again</label>\n </div>\n );\n\n return null;\n }, [showPreventDialog, onPreventDialog]);\n\n return (\n <Modal\n isAlert\n title={title}\n labelledBy={labelledBy}\n lastFocusedElementId={lastFocusedElementId}\n onClose={onClose}\n primaryFooterGroup={alertButtons}\n >\n {alertMessage}\n {preventDialogMessage!}\n </Modal>\n );\n}\n\nexport default Alert;\n", "import Modal from './Modal';\n\nexport default Modal;\n", "import * as React from 'react';\n\nimport type { HTMLFocusableElement } from 'types/common_types';\nimport Button from 'components/shared/Button';\n\nconst { useEffect, useRef, useState } = React;\n\nexport type ModalProps = {\n children?: React.ReactNode;\n isAlert?: boolean;\n modalClass?: string[];\n pageStartIndex?: number | null;\n primaryFooterGroup?: JSX.Element | null;\n secondaryFooterGroup?: JSX.Element | null;\n /** a11y label for the dialog role element */\n labelledBy: string;\n /** ID of element which triggered modal opening */\n lastFocusedElementId: string;\n /** Title text for modal header */\n title: string;\n onClose: () => void;\n};\n\nfunction Modal({\n children = '',\n isAlert = false,\n modalClass = [],\n pageStartIndex = null,\n primaryFooterGroup = null,\n secondaryFooterGroup = null,\n labelledBy,\n lastFocusedElementId,\n onClose,\n title,\n}: ModalProps) {\n const container = useRef<HTMLDivElement>(null);\n\n const [pages, setPages] = useState<JSX.Element[]>([]);\n\n const closeButtonId = `modal-close-${labelledBy}`;\n\n function registerEscape(event: KeyboardEvent) {\n const focusEl = document.getElementById(lastFocusedElementId);\n if (event.key === 'Esc' || event.key === 'Escape') {\n onClose();\n if (focusEl) setTimeout(() => focusEl.focus(), 5);\n }\n }\n\n function containFocus(event: FocusEvent) {\n const containerEl = container.current;\n const target = event.target as HTMLElement;\n\n if (containerEl !== null && !containerEl.contains(target)) {\n event.stopPropagation();\n // move back up to the close button, which will flow focus back to the rest of the modal\n containerEl.querySelector<HTMLButtonElement>('#modal-close')?.focus();\n }\n }\n\n function setFirstFocus(containerEl: HTMLDivElement | null) {\n if (containerEl === null) return;\n\n function findFocusableElement(el: HTMLDivElement | null): HTMLFocusableElement | null {\n if (el === null) return null;\n\n return el.querySelector('a, input, button, select, textarea');\n }\n\n const bodyFocusableElement = findFocusableElement(containerEl.querySelector('.modal-body'));\n const focusableElement =\n bodyFocusableElement || findFocusableElement(containerEl.querySelector('.modal-footer'));\n\n if (focusableElement) {\n focusableElement.focus();\n } else {\n containerEl.querySelector<HTMLButtonElement>('#modal-close')?.focus();\n }\n }\n\n function closeIfOutside(event: MouseEvent) {\n const target = event.target as HTMLElement;\n if (target.className === 'cp-modal') {\n onClose();\n }\n }\n\n function handleModalClose() {\n document.removeEventListener('keydown', registerEscape, true);\n document.removeEventListener('focus', containFocus, true);\n document.removeEventListener('click', closeIfOutside, true);\n\n const focusEl = document.getElementById(lastFocusedElementId);\n if (focusEl) setTimeout(() => focusEl.focus(), 5);\n onClose();\n }\n\n function moveLeft() {\n setPages((prev) => {\n const next = [...prev];\n const el = next.pop();\n if (el) {\n next.unshift(el);\n }\n return next;\n });\n }\n\n function moveRight() {\n setPages((prev) => {\n const next = [...prev];\n const el = next.shift();\n if (el) {\n next.push(el);\n }\n return next;\n });\n }\n\n // Init the pages array if children change\n useEffect(() => {\n if (pageStartIndex !== null) {\n const arr = [...(children as JSX.Element[])];\n const untilStart = arr.splice(0, pageStartIndex);\n setPages(arr.concat(untilStart));\n }\n }, [children, pageStartIndex]);\n\n useEffect(() => {\n document.addEventListener('focus', containFocus, true);\n setFirstFocus(container.current);\n\n return function cleanup() {\n document.removeEventListener('focus', containFocus, true);\n };\n }, []);\n\n // If the prop to close the modal changed, re-bind the event listeners for close\n useEffect(() => {\n document.removeEventListener('keydown', registerEscape, true);\n document.removeEventListener('click', closeIfOutside, true);\n document.addEventListener('keydown', registerEscape, true);\n document.addEventListener('click', closeIfOutside, true);\n\n return function cleanup() {\n document.removeEventListener('keydown', registerEscape, true);\n document.removeEventListener('click', closeIfOutside, true);\n };\n }, [onClose]);\n\n const classText = ['modal-content', ...modalClass];\n\n const hasFooter = !!primaryFooterGroup || !!secondaryFooterGroup;\n\n return (\n <div\n className={`modal ${isAlert ? 'alert' : ''}`}\n role=\"dialog\"\n aria-labelledby={labelledBy}\n ref={container}\n >\n <div className=\"cp-modal\">\n <div className={classText.join(' ')}>\n <div className=\"modal-header\">\n <h1 id={labelledBy} className=\"modal-title\">\n {title}\n </h1>\n <Button\n a11yText=\"Close Dialog\"\n id={closeButtonId}\n className=\"modal-close\"\n onClick={handleModalClose}\n icon=\"times\"\n type=\"icon\"\n size=\"lg\"\n />\n </div>\n <div className=\"modal-body\">\n {pageStartIndex === null ? (\n children\n ) : (\n <React.Fragment>\n <Button\n type=\"icon\"\n icon=\"caret-left\"\n size=\"2x\"\n className=\"page-button previous\"\n a11yText=\"Previous Page\"\n onClick={moveLeft}\n />\n\n {\n pages[0] /* we paginate by re-ordering the array, so always display the first one */\n }\n\n <Button\n type=\"icon\"\n icon=\"caret-right\"\n size=\"2x\"\n className=\"page-button next\"\n a11yText=\"Next Page\"\n onClick={moveRight}\n />\n </React.Fragment>\n )}\n </div>\n {hasFooter && (\n <div className=\"modal-footer\">\n <div className=\"footer-group-secondary\">{secondaryFooterGroup}</div>\n <div className=\"footer-group-primary\">{primaryFooterGroup}</div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport default Modal;\n", "import Pagination from './Pagination';\n\nexport default Pagination;\n", "import React from 'react';\n\nimport { range } from 'lodash';\n\nimport Button from '../Button';\n\nexport type PaginationProps = {\n currentPage: number;\n pageCount: number;\n onPaginate: (page: number) => void;\n label?: string;\n};\n\nfunction Pagination({ currentPage, pageCount, onPaginate, label = 'pagination' }: PaginationProps) {\n const buttons = range(1, pageCount + 1).map((page) => (\n <Button\n key={page}\n type=\"bare\"\n className={page === currentPage ? 'active' : ''}\n onClick={() => {\n if (page !== currentPage) {\n onPaginate(page);\n }\n }}\n >\n {page}\n </Button>\n ));\n\n return (\n <nav aria-label={label} className=\"pagination\">\n <span>Page: </span>\n {buttons}\n </nav>\n );\n}\n\nexport default Pagination;\n", "import CartProductList from './CartProductList';\n\nexport default CartProductList;\n", "import React, { useMemo } from 'react';\n\nimport CartProductItem from './CartProduct';\n\nimport cartProductsModule from 'domains/cart_products';\n\nimport type { CartProduct, CartProductMaybeThumb } from 'domains/cart_products';\n\nexport type CartProductListProps = {\n cartProducts: CartProduct[];\n display?: 'full' | 'minimal';\n onShowImageGallery?: (show: boolean, index: number) => void;\n changeCartProductQuantity?: (id: number, quantity: number) => void;\n onDelete?: (id: number) => void;\n onEdit?: (product: CartProductMaybeThumb) => void;\n};\n\nfunction CartProductList({\n cartProducts,\n display = 'full',\n onDelete = () => {},\n onEdit = () => {},\n changeCartProductQuantity = () => {},\n onShowImageGallery = () => {},\n}: CartProductListProps) {\n const cartProductsToRender = useMemo(\n () => cartProducts.filter(cartProductsModule.utils.hasData),\n [cartProducts]\n );\n\n return (\n <div className=\"cart_product_list\">\n {cartProductsToRender.map((cartProduct, i) => {\n return (\n <CartProductItem\n key={cartProduct.id}\n allowEdit={display === 'full'}\n index={i}\n product={cartProduct}\n changeCartProductQuantity={changeCartProductQuantity}\n onDelete={onDelete}\n onShowImageGallery={onShowImageGallery}\n onEdit={onEdit}\n />\n );\n })}\n </div>\n );\n}\n\nexport default CartProductList;\n", "import React, { useMemo, useState } from 'react';\nimport tinycolor from 'tinycolor2';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Button from 'components/shared/Button';\nimport Alert from 'components/shared/Alert';\n\nimport CartProductImage from './CartProductImage';\nimport CartProductQuantityInput from './CartProductQuantityInput';\nimport CartProductLineItem from './CartProductLineItem';\n\nimport { formatPrice } from 'utils/common';\n\nimport type { CartProductMaybeThumb } from 'domains/cart_products';\nimport type { CartProductLineItemProps } from './CartProductLineItem';\n\ntype CartProductProps = {\n allowEdit: boolean;\n index: number;\n product: CartProductMaybeThumb;\n onShowImageGallery: (show: boolean, index: number) => void;\n changeCartProductQuantity: (id: number, quantity: number) => void;\n onEdit?: (product: CartProductMaybeThumb) => void;\n onDelete?: (id: number) => void;\n};\n\nfunction CartProductItem({\n product,\n index,\n allowEdit,\n onShowImageGallery,\n changeCartProductQuantity = () => {},\n onDelete = () => {},\n onEdit = () => {},\n}: CartProductProps) {\n const { id, quantity } = product;\n\n const [isDeleting, setIsDeleting] = useState(false);\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const borderColor = useMemo(() => {\n return product.border_color ? tinycolor(product.border_color).toRgbString() : undefined;\n }, [product]);\n\n const lineItems = useMemo(() => {\n const items: CartProductLineItemProps[] = product.options\n .filter((option) => !option.hidden)\n .map((option) => ({ price: option.pricing.total, label: option.name }));\n\n if (product.pricing.unit_price_before_options) {\n items.unshift({ price: product.pricing.unit_price_before_options, label: 'Base Price' });\n }\n\n return items.map((item) => <CartProductLineItem key={item.label} {...item} />);\n }, [product]);\n\n const photoFilenames = useMemo(\n () => product.photos.map((p) => ({ id: p.id, filename: p.filename })),\n [product]\n );\n\n const productTitle = useMemo(() => {\n const { height, width } = product.custom_size;\n\n if (height && width) {\n return `${width}x${height} - ${product.name}`;\n }\n\n return product.name;\n }, [product]);\n\n function handleDelete() {\n setIsDeleting(true);\n setShowConfirmDialog(false);\n onDelete(id);\n }\n\n function handleEditCartProduct() {\n onEdit(product);\n }\n\n return (\n <React.Fragment>\n <div\n className={`cart_product ${isDeleting ? 'dropping' : ''}`}\n id={`cart_product_${id}`}\n style={{ order: id * -1 }}\n data-testid={`cart-product-${id}`}\n >\n <div className=\"cart_product_container\">\n <CartProductImage\n id={id}\n index={index}\n thumbUrl={product.thumbnail_url}\n photoFilenames={photoFilenames}\n canvasColor={borderColor}\n onShowImageGallery={onShowImageGallery}\n />\n\n <div className=\"cart_product_table_wrapper\">\n <table className=\"cart_product_table\">\n <tbody>\n <tr>\n <td width=\"320\">\n <h2\n className=\"product_title\"\n dangerouslySetInnerHTML={{ __html: productTitle }}\n />\n </td>\n </tr>\n {lineItems}\n\n {product.pricing.discount > 0 && (\n <React.Fragment>\n <tr className=\"branding\" aria-label=\"item unit price\">\n <td width=\"320\" />\n <td width=\"80\">Item Price:</td>\n <td width=\"96\" className=\"li_price\">\n <span className=\"price_prefix\">$</span>\n <span>{formatPrice(product.pricing.unit_price, { symbol: '' })}</span>\n </td>\n </tr>\n <tr className=\"branding\" aria-label=\"item discount\">\n <td width=\"320\" />\n <td width=\"80\">Discount:</td>\n <td width=\"96\" className=\"li_price\">\n <span className=\"price_prefix\">$</span>\n <span>\n -\n {formatPrice(\n product.pricing.unit_price - product.pricing.unit_price_after_discount,\n { symbol: '' }\n )}\n </span>\n </td>\n </tr>\n </React.Fragment>\n )}\n\n <tr className=\"branding\" aria-label=\"item subtotal\">\n <td width=\"320\" />\n <td width=\"80\">Subtotal:</td>\n <td width=\"96\" className=\"li_price\">\n <span className=\"price_prefix\">$</span>{' '}\n {formatPrice(product.pricing.unit_price_after_discount, { symbol: '' })}\n </td>\n </tr>\n <tr>\n <td width=\"320\" />\n <td width=\"80\">Quantity:</td>\n <td width=\"96\" className=\"quantity_select\">\n {allowEdit && (\n <CartProductQuantityInput\n id={id}\n quantity={quantity}\n onChange={(value) => changeCartProductQuantity(id, value)}\n />\n )}\n {!allowEdit && quantity}\n </td>\n </tr>\n <tr aria-label=\"item total\">\n <td width=\"320\">\n {allowEdit && (\n <div className=\"cart_actions\">\n <Button\n type=\"bare\"\n className=\"edit_item\"\n id={`edit-cart-product-${id}`}\n onClick={handleEditCartProduct}\n >\n <FontAwesomeIcon icon=\"edit\" />\n Edit <span className=\"screen-reader-text\">{product.name}</span>\n </Button>\n <Button\n type=\"bare\"\n className=\"remove_item\"\n id={`delete-cart-product-${id}`}\n onClick={() => setShowConfirmDialog(true)}\n >\n <FontAwesomeIcon data-id={id} icon=\"trash-alt\" />\n Remove <span className=\"screen-reader-text\">{product.name}</span>\n </Button>\n </div>\n )}\n </td>\n <td width=\"80\" className=\"quantity_price_label branding\">\n Total:\n </td>\n <td width=\"96\" className=\"quantity_price branding\" data-testid=\"cp-total\">\n <span className=\"price_prefix\">$</span>\n <span className=\"price\">\n {formatPrice(product.pricing.total, { symbol: '' })}\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n\n {showConfirmDialog && (\n <Alert\n title=\"Confirm Delete Product\"\n labelledBy=\"confirm-delete-product-modal\"\n lastFocusedElementId={`delete-cart-product-${id}`}\n onClose={() => setShowConfirmDialog(false)}\n message=\"Are you sure you want to delete this item?\"\n onContinue={handleDelete}\n onCancel={() => setShowConfirmDialog(false)}\n />\n )}\n </React.Fragment>\n );\n}\n\nexport default CartProductItem;\n", "import React, { useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Spinner from 'components/shared/Spinner';\nimport RgbDisplay from 'components/shared/RgbDisplay';\n\ntype CartProductImageProps = {\n id: number;\n index: number;\n thumbUrl?: string | null;\n photoFilenames: { id: number; filename: string }[];\n canvasColor?: string;\n onShowImageGallery: (show: boolean, index: number) => void;\n};\n\nfunction CartProductImage({\n id,\n index,\n photoFilenames,\n canvasColor,\n onShowImageGallery,\n thumbUrl,\n}: CartProductImageProps) {\n const [isListHidden, setIsListHidden] = useState(true);\n\n return (\n <div className=\"product_image_wrap\">\n {thumbUrl === 'error' && (\n <span\n className=\"product_image image-load-error\"\n title=\"Failed to load preview. Refresh page to try again.\"\n data-testid=\"thumbnail-load-error\"\n >\n <FontAwesomeIcon icon=\"exclamation-circle\" size=\"2x\" />\n </span>\n )}\n {thumbUrl && thumbUrl !== 'error' && (\n <button\n onClick={() => {\n onShowImageGallery(true, index);\n }}\n className=\"product_image\"\n >\n <img src={thumbUrl} id={`${id}`} alt=\"\" data-testid=\"cart-product-image\" />\n </button>\n )}\n {!thumbUrl && (\n <Spinner\n style={{\n width: '160px',\n height: '160px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '2px',\n border: '1px solid rgba(255, 255, 255, 0.25)',\n }}\n />\n )}\n <div className=\"product_image_filenames\">\n {photoFilenames.map((photo, i) => {\n return (\n <div\n key={photo.id}\n className={`product_image_filename ${i > 1 ? 'hidden' : ''}`}\n title={photo.filename}\n >\n {photo.filename}\n </div>\n );\n })}\n {photoFilenames.length > 2 && (\n <button\n className=\"toggle_product_image_filenames unbutton nm\"\n onClick={() => setIsListHidden(!isListHidden)}\n >\n {isListHidden ? 'Show More' : 'Show Less'}\n </button>\n )}\n </div>\n {canvasColor && <RgbDisplay color={canvasColor} />}\n </div>\n );\n}\n\nexport default CartProductImage;\n", "import RgbDisplay from './RgbDisplay';\n\nexport default RgbDisplay;\n", "import React, { useMemo } from 'react';\nimport tinycolor from 'tinycolor2';\n\ntype RgbDisplayProps = {\n color?: string;\n};\n\nfunction RgbDisplay({ color }: RgbDisplayProps) {\n if (!color) return null;\n\n const rgb = useMemo(() => tinycolor(color).toRgbString(), [color]);\n\n return (\n <div\n style={{\n height: '100%',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n width: '135px',\n }}\n >\n <div\n style={{ height: '10px', width: '10px', backgroundColor: color, marginRight: '0.5em' }}\n />\n <span>{rgb}</span>\n </div>\n );\n}\n\nexport default RgbDisplay;\n", "import React, { useState } from 'react';\n\nconst style = {\n color: '#fff',\n boxShadow: 'none',\n background: 'rgba(0, 167, 225, 0.1)',\n};\n\ntype CartProductQuantityInputProps = {\n id: number;\n quantity: number;\n onChange: (quantity: number) => void;\n};\n\nfunction CartProductQuantityInput({ id, quantity, onChange }: CartProductQuantityInputProps) {\n const [qty, setQty] = useState<string>(quantity.toString());\n const handleFocus = (event: React.FocusEvent) => {\n const target = event.target as HTMLInputElement;\n target.select();\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setQty(event.target.value);\n\n if (event.target.value !== '') {\n onChange(parseInt(event.target.value));\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === 13) event.preventDefault();\n return false;\n };\n\n return (\n <React.Fragment>\n <input\n style={style}\n className=\"quantity_select_input tar\"\n id={`quantity_select_${id}`}\n data-id={id}\n type=\"number\"\n min=\"1\"\n value={qty}\n required\n onFocus={handleFocus}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n />\n <label htmlFor={`quantity_select_${id}`} className=\"screen-reader-text\">\n Change quantity\n </label>\n </React.Fragment>\n );\n}\n\nexport default CartProductQuantityInput;\n", "import React, { useMemo } from 'react';\n\nimport { notNull } from 'utils/type_guards';\nimport { formatPrice } from 'utils/common';\nimport { breakTagRegex } from 'utils/regexes';\n\nexport type CartProductLineItemProps = {\n label: string;\n price?: number;\n};\n\nfunction CartProductLineItem(props: CartProductLineItemProps) {\n const { label, price } = props;\n\n const priceDisplay = useMemo(() => {\n if (notNull(price) && price !== 0) {\n return formatPrice(price, { symbol: '' });\n }\n\n return <span className=\"no_price\" />;\n }, [price]);\n\n const formattedLabel = useMemo(() => label.replace(breakTagRegex, ' '), [label]);\n\n return (\n <tr className=\"base_price\">\n <td width=\"320\">{formattedLabel}</td>\n <td width=\"80\" />\n <td width=\"96\" className=\"li_price branding\">\n {notNull(price) && price !== 0 && <span className=\"price_prefix\">$</span>}\n {priceDisplay}\n </td>\n </tr>\n );\n}\n\nexport default CartProductLineItem;\n", "import CartHeader from './CartHeader';\n\nexport default CartHeader;\n", "import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Spinner from 'components/shared/Spinner';\nimport Link from 'components/shared/Link';\nimport Button from 'components/shared/Button';\n\ntype CartHeaderProps = {\n loading: boolean;\n handleContinueOrder: () => void;\n};\n\nfunction CartHeader(props: CartHeaderProps) {\n const { loading, handleContinueOrder } = props;\n\n return (\n <div className=\"cart_header\">\n <div className=\"cart-header-links\">\n <Button\n type=\"link\"\n onClick={handleContinueOrder}\n id=\"continue_ordering_button\"\n className=\"continue_ordering_button\"\n >\n <FontAwesomeIcon icon=\"arrow-circle-left\" /> Continue Ordering\n </Button>\n {!loading && (\n <Link href=\"/checkout\" id=\"checkout_button\" className=\"checkout_link\">\n Checkout <FontAwesomeIcon icon=\"arrow-circle-right\" />\n </Link>\n )}\n </div>\n <h2 className=\"title\">Items in Your Cart</h2>\n {loading && <Spinner size=\"24\" />}\n </div>\n );\n}\n\nexport default CartHeader;\n", "import CartSidebar from './CartSidebar';\n\nexport default CartSidebar;\n", "import React, { useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Button from 'components/shared/Button';\nimport BillingSummary from 'components/shared/BillingSummary';\nimport FlashMessage from 'components/shared/FlashMessage';\n\nimport type { CartBilling } from 'domains/cart_billing';\n\ntype CartSidebarProps = {\n guid: string;\n billing: CartBilling | null;\n children: React.ReactNode;\n};\n\nfunction CartSidebar(props: CartSidebarProps) {\n const { children, billing, guid } = props;\n\n const [copyNote, setCopyNote] = useState(false);\n\n const handleCopyCartId = () => {\n window.navigator.clipboard.writeText(guid).then(() => {\n setCopyNote(true);\n setTimeout(() => {\n setCopyNote(false);\n }, 2000);\n });\n };\n\n return (\n <div id=\"sidebar\" className=\"cart-sidebar branding\">\n {billing && (\n <div className=\"sidebar_inner\">\n <BillingSummary billing={billing} hideCheckoutTotals />\n\n {billing.handling_total > 0 && (\n <FlashMessage type=\"info\" message=\"Crate fees may apply\" />\n )}\n\n {children}\n\n <div className=\"cart_id_container\">\n <Button type=\"link\" onClick={handleCopyCartId}>\n {copyNote ? 'Copied!' : guid}\n <FontAwesomeIcon icon=\"clipboard\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default CartSidebar;\n", "import BillingSummary from './BillingSummary';\n\nexport default BillingSummary;\n", "import React, { useMemo } from 'react';\n\nimport { formatPrice } from 'utils/common';\n\nimport type { CartBilling } from 'domains/cart_billing';\n\ntype BillingSummaryProps = {\n billing: CartBilling | null;\n hideCheckoutTotals?: boolean;\n};\n\nfunction formatSummaryPrice(price?: number, atCost?: boolean) {\n if ((!price || price === 0) && !atCost) return '-';\n\n return formatPrice(price, undefined, atCost);\n}\n\nfunction BillingSummary({ billing, hideCheckoutTotals = false }: BillingSummaryProps) {\n const subtotal = useMemo(() => formatSummaryPrice(billing?.subtotal), [billing]);\n const shipping = useMemo(\n () => formatSummaryPrice(billing?.shipping_subtotal, billing?.shipping_at_cost),\n [billing]\n );\n const tax = useMemo(() => formatSummaryPrice(billing?.tax), [billing]);\n const total = useMemo(() => (billing ? formatPrice(billing.total) : '-'), [billing]);\n\n return (\n <table className=\"billing-summary\">\n <tbody>\n <tr aria-label=\"cart subtotal\">\n <th>Subtotal</th>\n <td>{subtotal}</td>\n </tr>\n\n {billing && billing.discount > 0 && (\n <tr className=\"discount-label\" aria-label=\"cart discount\">\n <th>Discount</th>\n <td>-{formatPrice(billing.discount)}</td>\n </tr>\n )}\n\n {!hideCheckoutTotals && (\n <React.Fragment>\n {billing && billing.handling_total > 0 && (\n <tr aria-label=\"crate fee\">\n <th>Crate Fee</th>\n <td>{formatPrice(billing.handling_total)}</td>\n </tr>\n )}\n <tr aria-label=\"shipping cost\">\n <th>Shipping</th>\n <td>{shipping}</td>\n </tr>\n {billing && billing.shipping_discount > 0 && (\n <tr aria-label=\"shipping discount\">\n <th>Shipping Discount</th>\n <td>-{formatPrice(billing.shipping_discount)}</td>\n </tr>\n )}\n <tr aria-label=\"tax cost\">\n <th>Tax</th>\n <td>{tax}</td>\n </tr>\n </React.Fragment>\n )}\n </tbody>\n\n {!hideCheckoutTotals && (\n <tfoot>\n <tr aria-label=\"total cost\">\n <th>Total</th>\n <td>{total}</td>\n </tr>\n </tfoot>\n )}\n </table>\n );\n}\n\nexport default BillingSummary;\n", "import FlashMessage from './FlashMessage';\n\nexport default FlashMessage;\n", "import React, { useMemo } from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport type { IconProp } from '@fortawesome/fontawesome-svg-core';\n\ntype FlashMessageProps = {\n type?: 'error' | 'notice' | 'info';\n className?: string;\n message: NonNullable<React.ReactNode>;\n};\n\nfunction FlashMessage({ message, className = '', type = 'info' }: FlashMessageProps) {\n const icon: IconProp = useMemo(() => {\n switch (type) {\n case 'error':\n case 'notice':\n return 'exclamation-circle';\n case 'info':\n return 'info-circle';\n }\n }, [type]);\n\n return (\n <div\n className={`flash-message flash-${type} ${className}`}\n role={type === 'error' ? 'alert' : 'none'}\n >\n <p>\n <FontAwesomeIcon icon={icon} /> {message}\n </p>\n </div>\n );\n}\n\nexport default FlashMessage;\n", "import React, { useState } from 'react';\n\nimport Menu from 'components/shared/Menu';\nimport Alert from 'components/shared/Alert';\nimport EditProjectName from './EditProjectName';\nimport SaveProjectModal from './SaveProjectModal';\nimport LoadProjectModal from './LoadProjectModal';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { renderModal } from 'utils/modal_util';\n\nimport cartModule from 'domains/cart';\nimport session from 'domains/session';\nimport projects from 'domains/projects';\n\nimport type { PickRequired } from 'types/common_types';\nimport type { Project, ProjectSaveParams } from 'domains/projects';\n\ntype ProjectControlsProps = {\n onShowProjects: () => void;\n};\n\nconst alertMessage =\n 'Starting a new project will remove all items from your current cart. All unsaved changes will be lost. Do you wish to continue?';\n\n// most recent TS version does not need a type guard for this, but we are stuck\n// due to ts-loader incompatibility. should be resolved soon\nfunction hasIDs(p: ProjectSaveParams): p is PickRequired<ProjectSaveParams, 'guid' | 'id'> {\n return !!p.guid && !!p.id;\n}\n\nfunction ProjectControls(props: ProjectControlsProps) {\n const { onShowProjects } = props;\n\n const dispatch = useAppDispatch();\n\n const cartProjectId = useAppSelector(cartModule.selectors.projectId);\n const isLoggedIn = useAppSelector(session.selectors.isLoggedIn);\n const cartProject = useAppSelector((state) =>\n projects.selectors.selectById(state, cartProjectId || '')\n );\n const allProjects = useAppSelector(projects.selectors.selectAll);\n\n const [showNewDialog, setShowNewDialog] = useState(false);\n const [showSaveDialog, setShowSaveDialog] = useState(false);\n const [showLoadDialog, setShowLoadDialog] = useState(false);\n\n const [disableProjects, setDisableProjects] = useState(false);\n\n function handleSaveProject(project: ProjectSaveParams) {\n if (hasIDs(project)) {\n dispatch(projects.actions.update.pending(project));\n } else {\n dispatch(projects.actions.create.pending(project));\n }\n }\n\n function handleDeleteProject(project: Project) {\n dispatch(projects.actions.destroy.pending(project));\n }\n\n function handleRestoreProject(project: Project) {\n dispatch(projects.actions.restore.pending(project.guid));\n }\n\n function handleCreateNewProject() {\n setShowNewDialog(false);\n setDisableProjects(true);\n window.location.assign('/cart/delete');\n }\n\n const menuItems = [\n <button role=\"menuitem\" onClick={() => setShowSaveDialog(true)}>\n Save Project\n </button>,\n <button role=\"menuitem\" onClick={() => setShowLoadDialog(true)}>\n Load Project\n </button>,\n <button role=\"menuitem\" onClick={() => setShowNewDialog(true)}>\n New Project\n </button>,\n ];\n\n if (cartProject) {\n menuItems.unshift(<EditProjectName project={cartProject} onSave={handleSaveProject} />);\n }\n\n return (\n <React.Fragment>\n <Menu\n triggerId=\"projects-menu-trigger\"\n triggerText={isLoggedIn ? 'Projects' : 'Sign in to save projects'}\n triggerIcon=\"folder\"\n className=\"projects-menu\"\n disabled={!isLoggedIn || disableProjects}\n appearance=\"dark\"\n direction=\"down\"\n position=\"left\"\n menuItems={menuItems}\n />\n\n {showNewDialog &&\n renderModal(\n <Alert\n title=\"New Project\"\n labelledBy=\"new-project-alert-modal\"\n lastFocusedElementId=\"projects-menu-trigger\"\n message={alertMessage}\n onContinue={handleCreateNewProject}\n onClose={() => setShowNewDialog(false)}\n onCancel={() => setShowNewDialog(false)}\n />\n )}\n\n {showSaveDialog &&\n renderModal(\n <SaveProjectModal\n cartProject={cartProject}\n onSave={handleSaveProject}\n onClose={() => setShowSaveDialog(false)}\n />\n )}\n\n {showLoadDialog &&\n renderModal(\n <LoadProjectModal\n projects={allProjects}\n onShowProjects={onShowProjects}\n onRestore={handleRestoreProject}\n onDelete={handleDeleteProject}\n onClose={() => setShowLoadDialog(false)}\n />\n )}\n </React.Fragment>\n );\n}\n\nexport default ProjectControls;\n", "import React, { useState, useRef, useCallback } from 'react';\n\nimport { debounce } from 'lodash';\n\nimport Button from 'components/shared/Button';\n\nimport type { Project, ProjectSaveParams } from 'domains/projects';\n\ntype EditProjectNameProps = {\n project: Project;\n onSave: (project: ProjectSaveParams) => void;\n};\n\nfunction EditProjectName(props: EditProjectNameProps) {\n const { project, onSave } = props;\n const [isEditing, setIsEditing] = useState(false);\n const nameInput = useRef<HTMLInputElement>(null);\n const descInput = useRef<HTMLTextAreaElement>(null);\n const debounceInputChange = debounce(saveCurrentProjectValues, 2000);\n\n const handleEditClick = useCallback(() => {\n setIsEditing(true);\n // unfortunate hack to get around react's rendering cycle\n setTimeout(() => {\n if (nameInput.current) {\n nameInput.current.focus();\n }\n }, 50);\n }, [setIsEditing]);\n\n function handleInputBlur(e: React.FocusEvent) {\n debounceInputChange.cancel();\n\n if (e.relatedTarget === nameInput.current || e.relatedTarget === descInput.current) {\n return;\n }\n\n saveCurrentProjectValues();\n setIsEditing(false);\n }\n\n function saveCurrentProjectValues() {\n if (!nameInput.current || nameInput.current.value === '' || !descInput.current) return;\n\n const nameValue = nameInput.current.value;\n const descValue = descInput.current.value;\n\n if (nameValue !== project.name || descValue !== project.description) {\n onSave({ guid: project.guid, id: project.id, name: nameValue, description: descValue });\n }\n }\n\n return (\n <div className={`save-project-info ${isEditing ? 'is-editing' : ''}`}>\n <div className=\"edit-project-details\">\n <Button\n type=\"icon\"\n icon=\"edit\"\n a11yText=\"Edit Project Name and Description\"\n appearance=\"light\"\n onClick={handleEditClick}\n />\n <div>\n <p>{project.name}</p>\n <p>{project.description}</p>\n </div>\n </div>\n\n <div className=\"edit-project-inputs\" hidden={!isEditing}>\n <label className=\"screen-reader-text\" htmlFor=\"save_project_name-inline\">\n Project Name\n </label>\n <input\n type=\"text\"\n id=\"save_project_name-inline\"\n ref={nameInput}\n name=\"save-project-name\"\n defaultValue={project.name || ''}\n onChange={debounceInputChange}\n onBlur={handleInputBlur}\n />\n <label className=\"screen-reader-text\" htmlFor=\"save_project_description-inline\">\n Project Description\n </label>\n <textarea\n id=\"save_project_description-inline\"\n rows={1}\n ref={descInput}\n name=\"save-project-description-inline\"\n defaultValue={project.description || undefined}\n onChange={debounceInputChange}\n onBlur={handleInputBlur}\n />\n </div>\n </div>\n );\n}\n\nexport default EditProjectName;\n", "import React, { useState, useRef } from 'react';\n\nimport Modal from 'components/shared/Modal';\nimport Button from 'components/shared/Button';\nimport Alert from 'components/shared/Alert';\n\nimport type { Project, ProjectSaveParams } from 'domains/projects';\n\ntype SaveProjectModalProps = {\n cartProject?: Project;\n onSave: (project: ProjectSaveParams) => void;\n onClose: () => void;\n};\n\nfunction SaveProjectModal(props: SaveProjectModalProps) {\n const { cartProject, onSave, onClose } = props;\n\n const [showAlert, setShowAlert] = useState(false);\n const nameInput = useRef<HTMLInputElement>(null);\n\n const [name, setName] = useState(cartProject?.name || '');\n const [description, setDescription] = useState(cartProject?.description || undefined);\n\n function saveAndCloseModal() {\n onSave({ guid: cartProject?.guid, id: cartProject?.id, name, description });\n onClose();\n }\n\n function handleUpdate() {\n if (cartProject) {\n setShowAlert(true);\n return;\n }\n\n saveAndCloseModal();\n }\n\n function handleContinue() {\n setShowAlert(false);\n saveAndCloseModal();\n }\n\n function handleCancel() {\n setTimeout(() => nameInput.current?.focus(), 0); // unfortunate hack to get around react's rendering cycle\n setShowAlert(false);\n }\n\n const saveProjectButtons = (\n <React.Fragment>\n <Button type=\"confirm\" onClick={handleUpdate}>\n Save\n </Button>\n <Button type=\"cancel\" onClick={onClose}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n return (\n <Modal\n title=\"Save Your Project\"\n labelledBy=\"save-project-modal\"\n lastFocusedElementId=\"projects-menu-trigger\"\n onClose={onClose}\n primaryFooterGroup={saveProjectButtons}\n >\n <div className=\"save-project-form\">\n {showAlert && (\n <Alert\n title=\"Save Project\"\n labelledBy=\"save-project-alert-modal\"\n lastFocusedElementId=\"save_project_name\"\n onClose={() => setShowAlert(false)}\n message={'Are you sure you want to overwrite the current project?'}\n onContinue={handleContinue}\n onCancel={handleCancel}\n />\n )}\n <div className=\"save-project-fields\">\n <label htmlFor=\"save_project_name\">Project Name</label>\n <input\n type=\"text\"\n id=\"save_project_name\"\n name=\"save-project-name\"\n ref={nameInput}\n value={name}\n onChange={(e) => setName(e.target.value)}\n />\n <label htmlFor=\"save_project_description\">Project Description</label>\n <textarea\n id=\"save_project_description\"\n rows={1}\n name=\"save-project-description\"\n onChange={(e) => setDescription(e.target.value)}\n value={description}\n />\n </div>\n </div>\n </Modal>\n );\n}\n\nexport default SaveProjectModal;\n", "import React, { useState } from 'react';\n\nimport Modal from 'components/shared/Modal';\nimport Button from 'components/shared/Button';\n\nimport ProjectActionAlert from './ProjectActionAlert';\nimport ProjectActionTile from './ProjectActionTile';\n\nimport type { Project } from 'domains/projects';\n\ntype LoadProjectModalProps = {\n projects: Project[];\n onShowProjects: () => void;\n onRestore: (project: Project) => void;\n onDelete: (project: Project) => void;\n onClose: () => void;\n};\n\nexport type LoadProjectAlertType = 'restore' | 'delete' | null;\n\nfunction LoadProjectModal(props: LoadProjectModalProps) {\n const { projects, onShowProjects, onRestore, onDelete, onClose } = props;\n const [showAlert, setShowAlert] = useState(false);\n const [alertType, setAlertType] = useState<LoadProjectAlertType>(null);\n const [activeProject, setActiveProject] = useState<Project | null>(null);\n const [lastFocusedElementId, setLastFocusedElementId] = useState('');\n\n const mostRecentProjects = [...projects]\n .filter((project) => !project.last_ordered_at)\n .sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime())\n .splice(0, 8);\n\n function handleOpenAlert(whichAlert: LoadProjectAlertType, project: Project) {\n setAlertType(whichAlert);\n setActiveProject(project);\n updateLastFocusedEl(whichAlert);\n setShowAlert(true);\n }\n\n function updateLastFocusedEl(whichAlert: LoadProjectAlertType) {\n switch (whichAlert) {\n case 'restore':\n setLastFocusedElementId('restore-project-button');\n break;\n case 'delete':\n setLastFocusedElementId('remove-project-button');\n break;\n default:\n setLastFocusedElementId('');\n break;\n }\n }\n\n function handleContinue() {\n setShowAlert(false);\n if (!activeProject) return;\n\n if (alertType === 'restore') {\n onRestore(activeProject);\n onClose();\n }\n\n if (alertType === 'delete') {\n onDelete(activeProject);\n }\n }\n\n function handleCancel() {\n setAlertType(null);\n setActiveProject(null);\n setShowAlert(false);\n }\n\n function handleShowProjectsList() {\n onShowProjects();\n onClose();\n }\n\n const projectTiles = mostRecentProjects.map((project) => (\n <li key={project.id} aria-label={`project named ${project.name}`}>\n <ProjectActionTile\n project={project}\n appearance=\"light\"\n onDelete={(project) => handleOpenAlert('delete', project)}\n onRestore={(project) => handleOpenAlert('restore', project)}\n />\n </li>\n ));\n\n return (\n <Modal\n title=\"Most Recent Projects\"\n labelledBy=\"load-project-modal\"\n onClose={onClose}\n lastFocusedElementId=\"projects-menu-trigger\"\n primaryFooterGroup={\n projects.length > 0 ? (\n <Button type=\"link\" onClick={handleShowProjectsList}>\n View all saved projects\n </Button>\n ) : null\n }\n >\n <div className=\"load-project-form\">\n {showAlert && alertType && (\n <ProjectActionAlert\n alertType={alertType}\n lastFocusedElementId={lastFocusedElementId}\n onCancel={handleCancel}\n onContinue={handleContinue}\n onClose={handleCancel}\n />\n )}\n {projectTiles.length > 0 ? (\n <ul className=\"modal-list-items\" aria-label=\"projects list\">\n {projectTiles}\n </ul>\n ) : (\n 'You have 0 saved projects'\n )}\n </div>\n </Modal>\n );\n}\n\nexport default LoadProjectModal;\n", "import React from 'react';\n\nimport Alert from 'components/shared/Alert';\n\nconst alertContentMap = {\n restore: {\n message: 'Are you sure you want to replace the current Project? Unsaved changes will be lost.',\n title: 'Replace Project',\n labelledBy: 'restore-project-alert-modal',\n },\n delete: {\n message: 'Are you sure you want to delete this project? This cannot be undone.',\n title: 'Delete Project',\n labelledBy: 'remove-project-alert-modal',\n },\n};\n\ntype ProjectActionAlertProps = {\n alertType: 'restore' | 'delete';\n lastFocusedElementId: string;\n onContinue: () => void;\n onCancel: () => void;\n onClose: () => void;\n};\n\nfunction ProjectActionAlert(props: ProjectActionAlertProps) {\n const { alertType, lastFocusedElementId, onContinue, onCancel, onClose } = props;\n\n return (\n <Alert\n title={alertContentMap[alertType].title}\n labelledBy={alertContentMap[alertType].labelledBy}\n lastFocusedElementId={lastFocusedElementId}\n onClose={onClose}\n message={alertContentMap[alertType].message}\n onContinue={onContinue}\n onCancel={onCancel}\n />\n );\n}\n\nexport default ProjectActionAlert;\n", "import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport NavigationTile from 'components/shared/NavigationTile';\n\nimport { formatDateModified } from 'utils/format_date';\n\nimport type { Project } from 'domains/projects';\n\ntype ProjectActionTileProps = {\n project: Project;\n appearance: 'dark' | 'light';\n onRestore: (project: Project) => void;\n onDelete: (project: Project) => void;\n};\n\nfunction ProjectActionTile(props: ProjectActionTileProps) {\n const { project, appearance, onRestore, onDelete } = props;\n\n return (\n <NavigationTile\n item={project}\n details={project.description}\n secondaryDetails={`Last edited: ${formatDateModified(project.updated_at)}`}\n name={`${project.name} | ${project.count} item${project.count === 1 ? '' : 's'}`}\n image={project.thumbnail_url}\n clickHandler={() => onRestore(project)}\n menuAppearance={appearance}\n menuItems={[\n {\n icon: <FontAwesomeIcon icon=\"redo\" />,\n label: 'Restore',\n a11yLabel: `Restore project ${project.name}`,\n click: (e) => onRestore(project),\n },\n {\n icon: <FontAwesomeIcon icon=\"trash-alt\" />,\n label: 'Delete',\n a11yLabel: `Delete project ${project.name}`,\n click: (e) => onDelete(project),\n },\n ]}\n />\n );\n}\n\nexport default ProjectActionTile;\n", "import NavigationTile from './NavigationTile';\n\nexport default NavigationTile;\n", "import React, { useCallback, useMemo, useRef } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { findAncestor } from 'utils/dom_utils';\nimport { handleKeyEvents } from 'utils/handlers';\nimport slug from 'utils/slug';\n\nimport Button from 'components/shared/Button';\nimport Menu from 'components/shared/Menu';\nimport Spinner from 'components/shared/Spinner';\n\ntype NavigationTileItem = {\n id: string | number;\n sort_index?: number;\n name?: string | null;\n};\n\ntype NavigationTileDisplay = {\n check: (item: NavigationTileItem) => boolean;\n component: JSX.Element;\n};\n\nexport type NavigationTileMenuItem = {\n a11yLabel?: string;\n label: string | JSX.Element;\n disabled?: boolean;\n icon: JSX.Element;\n click: (e: React.UIEvent) => void;\n};\n\ntype NavigationTileProps = {\n item: NavigationTileItem;\n menuAppearance?: 'dark' | 'light';\n name: string;\n image?: string;\n imagePending?: boolean;\n details?: string;\n secondaryDetails?: string;\n menuItems?: NavigationTileMenuItem[];\n displays?: NavigationTileDisplay[];\n className?: string;\n draggable?: boolean;\n disabled?: boolean;\n clickHandler: React.MouseEventHandler;\n};\n\ntype NavigationDirection = 'up' | 'down' | 'prev' | 'next';\n\ntype TileOffset = {\n offsetTop: number;\n offsetLeft: number;\n offsetHeight: number;\n offsetWidth: number;\n};\n\nfunction NavigationTile({\n item,\n name,\n image,\n details,\n secondaryDetails,\n imagePending,\n displays,\n disabled,\n clickHandler,\n className = '',\n menuAppearance = 'light',\n menuItems = [],\n draggable = false,\n}: NavigationTileProps) {\n const elem = useRef<HTMLDivElement>(null);\n\n const display = displays && displays.length > 0 ? displays.find((d) => d.check(item)) : undefined;\n\n const handleTileSelect = (current: HTMLElement, direction: NavigationDirection = 'next') => {\n if (!elem.current) return;\n\n const container = findAncestor(elem.current, '.modal-list-items');\n if (!container) return;\n\n const tiles = Array.from(\n container.querySelectorAll<HTMLButtonElement>('.navigation-tile .image-button')\n );\n const currentTile = tiles.findIndex((t) => current.contains(t));\n\n function tileOffset(tile: HTMLElement): TileOffset | null {\n if (!tile.parentElement) return null;\n\n if (tile.parentElement !== container) {\n return tileOffset(tile.parentElement);\n }\n\n return {\n offsetTop: tile.offsetTop,\n offsetLeft: tile.offsetLeft,\n offsetWidth: tile.offsetWidth,\n offsetHeight: tile.offsetHeight,\n };\n }\n\n function aboveTile() {\n const curOffset = tileOffset(current);\n if (!curOffset) return null;\n\n let above = -1;\n let upToLeft = -1;\n let upToRight = -1;\n\n const rtiles = tiles.reverse();\n above = rtiles.findIndex((t) => {\n const tOffset = tileOffset(t);\n return (\n t !== current &&\n tOffset &&\n tOffset.offsetTop < curOffset.offsetTop &&\n tOffset.offsetLeft === curOffset.offsetLeft\n );\n });\n\n if (above === -1) {\n const upToLeft = rtiles.findIndex((t) => {\n const tOffset = tileOffset(t);\n return (\n t !== current &&\n tOffset &&\n tOffset.offsetTop < curOffset.offsetTop &&\n tOffset.offsetLeft < curOffset.offsetLeft\n );\n });\n }\n\n if (upToLeft === -1) {\n upToRight = rtiles.findIndex((t) => {\n const tOffset = tileOffset(t);\n\n return (\n t !== current &&\n tOffset &&\n tOffset.offsetTop < curOffset.offsetTop &&\n tOffset.offsetLeft < curOffset.offsetLeft + current.offsetWidth\n );\n });\n }\n\n return (\n (above > -1 && above) ||\n (upToLeft > -1 && upToLeft) ||\n (upToRight > -1 && upToRight) ||\n tiles.length - 1 - currentTile\n );\n }\n\n function belowTile() {\n const curOffset = tileOffset(current);\n if (!curOffset) return null;\n\n let below = -1;\n let downToRight = -1;\n let downToLeft = -1;\n\n below = tiles.findIndex((t) => {\n const tOffset = tileOffset(t);\n return (\n t !== current &&\n tOffset &&\n tOffset.offsetTop > curOffset.offsetTop &&\n tOffset.offsetLeft === curOffset.offsetLeft\n );\n });\n\n if (below === -1) {\n downToRight = tiles.findIndex((t) => {\n const tOffset = tileOffset(t);\n return (\n t !== current &&\n tOffset &&\n tOffset.offsetTop > curOffset.offsetTop &&\n tOffset.offsetLeft > curOffset.offsetLeft\n );\n });\n }\n\n if (downToRight === -1) {\n downToLeft = tiles.findIndex((t) => {\n const tOffset = tileOffset(t);\n return (\n t !== current &&\n tOffset &&\n tOffset.offsetTop > curOffset.offsetTop &&\n tOffset.offsetLeft + tOffset.offsetWidth > curOffset.offsetLeft\n );\n });\n }\n\n return (\n (below > -1 && below) ||\n (downToRight > -1 && downToRight) ||\n (downToLeft > -1 && downToLeft) ||\n currentTile\n );\n }\n\n function nextTile() {\n return currentTile + 1 >= tiles.length ? 0 : currentTile + 1;\n }\n\n function prevTile() {\n const pTile = currentTile - 1;\n const wrapTile = tiles.length - 1;\n return pTile <= -1 ? wrapTile : pTile;\n }\n\n function getDirectionTile(dir: NavigationDirection) {\n switch (dir) {\n case 'up':\n return aboveTile();\n case 'down':\n return belowTile();\n case 'prev':\n return prevTile();\n case 'next':\n return nextTile();\n default:\n return nextTile();\n }\n }\n\n const nextTileIndex = getDirectionTile(direction);\n if (nextTileIndex !== null && nextTileIndex !== -1) {\n const t = tiles[nextTileIndex];\n t.scrollIntoView({ block: 'center', behavior: 'smooth' });\n t.focus();\n }\n };\n\n const handleTileSelectNext = (current: HTMLElement) => handleTileSelect(current, 'next');\n const handleTileSelectPrevious = (current: HTMLElement) => handleTileSelect(current, 'prev');\n const handleTileSelectAbove = (current: HTMLElement) => handleTileSelect(current, 'up');\n const handleTileSelectBelow = (current: HTMLElement) => handleTileSelect(current, 'down');\n\n const handleTileNavigation = (e: React.KeyboardEvent) => {\n const { key, currentTarget } = e;\n const tile = findAncestor(currentTarget as HTMLElement, '.navigation-tile');\n if (tile) {\n switch (key) {\n case 'ArrowDown':\n handleTileSelectBelow(tile);\n break;\n case 'ArrowRight':\n handleTileSelectNext(tile);\n break;\n case 'ArrowUp':\n handleTileSelectAbove(tile);\n break;\n case 'ArrowLeft':\n handleTileSelectPrevious(tile);\n break;\n default:\n e.preventDefault();\n break;\n }\n }\n };\n\n const handleTileMenuSelect = useCallback((current: EventTarget, direction = 'next') => {\n if (!elem.current) return;\n\n const menuLinks = elem.current.querySelectorAll<HTMLButtonElement>('.tile-menu-link');\n const currentIndex = Array.from(menuLinks).findIndex((l) => l === current);\n const newIndex = direction === 'prev' ? currentIndex - 1 : currentIndex + 1;\n if (newIndex > -1 && newIndex < menuLinks.length) {\n menuLinks[newIndex].focus();\n } else if (newIndex === menuLinks.length) {\n // give focus back to the menu\n const btn = elem.current.querySelector<HTMLButtonElement>('.navigation-tile-menu button');\n if (btn) {\n btn.focus();\n }\n }\n }, []);\n\n const handleTileMenuSelectNext = useCallback(\n (current: EventTarget) => {\n return handleTileMenuSelect(current, 'next');\n },\n [handleTileMenuSelect]\n );\n\n const handleTileMenuSelectPrevious = useCallback(\n (current: EventTarget) => {\n return handleTileMenuSelect(current, 'prev');\n },\n [handleTileMenuSelect]\n );\n\n const handleTileMenuNavigation = useCallback(\n (e: React.KeyboardEvent) => {\n const { key, currentTarget } = e;\n e.preventDefault();\n switch (key) {\n case 'ArrowUp':\n handleTileMenuSelectPrevious(currentTarget);\n break;\n case 'ArrowDown':\n handleTileMenuSelectNext(currentTarget);\n break;\n default:\n break;\n }\n },\n [handleTileMenuSelectNext, handleTileMenuSelectPrevious]\n );\n\n const altText = `${item.name || name || ''}`;\n\n const showTileMenuTrigger = useMemo(() => menuItems.length > 0, [menuItems]);\n\n const menuItemsButtons = useMemo(() => {\n return menuItems.map((menuitem) => (\n <Button\n type=\"cornered\"\n className=\"tile-menu-link\"\n role=\"menuitem\"\n disabled={menuitem.disabled}\n onClick={(e) => menuitem.click(e)}\n a11yText={menuitem.a11yLabel}\n onKeyDown={handleKeyEvents({\n open: (e) => menuitem.click(e as React.UIEvent),\n navigate: (e) => handleTileMenuNavigation(e),\n })}\n >\n {menuitem.icon}\n {menuitem.label}\n </Button>\n ));\n }, [menuItems, handleTileMenuNavigation]);\n\n return (\n <div\n ref={elem}\n data-id={item.id}\n data-sort={item.sort_index === undefined ? item.id : item.sort_index}\n className={`navigation-tile ${className} ${disabled ? 'disabled' : ''}`}\n draggable={draggable}\n >\n <div className=\"thumb-container\">\n {image && (\n <button\n className=\"image-button\"\n onClick={clickHandler}\n disabled={disabled || !!display}\n onKeyDown={handleKeyEvents({ navigate: handleTileNavigation })}\n aria-label={`Select ${name}`}\n >\n <img src={image} alt={altText} draggable=\"false\" />\n </button>\n )}\n {imagePending && (\n <div className=\"image-pending-container\">\n <Spinner size=\"50\" />\n </div>\n )}\n {!image && !imagePending && <FontAwesomeIcon icon=\"image\" size=\"2x\" />}\n </div>\n\n {display && display.component}\n\n <div className=\"tile-info\">\n {!display && (\n <React.Fragment>\n {details && <span className=\"tile-details\">{details}</span>}\n {secondaryDetails && <span className=\"tile-details\">{secondaryDetails}</span>}\n <Button type=\"link\" className=\"tile-name\" onClick={clickHandler} disabled={disabled}>\n {name}\n </Button>\n </React.Fragment>\n )}\n\n {showTileMenuTrigger && (\n <Menu\n disabled={disabled}\n menuItems={menuItemsButtons}\n className=\"navigation-tile-menu\"\n iconOnlyTrigger\n triggerId={`${slug(name)}-${item.id}-navigation-tile`}\n triggerIcon=\"bars\"\n triggerText={`Show menu for ${name}`}\n direction=\"up\"\n position=\"left\"\n appearance={menuAppearance}\n />\n )}\n </div>\n </div>\n );\n}\n\nexport default NavigationTile;\n", "export function findAncestor(elem: HTMLElement, selector: string) {\n let parent: HTMLElement | null = elem;\n\n while (parent) {\n if (parent.matches && parent.matches(selector)) {\n return parent;\n }\n\n parent = parent.parentNode ? (parent.parentNode as HTMLElement) : null;\n }\n\n return null;\n}\n\nexport default findAncestor;\n", "const slug = (text: string) => {\n return text\n .toString()\n .toLowerCase()\n .trim()\n .replace(/[_]*catalog[_]*/g, '') // Remove word 'catalog'\n .replace(/\\s+/g, '_') // Replace spaces with _\n .replace(/<br.*>/g, '') // Remove <br> tags\n .replace(/[^\\w-]+/g, '') // Remove all non-word chars\n .replace(/-/g, '_') // Replace - with _\n .replace(/&/g, '_and_') // Replace & with 'and'\n .replace(/__+/g, '_'); // Replace multiple _ with single _\n};\n\nexport default slug;\n", "export function formatDateModified(lastModified: string) {\n const date = new Date(lastModified);\n\n return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;\n}\n", "import slice from './projects.slice';\nimport actions from './projects.actions';\nimport selectors from './projects.selectors';\n\nexport * from './projects.types';\n\nconst allActions = { ...actions, ...slice.actions };\n\nconst module = {\n actions: allActions,\n selectors,\n};\n\nexport { default as slice } from './projects.slice';\n\nexport default module;\n", "import { createSlice } from '@reduxjs/toolkit';\n\nimport projectsAdapter from './projects.adapter';\nimport actions from './projects.actions';\n\nimport type { LoadingStatus } from 'types/common_types';\n\ntype ProjectsSliceInitialState = {\n status: LoadingStatus;\n restoreStatus: 'idle' | 'pending' | 'complete';\n};\n\nconst { getAll, update, restore, destroy } = actions;\n\nconst initialState: ProjectsSliceInitialState = {\n status: 'idle',\n restoreStatus: 'idle',\n};\n\nconst slice = createSlice({\n name: 'projects',\n initialState: projectsAdapter.getInitialState(initialState),\n reducers: {\n reset() {\n return projectsAdapter.getInitialState(initialState);\n },\n addMany: projectsAdapter.addMany,\n resetRestoreStatus(state) {\n return { ...state, restoreStatus: 'idle' };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(getAll.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(getAll.fulfilled, (state, { payload }) => {\n const update = projectsAdapter.addMany(state, payload);\n update.status = 'idle';\n return update;\n })\n .addCase(destroy.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(destroy.fulfilled, (state, { payload }) => {\n const update = projectsAdapter.removeOne(state, payload);\n update.status = 'idle';\n return update;\n })\n .addCase(update.fulfilled, (state, { payload }) => {\n return projectsAdapter.updateOne(state, { id: payload.id, changes: payload });\n })\n .addCase(restore.pending, (state) => {\n return { ...state, restoreStatus: 'pending' };\n })\n .addCase(restore.fulfilled, (state) => {\n return { ...state, restoreStatus: 'complete' };\n });\n },\n});\n\nexport default slice;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { Project } from './projects.types';\n\nconst projectsAdapter = createEntityAdapter<Project>();\n\nexport default projectsAdapter;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport type { Project, ProjectSaveParams } from '.';\nimport type { PickRequired } from 'types/common_types';\n\ntype UpdateProjectParams = PickRequired<ProjectSaveParams, 'guid' | 'id'>;\n\nconst getAll = {\n pending: createAction('projects/getAll/pending'),\n fulfilled: createAction<Project[]>('projects/getAll/fulfilled'),\n rejected: createAction('projects/getAll/rejected'),\n};\n\nconst create = {\n pending: createAction<ProjectSaveParams>('projects/createProject/pending'),\n fulfilled: createAction<string>('projects/createProject/fulfilled'),\n rejected: createAction('projects/createProject/rejected'),\n};\n\nconst update = {\n pending: createAction<UpdateProjectParams>('projects/update/pending'),\n fulfilled: createAction<UpdateProjectParams>('projects/update/fulfilled'),\n rejected: createAction('projects/update/rejected'),\n};\n\nconst restore = {\n pending: createAction<string>('projects/restore/pending'),\n fulfilled: createAction('projects/restore/fulfilled'),\n rejected: createAction('projects/restore/rejected'),\n};\n\nconst destroy = {\n pending: createAction<Project>('projects/destroy/pending'),\n fulfilled: createAction<number>('projects/destroy/fulfilled'),\n rejected: createAction('projects/destroy/rejected'),\n};\n\nexport default { getAll, create, update, restore, destroy };\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './projects.slice';\nimport projectsAdapter from './projects.adapter';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\n// Localized Selectors\nexport const selectProjectsStatus = (state: LocalState) => state.status;\nexport const selectProjectRestoreStatus = (state: LocalState) => state.restoreStatus;\n\n/**\n * Globalized selectors that know how to select data from the RootState\n */\nexport default {\n ...projectsAdapter.getSelectors(localState),\n status: compose(selectProjectsStatus, localState),\n restoreStatus: compose(selectProjectRestoreStatus, localState),\n};\n", "export type Project = {\n id: number;\n name: string;\n description?: string;\n /** This is the guid of the source that will be restored as a new cart */\n guid: string;\n count: number;\n updated_at: string;\n last_ordered_at: string | null;\n thumbnail_url: string;\n};\n\nexport type ProjectSaveParams = {\n guid?: string;\n id?: number;\n name: string;\n description?: string;\n};\n", "import ImageGallery from './ImageGallery';\n\nexport default ImageGallery;\n", "import * as React from 'react';\n\nimport Button from 'components/shared/Button';\n\nconst { useState, useMemo, useEffect } = React;\n\nexport type ImageGalleryImage = {\n id: string | number;\n src?: string | null;\n};\n\nexport type ImageGalleryProps = {\n images: ImageGalleryImage[];\n setIsOpen: (isOpen: boolean) => void;\n startIndex: number;\n};\n\nfunction ImageGallery({ images, setIsOpen, startIndex }: ImageGalleryProps) {\n const [activeImageIndex, setActiveImageIndex] = useState(startIndex);\n const imageIds = useMemo(() => images.map((image) => image.id), [images]);\n const pages = useMemo(() => images.length, [images]);\n const page = useMemo(() => activeImageIndex + 1, [activeImageIndex, imageIds]);\n\n const imgs = useMemo(() => {\n return images.map((image) => (\n <img src={image.src || '/assets/loading.gif'} key={image.id} alt=\"Preview\" />\n ));\n }, [images]);\n\n function pageUp() {\n if (activeImageIndex + 1 === images.length) {\n setActiveImageIndex(0);\n } else {\n setActiveImageIndex(activeImageIndex + 1);\n }\n }\n\n function pageDown() {\n if (activeImageIndex === 0) {\n setActiveImageIndex(images.length - 1);\n } else {\n setActiveImageIndex(activeImageIndex - 1);\n }\n }\n\n function handleCloseGallery(e: MouseEvent) {\n const target = e.target as HTMLElement;\n\n if (target && target.className === 'gallery-container') {\n setIsOpen(false);\n }\n }\n\n useEffect(() => {\n document.addEventListener('click', handleCloseGallery);\n\n return function cleanup() {\n document.removeEventListener('click', handleCloseGallery);\n };\n }, []);\n\n const isPaged = pages > 1;\n\n return (\n <div role=\"dialog\" className=\"gallery-container\" aria-label=\"Gallery of your images\">\n {isPaged && (\n <Button\n type=\"icon\"\n icon=\"caret-left\"\n appearance=\"light\"\n size=\"3x\"\n a11yText=\"Show Previous Image\"\n onClick={pageDown}\n />\n )}\n <div className=\"image-container\">\n <Button\n type=\"icon\"\n icon=\"times\"\n size=\"2x\"\n appearance=\"light\"\n a11yText=\"Close Gallery\"\n onClick={() => setIsOpen(false)}\n />\n {imgs[activeImageIndex]}\n {isPaged && (\n <p className=\"page-label\">\n {page} of {pages}\n </p>\n )}\n </div>\n {isPaged && (\n <Button\n type=\"icon\"\n icon=\"caret-right\"\n appearance=\"light\"\n size=\"3x\"\n a11yText=\"Show Next Image\"\n onClick={pageUp}\n />\n )}\n </div>\n );\n}\n\nexport default ImageGallery;\n", "import React from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\ntype ColorCorrectOptionProps = {\n isChecked: boolean;\n onChange: (checked: boolean) => void;\n};\n\nfunction ColorCorrectOption(props: ColorCorrectOptionProps) {\n const { isChecked, onChange } = props;\n\n return (\n <div className=\"color_correction_option\">\n <h3 className=\"title\">Color Correction</h3>\n <p className=\"desc\">\n We hand adjust each image for density, color, contrast, and saturation for the best prints\n possible from your images.\n </p>\n <div className=\"checkbox\">\n <input\n type=\"checkbox\"\n id=\"color_correction\"\n checked={isChecked}\n onChange={() => onChange(!isChecked)}\n />\n <label htmlFor=\"color_correction\">\n {isChecked && <FontAwesomeIcon icon={['far', 'check-square']} size=\"2x\" />}\n {!isChecked && <FontAwesomeIcon icon={['far', 'square']} size=\"2x\" />}\n <span>Yes, color correct my images.</span>\n </label>\n </div>\n </div>\n );\n}\n\nexport default ColorCorrectOption;\n", "import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Link from 'components/shared/Link';\n\ntype CheckoutLinkProps = {\n loading: boolean;\n redirectToReview: boolean;\n};\n\nfunction CheckoutLink(props: CheckoutLinkProps) {\n const { loading, redirectToReview } = props;\n\n return (\n <Link\n type=\"button\"\n variant=\"outline\"\n href={`/checkout${redirectToReview ? '/review' : ''}`}\n className={`checkout-button ${loading ? 'disabled' : ''}`}\n >\n {redirectToReview && (\n <React.Fragment>\n Return to Review Order\n <FontAwesomeIcon icon=\"arrow-right\" />\n </React.Fragment>\n )}\n {!redirectToReview && (\n <React.Fragment>\n Checkout\n <FontAwesomeIcon icon=\"arrow-right\" />\n </React.Fragment>\n )}\n </Link>\n );\n}\n\nexport default CheckoutLink;\n", "import React, { useEffect } from 'react';\n\nimport optionGroupModule from 'domains/option_groups';\nimport * as mixedSelectors from 'selectors/mixed';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport CartAddOnOptionGroup from './CartAddOnOptionGroup';\n\nfunction CartAddOns() {\n const availableCartAddOnGroups = useAppSelector(mixedSelectors.availableOrderOptions);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n dispatch(optionGroupModule.actions.fetchOrderOptions.pending());\n }, [dispatch]);\n\n return (\n <div className=\"cart-addons\">\n <div className=\"addon_options\">\n {availableCartAddOnGroups.map((addOnGroup) => (\n <CartAddOnOptionGroup key={addOnGroup.id} group={addOnGroup} />\n ))}\n </div>\n </div>\n );\n}\n\nexport default CartAddOns;\n", "import { createSelector } from '@reduxjs/toolkit';\nimport { includes } from 'lodash';\n\nimport optionGroupsModule from 'domains/option_groups';\nimport cartProducts from 'domains/cart_products';\n\n// Order Options are limited by certain products\n// If all cart products in a cart don't support an order option, filter it out of the list\nexport const availableOrderOptions = createSelector(\n [optionGroupsModule.selectors.allOrderOptions, cartProducts.selectors.unsupportedOrderOptions],\n (orderOptions, unsupportedUids) => {\n return orderOptions.filter(({ uid }) => {\n return !unsupportedUids.every((exclude) => includes(exclude, uid));\n });\n }\n);\n", "import React, { useMemo } from 'react';\n\nimport CartAddOnOption from 'components/features/Cart/CartSidebar/CartAddOnOption';\nimport { selectCartOrderOptions } from 'domains/cart_order_options';\nimport { useAppSelector } from 'utils/hooks';\nimport { formatPrice } from 'utils/common';\n\nimport type { OptionGroupAPIData } from 'domains/option_groups';\n\ntype CartAddOnOptionGroupProps = {\n group: OptionGroupAPIData;\n};\n\nfunction CartAddOnOptionGroup(props: CartAddOnOptionGroupProps) {\n const { group: addOnGroup } = props;\n\n const cartOrderOptions = useAppSelector(selectCartOrderOptions);\n // Can only currently save one order option\n const cartOrderOption = useMemo(\n () => cartOrderOptions && cartOrderOptions[0],\n [cartOrderOptions]\n );\n\n return (\n <div className=\"addon_option\">\n <div className=\"title\">\n <span className=\"addon-name\">{addOnGroup.name}</span>\n {cartOrderOption && cartOrderOption.pricing && (\n <span className=\"price\">{formatPrice(cartOrderOption.pricing.total)}</span>\n )}\n </div>\n <p className=\"desc\">{addOnGroup.tooltip_description}</p>\n <ul className=\"select-list\" id={addOnGroup.uid} data-id={addOnGroup.id}>\n {addOnGroup.options.map((addOnOption) => (\n <CartAddOnOption\n key={addOnOption.id}\n option={addOnOption}\n groupId={addOnGroup.id}\n cartOrderOption={cartOrderOption}\n />\n ))}\n </ul>\n </div>\n );\n}\n\nexport default CartAddOnOptionGroup;\n", "import React, { useMemo } from 'react';\n\nimport { useAppDispatch } from 'utils/hooks';\n\nimport {\n CartOrderOption,\n createCartOrderOption,\n deleteCartOrderOption,\n} from 'domains/cart_order_options';\n\nimport type { OptionAPIData } from 'domains/option_groups';\n\ntype CartAddOnOptionProps = {\n option: OptionAPIData;\n cartOrderOption?: CartOrderOption;\n groupId: number;\n};\n\nfunction CartAddOnOption(props: CartAddOnOptionProps) {\n const { option, cartOrderOption, groupId } = props;\n const dispatch = useAppDispatch();\n\n const savedOrderOption = useMemo(\n () => cartOrderOption?.option_api_id === option.id,\n [(option.id, cartOrderOption)]\n );\n\n function handleOptionSelect(e: React.ChangeEvent<HTMLInputElement>) {\n if (e.target.checked) {\n dispatch(createCartOrderOption.pending(option.id));\n } else if (cartOrderOption) {\n dispatch(deleteCartOrderOption.pending(cartOrderOption.id));\n }\n }\n\n return (\n <li\n className={`order-option-item ${savedOrderOption ? 'selected' : ''}`}\n data-value={option.id}\n >\n <label className=\"order-option-label\">\n {/* <FontAwesomeIcon\n icon={savedOrderOption ? ['far', 'check-square'] : ['far', 'square']}\n size=\"lg\"\n /> */}\n <img src={option.image_url} alt=\"\" />\n {option.name}\n <input\n onChange={handleOptionSelect}\n key={option.id}\n type=\"checkbox\"\n name={groupId.toString()}\n className=\"screen-reader-text\"\n checked={!!savedOrderOption}\n />\n </label>\n </li>\n );\n}\n\nexport default CartAddOnOption;\n", "export { default } from './EditorPage';\n", "import React, { useMemo } from 'react';\n\nimport { useAppSelector } from 'utils/hooks';\n\nimport ui from 'domains/ui';\n\nimport activeEditor from 'domains/active_editor';\n\nimport Sidebar from 'components/features/ProductSidebar';\nimport PassiveTextTools from 'components/features/TextToolSidebar';\nimport Stage from 'components/features/Stage';\nimport Toolbar from 'components/features/Toolbar';\nimport Shuffler from 'components/features/Shuffler';\nimport EditorSidebar from 'components/features/EditorSidebar';\nimport ImageCollectionsController from 'components/features/ImageCollections/';\nimport Photos from 'components/features/Photos';\n\nfunction EditorPage() {\n const activeCatalog = useAppSelector(activeEditor.selectors.catalog);\n const activeSubcatalog = useAppSelector(activeEditor.selectors.subcatalog);\n const showEditorSidebar = useAppSelector(ui.selectors.showEditorSidebar);\n const showMobileUserPhotos = useAppSelector(ui.selectors.showMobileUserPhotos);\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n const sidebarComponent = useAppSelector(ui.selectors.sidebarComponent);\n const hasAdvancedFilters = useAppSelector(activeEditor.selectors.hasAdvancedFilters);\n\n const shouldShowEditorSidebar = useMemo(() => {\n return !hasMobileNavigation || (hasMobileNavigation && showEditorSidebar);\n }, [hasMobileNavigation, showEditorSidebar]);\n\n const shouldShowMobilePhotos = useMemo(() => {\n return hasMobileNavigation && showMobileUserPhotos;\n }, [showMobileUserPhotos, hasMobileNavigation]);\n\n return (\n <React.Fragment>\n {sidebarComponent === 'TextTools' && <PassiveTextTools />}\n {sidebarComponent === 'default' && <Sidebar />}\n <div className={`wos_stage ${shouldShowMobilePhotos ? 'show-mobile-photos' : ''}`}>\n {activeCatalog && activeSubcatalog && (\n <React.Fragment>\n <Stage />\n {shouldShowEditorSidebar && <EditorSidebar />}\n <div className=\"wos_stage_lower\">\n <Toolbar />\n <div className=\"user_photos_container\">\n <ImageCollectionsController />\n <Photos />\n </div>\n </div>\n </React.Fragment>\n )}\n </div>\n {hasAdvancedFilters && <Shuffler />}\n </React.Fragment>\n );\n}\n\nexport default EditorPage;\n", "import ProductSidebar from './ProductSidebar';\n\nexport default ProductSidebar;\n", "import React, { useMemo, useRef, useState } from 'react';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport Button from 'components/shared/Button';\nimport Spinner from 'components/shared/Spinner';\n\nimport Flyout from 'components/features/ProductSidebar/Flyout';\nimport Subcatalogs from 'components/features/ProductSidebar/Subcatalogs';\nimport Products from 'components/features/ProductSidebar/Products';\nimport OptionGroup from 'components/features/ProductSidebar/OptionGroup';\nimport ChangeCatalogButton from 'components/features/ProductSidebar/ChangeCatalogButton';\nimport MobileNavigation from 'components/features/MobileNavigation';\n\nimport AddToCartWrapper from 'components/features/AddToCart/AddToCartWrapper';\n\nimport {\n selectOptionsLoaded,\n selectOptionsLoading,\n selectSubcatalogsLoaded,\n selectSubcatalogsLoading,\n} from 'selectors/loading_states';\nimport ui from 'domains/ui';\nimport activeEditor from 'domains/active_editor';\n\nfunction ProductSidebar() {\n const [flyoutOpen, setFlyoutOpen] = useState(false);\n const [leaveFlyoutOpen, setLeaveFlyoutOpen] = useState(false);\n\n const sidebarRef = useRef(null);\n\n const dispatch = useAppDispatch();\n const activeCatalog = useAppSelector(activeEditor.selectors.catalog);\n const activeSubcatalog = useAppSelector(activeEditor.selectors.subcatalog);\n const subcatalogsLoading = useAppSelector(selectSubcatalogsLoading);\n const subcatalogsLoaded = useAppSelector(selectSubcatalogsLoaded);\n const optionsLoading = useAppSelector(selectOptionsLoading);\n const optionsLoaded = useAppSelector(selectOptionsLoaded);\n const optionGroups = useAppSelector(activeEditor.selectors.optionGroups);\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n const showMobileSidebar = useAppSelector(ui.selectors.showMobileSidebar);\n\n const subcatalogName = useMemo(\n () => (activeSubcatalog ? activeSubcatalog.name : null),\n [activeSubcatalog]\n );\n\n const subcatalogLabel = useMemo(\n () => (activeCatalog ? activeCatalog.label_ui : null),\n [activeCatalog]\n );\n\n const subcatalogDescription = useMemo(\n () => (activeSubcatalog ? activeSubcatalog.tooltip_description : null),\n [activeSubcatalog]\n );\n\n const heading = useMemo(() => {\n return subcatalogLabel || subcatalogName || '';\n }, [subcatalogName, subcatalogLabel]);\n\n if (!activeCatalog || !activeSubcatalog) return null;\n return (\n <div className={`sidebar-wrapper ${showMobileSidebar ? 'reveal' : ''}`}>\n <ChangeCatalogButton />\n <MobileNavigation />\n <div ref={sidebarRef} className={`sidebar${hasMobileNavigation ? ' mobile' : ''}`}>\n <div className=\"sidebar_content\">\n {subcatalogsLoading && (\n <div className=\"spinner_container\">\n <Spinner size=\"100\" />\n </div>\n )}\n {subcatalogsLoaded && (\n <React.Fragment>\n <Flyout\n heading={heading}\n subheading={subcatalogLabel ? subcatalogName : null}\n description={subcatalogDescription}\n setFlyoutOpen={setFlyoutOpen}\n flyoutOpen={flyoutOpen}\n leaveFlyoutOpen={leaveFlyoutOpen}\n >\n <Subcatalogs\n setFlyoutOpen={setFlyoutOpen}\n setLeaveFlyoutOpen={setLeaveFlyoutOpen}\n />\n </Flyout>\n <Products />\n </React.Fragment>\n )}\n {optionsLoading && (\n <div className=\"spinner_container\">\n <Spinner size=\"50\" />\n </div>\n )}\n {optionsLoaded &&\n optionGroups.map((optionGroup) => (\n <OptionGroup key={optionGroup.id} optionGroup={optionGroup} />\n ))}\n </div>\n <Button\n type=\"icon\"\n icon=\"times\"\n className=\"close\"\n size=\"2x\"\n appearance=\"light\"\n a11yText=\"Close Menu\"\n onClick={() => dispatch(ui.actions.setShowMobileSidebar(false))}\n />\n </div>\n <AddToCartWrapper />\n </div>\n );\n}\n\nexport default ProductSidebar;\n", "import React from 'react';\n\nimport { useAppSelector } from 'utils/hooks';\nimport { renderModal } from 'utils/modal_util';\n\nimport ui from 'domains/ui';\n\nimport Button from 'components/shared/Button';\n\nimport type { MouseEventHandler, TouchEventHandler } from 'react';\n\nlet menuDelay: number | undefined;\nconst menuDelayTimer = 200;\n\ntype FlyoutProps = {\n children: React.ReactNode;\n flyoutOpen: boolean;\n heading: string;\n setFlyoutOpen: (set: boolean) => void;\n subheading: string | null;\n description: string | null;\n leaveFlyoutOpen?: boolean;\n};\ntype FlyoutHeaderProps = Pick<\n FlyoutProps,\n 'heading' | 'subheading' | 'description' | 'setFlyoutOpen' | 'leaveFlyoutOpen'\n>;\ntype FlyoutMenuProps = Pick<FlyoutProps, 'children' | 'setFlyoutOpen' | 'leaveFlyoutOpen'>;\n\ntype FlyoutHeaderAttrs = {\n onTouchEnd?: TouchEventHandler;\n onMouseEnter?: MouseEventHandler;\n onMouseLeave?: MouseEventHandler;\n};\n\nexport default function Flyout(props: FlyoutProps) {\n const { children, flyoutOpen, ...rest } = props;\n\n return (\n <React.Fragment>\n <FlyoutHeader {...rest} />\n {flyoutOpen && renderModal(<FlyoutMenu {...rest}>{children}</FlyoutMenu>)}\n </React.Fragment>\n );\n}\n\nfunction FlyoutHeader(props: FlyoutHeaderProps) {\n const { heading, subheading, description, setFlyoutOpen, leaveFlyoutOpen } = props;\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n\n function handleIconClick() {\n if (hasMobileNavigation) {\n setFlyoutOpen(true);\n }\n }\n\n const atts: FlyoutHeaderAttrs = !hasMobileNavigation\n ? {\n onTouchEnd: (e) => {\n window.clearTimeout(menuDelay);\n setFlyoutOpen(true);\n e.stopPropagation();\n e.preventDefault();\n },\n onMouseEnter: () => {\n window.clearTimeout(menuDelay);\n setFlyoutOpen(true);\n },\n onMouseLeave: () => {\n if (!leaveFlyoutOpen) {\n menuDelay = window.setTimeout(() => {\n setFlyoutOpen(false);\n }, menuDelayTimer);\n }\n },\n }\n : {};\n\n return (\n <div className=\"flyout_header\" {...atts}>\n <div className=\"sidebar-section sidebar_header_wrapper\">\n <header id=\"sidebar-header\" className=\"sidebar-section__header sidebar_header\">\n <h1 dangerouslySetInnerHTML={{ __html: heading }} />\n {subheading && <p>{subheading}</p>}\n {description && <p>{description}</p>}\n </header>\n\n <Button\n className=\"flyout_icon\"\n type=\"icon\"\n icon=\"angle-right\"\n size=\"2x\"\n appearance=\"light\"\n onClick={handleIconClick}\n />\n </div>\n </div>\n );\n}\n\nfunction FlyoutMenu(props: FlyoutMenuProps) {\n const { children, setFlyoutOpen, leaveFlyoutOpen } = props;\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n\n const atts = !hasMobileNavigation\n ? {\n onMouseEnter: () => {\n window.clearTimeout(menuDelay);\n setFlyoutOpen(true);\n },\n onMouseLeave: () => {\n if (!leaveFlyoutOpen) {\n menuDelay = window.setTimeout(() => {\n setFlyoutOpen(false);\n }, menuDelayTimer);\n }\n },\n }\n : {};\n\n return (\n <div className=\"sidebar-flyoutmenu\" {...atts}>\n <div className=\"FlyoutMenu__header\">\n <Button\n type=\"icon\"\n icon=\"times\"\n onClick={() => setFlyoutOpen(false)}\n appearance=\"light\"\n a11yText=\"Close subcatalog menu\"\n size=\"lg\"\n />\n </div>\n {children}\n </div>\n );\n}\n", "import React, { useMemo, useState } from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { renderModal } from 'utils/modal_util';\n\nimport SubcatalogButtonContainer from 'components/features/ProductSidebar/SubcatalogButtonContainer';\nimport TooltipModalContent from 'components/shared/TooltipModalContent';\nimport Modal from 'components/shared/Modal';\n\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\n\nimport type { TooltipModalContentProps } from 'components/shared/TooltipModalContent/TooltipModalContent';\n\ntype SubcatalogsProps = {\n setFlyoutOpen: (set: boolean) => void;\n setLeaveFlyoutOpen: (set: boolean) => void;\n};\n\nfunction Subcatalogs({ setFlyoutOpen, setLeaveFlyoutOpen }: SubcatalogsProps) {\n const [tooltipDialog, setTooltipDialog] = useState<React.ReactNode>(null);\n\n const dispatch = useAppDispatch();\n const activeCatalog = useAppSelector(activeEditor.selectors.catalog);\n const subcatalogs = useAppSelector(activeEditor.selectors.subcatalogs);\n\n const tooltipModalData: TooltipModalContentProps[] = useMemo(() => {\n return subcatalogs.map((subcatalog) => {\n const {\n id,\n parent_id: parentId,\n read_only: readOnly,\n tooltip_title: tooltipTitle,\n tooltip_description: tooltipDescription,\n tooltip_img: tooltipImg,\n tooltip_url: tooltipUrl,\n } = subcatalog;\n\n return {\n id,\n parentId,\n readOnly,\n tooltipTitle,\n tooltipDescription,\n tooltipImg,\n tooltipUrl,\n handleTooltipSelect,\n };\n });\n }, [subcatalogs]);\n\n function handleModalClose() {\n setTooltipDialog(null);\n }\n\n function handleTooltipSelect(id: number) {\n dispatch(canvases.actions.changeActiveCanvasConfig.subcatalog(id));\n setFlyoutOpen(false);\n setLeaveFlyoutOpen(false);\n handleModalClose();\n }\n\n function handleOpenTooltipModal(id: number, clickedButtonId: string) {\n const pageStartIndex = tooltipModalData.findIndex((subcatalog) => subcatalog.id === id);\n\n setTooltipDialog(\n <Modal\n labelledBy=\"subcatalog-tooltip-modal\"\n lastFocusedElementId={clickedButtonId}\n onClose={handleModalClose}\n title={activeCatalog?.name || ''}\n pageStartIndex={pageStartIndex}\n >\n {tooltipModalData.map((subcatalog) => (\n <TooltipModalContent key={subcatalog.id} {...subcatalog} />\n ))}\n </Modal>\n );\n }\n\n return (\n <React.Fragment>\n <ul className=\"subcatalogs\">\n {subcatalogs.map((subcatalog, index) => {\n return (\n <li key={subcatalog.id}>\n <SubcatalogButtonContainer\n subcatalog={subcatalog}\n handleOpenTooltipModal={handleOpenTooltipModal}\n setLeaveFlyoutOpen={setLeaveFlyoutOpen}\n setFlyoutOpen={setFlyoutOpen}\n />\n </li>\n );\n })}\n </ul>\n\n {tooltipDialog && renderModal(tooltipDialog)}\n </React.Fragment>\n );\n}\n\nexport default Subcatalogs;\n", "import React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport sanitize from 'utils/sanitize';\nimport { renderModal } from 'utils/modal_util';\n\nimport Button from 'components/shared/Button';\nimport Alert from 'components/shared/Alert';\nimport Modal from 'components/shared/Modal';\nimport SubcatalogButton from 'components/shared/SubcatalogButton';\n\nimport canvases from 'domains/canvases';\nimport activeEditor from 'domains/active_editor';\n\nimport type { SubcatalogAPIData } from 'types/catalog_types';\n\ntype SubcatalogButtonContainerProps = {\n subcatalog: SubcatalogAPIData;\n handleOpenTooltipModal: (id: number, triggerId: string) => void;\n setLeaveFlyoutOpen: (set: boolean) => void;\n setFlyoutOpen: (set: boolean) => void;\n};\n\nfunction SubcatalogButtonContainer({\n subcatalog,\n handleOpenTooltipModal = () => {},\n setLeaveFlyoutOpen,\n setFlyoutOpen,\n}: SubcatalogButtonContainerProps) {\n const { name, image_url: imageUrl, id } = subcatalog;\n\n const rememberPreferenceChecked = useRef(false);\n\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n const [showAddOrChangeDialog, setShowAddOrChangeDialog] = useState(false);\n\n const dispatch = useAppDispatch();\n const canvasIds = useAppSelector(canvases.selectors.selectIds);\n const activeCanvasId = useAppSelector(activeEditor.selectors.canvasId);\n const subcatalogs = useAppSelector(activeEditor.selectors.subcatalogs);\n const activeProduct = useAppSelector(activeEditor.selectors.product);\n const activeSubcatalogId = useAppSelector(activeEditor.selectors.subcatalogId);\n\n const isSelected = id === activeSubcatalogId;\n\n const preferenceLocalStorageKey = 'subcatalogCustomArrangementPreference';\n const [arrangementPreference, setArrangementPreference] = useState<'new' | 'replace' | null>(\n null\n );\n\n useEffect(() => {\n const userSetPreference = localStorage.getItem(\n preferenceLocalStorageKey\n ) as typeof arrangementPreference;\n setArrangementPreference(userSetPreference);\n }, []);\n\n const supportedArrangementSubcatalogs = useMemo(() => {\n return subcatalogs.filter((s) => s.arrangement);\n }, [subcatalogs]);\n\n const subcatalogNameListItems = useMemo(() => {\n return supportedArrangementSubcatalogs.map((s) => <li key={s.id}>{s.name}</li>);\n }, [supportedArrangementSubcatalogs]);\n\n const hasCustomArrangement = useMemo(() => {\n return supportedArrangementSubcatalogs.find((s) => s.id === id);\n }, [supportedArrangementSubcatalogs, id]);\n\n const hasCustomArrangementNotice = useMemo(() => {\n return !hasCustomArrangement && canvasIds.length > 1;\n }, [hasCustomArrangement, canvasIds]);\n\n function handleRememberSelection(e: React.ChangeEvent<HTMLInputElement>) {\n rememberPreferenceChecked.current = e.target.checked;\n }\n\n const alertMessageHTML = (\n <React.Fragment>\n <span>Changing to {name} will remove your custom arrangement.</span>\n <span>Products that can be added to your arrangement include:</span>\n <ul>{subcatalogNameListItems}</ul>\n <span>Do you want to continue?</span>\n </React.Fragment>\n );\n\n const addOrChangeButtons = (\n <React.Fragment>\n <Button\n onClick={() => {\n handleModalButtonSelect('new');\n }}\n >\n Add New\n </Button>\n <Button\n onClick={() => {\n handleModalButtonSelect('replace');\n }}\n >\n Replace Current\n </Button>\n <Button\n type=\"cancel\"\n onClick={() => {\n handleModalButtonSelect('cancel');\n }}\n >\n Cancel\n </Button>\n </React.Fragment>\n );\n\n function handleSubcatalogClick() {\n if (canvasIds.length === 1) {\n // one canvas, just change subcatalog\n handleChangeSubcatalog(false);\n } else if (!hasCustomArrangement) {\n // subcatalog doesn't support custom arrangement\n setShowConfirmDialog(true);\n } else if (!arrangementPreference) {\n // user did not check 'remember preference'\n setShowAddOrChangeDialog(true);\n setLeaveFlyoutOpen(true);\n } else if (arrangementPreference === 'new') {\n // user preference to add new product\n handleChangeSubcatalog(true);\n } else if (arrangementPreference === 'replace') {\n // user preference to replace current product\n handleChangeSubcatalog(false);\n }\n }\n\n function handleChangeSubcatalog(shouldAddNew: boolean) {\n if (shouldAddNew) {\n dispatch(canvases.actions.duplicateActiveCanvas());\n }\n\n setShowAddOrChangeDialog(false);\n setFlyoutOpen(false);\n dispatch(canvases.actions.changeActiveCanvasConfig.subcatalog(id));\n }\n\n function handleModalButtonSelect(button: 'new' | 'replace' | 'cancel') {\n if (rememberPreferenceChecked.current) {\n localStorage.setItem(preferenceLocalStorageKey, button);\n }\n\n if (button === 'cancel') {\n setShowAddOrChangeDialog(false);\n } else {\n handleChangeSubcatalog(button === 'new');\n }\n\n setLeaveFlyoutOpen(false);\n setFlyoutOpen(false);\n }\n\n function openTooltipModal(clickedButtonId: string) {\n setLeaveFlyoutOpen(true);\n handleOpenTooltipModal(id, clickedButtonId);\n }\n\n return (\n <React.Fragment>\n <SubcatalogButton\n title={sanitize(name)}\n id={id}\n imageUrl={imageUrl}\n isSelected={isSelected}\n hasCustomArrangementNotice={hasCustomArrangementNotice}\n hasTooltip={!!subcatalog.tooltip_title}\n openTooltipModal={openTooltipModal}\n onClick={handleSubcatalogClick}\n />\n\n {showAddOrChangeDialog &&\n renderModal(\n <Modal\n labelledBy=\"add-new-change-product-modal\"\n title=\"Add New Product or Replace Current\"\n lastFocusedElementId=\"sidebar-header\"\n onClose={() => setShowAddOrChangeDialog(false)}\n primaryFooterGroup={addOrChangeButtons}\n >\n <div className=\"arrangement-subcatalog-modal\">\n <p>\n Do you want to add a new <strong>{name}</strong> product or replace your currently\n selected product <strong>({activeProduct?.name_long})</strong>?\n </p>\n\n <div>\n <input\n id=\"remember-change-selection\"\n type=\"checkbox\"\n onChange={handleRememberSelection}\n />\n <label htmlFor=\"remember-change-selection\">Remember this selection</label>\n </div>\n </div>\n </Modal>\n )}\n\n {showConfirmDialog &&\n renderModal(\n <Alert\n title=\"Confirm Selection\"\n labelledBy=\"confirm-change-subcatalog-alert\"\n lastFocusedElementId=\"sidebar-header\"\n messageHTML={alertMessageHTML}\n onContinue={() => {\n setShowConfirmDialog(false);\n setFlyoutOpen(false);\n dispatch(canvases.actions.resetToSingleCanvas(activeCanvasId));\n dispatch(canvases.actions.changeActiveCanvasConfig.subcatalog(id));\n }}\n onClose={() => setShowConfirmDialog(false)}\n onCancel={() => setShowConfirmDialog(false)}\n />\n )}\n </React.Fragment>\n );\n}\n\nexport default SubcatalogButtonContainer;\n", "import SubcatalogButton from './SubcatalogButton';\n\nexport default SubcatalogButton;\n", "import React from 'react';\n\nimport Button from 'components/shared/Button';\n\nexport type SubcatalogButtonProps = {\n title: string;\n id: number;\n imageUrl: string;\n isSelected: boolean;\n onClick: () => void;\n hasCustomArrangementNotice: boolean;\n hasTooltip: boolean;\n openTooltipModal: (id: string) => void;\n};\n\nfunction SubcatalogButton({\n title,\n id,\n imageUrl,\n isSelected,\n onClick,\n hasTooltip,\n openTooltipModal,\n hasCustomArrangementNotice,\n}: SubcatalogButtonProps) {\n const subcatalogButtonId = `subcatalog-button-${id}`;\n\n return (\n <div className=\"subcatalog-buttons-tooltip\">\n <button\n id={subcatalogButtonId}\n onClick={onClick}\n className={`subcatalog-button ${isSelected ? 'selected' : ''}`}\n >\n <div className=\"subcatalog-button-heading\">\n <img src={imageUrl} width=\"100\" height=\"75\" alt={title} />\n <div className=\"subcatalog-button-title\">\n {title}\n {hasCustomArrangementNotice && (\n <span className=\"arrangement-notice\">\n This product is not available with your custom arrangement\n </span>\n )}\n </div>\n </div>\n </button>\n {hasTooltip && (\n <Button\n type=\"icon\"\n icon=\"info-circle\"\n a11yText=\"Learn More\"\n appearance=\"light\"\n className=\"tooltip-button\"\n onClick={() => openTooltipModal(subcatalogButtonId)}\n />\n )}\n </div>\n );\n}\n\nexport default SubcatalogButton;\n", "import TooltipModalContent from './TooltipModalContent';\n\nexport default TooltipModalContent;\n", "import React from 'react';\nimport sanitize from 'utils/sanitize';\n\nimport Button from 'components/shared/Button';\nimport Link from 'components/shared/Link';\n\nexport type TooltipModalContentProps = {\n id: number;\n readOnly: boolean;\n tooltipTitle: string;\n tooltipDescription: string;\n tooltipUrl: string;\n tooltipImg: string;\n parentId: number | null;\n handleTooltipSelect: (id: number, parentId: number | null) => void;\n};\n\nfunction TooltipModalContent({\n id,\n readOnly,\n tooltipTitle,\n tooltipDescription,\n tooltipUrl,\n tooltipImg,\n parentId = null,\n handleTooltipSelect = () => {},\n}: TooltipModalContentProps) {\n return (\n <div className=\"panel_tooltip\">\n <div className=\"panel_tooltip_inner\">\n <div className=\"panel_tooltip_content\">\n <h4 className=\"panel_tooltip_header\">{sanitize(tooltipTitle)}</h4>\n <p\n className=\"panel_tooltip_description\"\n dangerouslySetInnerHTML={{ __html: tooltipDescription }}\n />\n <p>\n {!readOnly && (\n <Button type=\"outline\" onClick={() => handleTooltipSelect(id, parentId)}>\n Select this option\n </Button>\n )}\n {tooltipUrl && <Link href={tooltipUrl}>Learn More</Link>}\n </p>\n </div>\n {tooltipImg && (\n <div className=\"panel_tooltip_img\">\n <img src={tooltipImg} alt={sanitize(tooltipTitle)} />\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport default TooltipModalContent;\n", "import React, { useMemo, useState } from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { renderModal } from 'utils/modal_util';\n\nimport TooltipModalContent from 'components/shared/TooltipModalContent';\nimport Modal from 'components/shared/Modal';\nimport Button from 'components/shared/Button';\nimport Filter from 'components/shared/Filter';\n\nimport CustomSizePicker from 'components/features/ProductSidebar/CustomSizePickerContainer';\nimport ProductButton from 'components/features/ProductSidebar/ProductButtonContainer';\n\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\nimport productsModule from 'domains/products';\nimport ui from 'domains/ui';\n\nimport type { TooltipModalContentProps } from 'components/shared/TooltipModalContent/TooltipModalContent';\n\nfunction Products() {\n const [tooltipDialog, setTooltipDialog] = useState<React.ReactNode>(null);\n\n const dispatch = useAppDispatch();\n const products = useAppSelector(activeEditor.selectors.filteredProducts);\n const activeSubcatalog = useAppSelector(activeEditor.selectors.subcatalog);\n const isCustomProduct = useAppSelector(activeEditor.selectors.isCustomProduct);\n const productFilters = useAppSelector(activeEditor.selectors.subcatalogFilters);\n const productFilter = useAppSelector(productsModule.selectors.appliedFilter);\n const showSidebarProducts = useAppSelector(ui.selectors.showSidebarProducts);\n const hasAdvancedFilters = useAppSelector(activeEditor.selectors.hasAdvancedFilters);\n\n if (!activeSubcatalog) return null;\n\n const { label_ui: productLabel } = activeSubcatalog;\n\n const handleTooltipSelect = (productId: number) => {\n dispatch(canvases.actions.changeActiveCanvasConfig.product(productId));\n setTooltipDialog(null);\n };\n\n const tooltipModalData: TooltipModalContentProps[] = useMemo(() => {\n return products.map((product) => {\n const {\n id,\n read_only: readOnly,\n tooltip_title: tooltipTitle,\n tooltip_description: tooltipDescription,\n tooltip_img: tooltipImg,\n tooltip_url: tooltipUrl,\n } = product;\n\n return {\n id,\n readOnly,\n tooltipTitle,\n tooltipDescription,\n tooltipImg,\n tooltipUrl,\n parentId: null,\n handleTooltipSelect,\n };\n });\n }, [products]);\n\n function handleOpenTooltipModal(productId: number, clickedProductButtonId: string) {\n const pageStartIndex = tooltipModalData.findIndex((product) => product.id === productId);\n\n setTooltipDialog(\n <Modal\n labelledBy=\"product-tooltip-modal\"\n lastFocusedElementId={clickedProductButtonId}\n onClose={() => setTooltipDialog(null)}\n title={activeSubcatalog?.label_ui || ''}\n pageStartIndex={pageStartIndex}\n >\n {tooltipModalData.map((product) => (\n <TooltipModalContent key={product.id} {...product} />\n ))}\n </Modal>\n );\n }\n\n function handleSelectFilter(filter: string) {\n dispatch(productsModule.actions.setProductFilter(filter));\n }\n\n function handleShowAdvancedFilters() {\n dispatch(ui.actions.setShowAdvancedFilters(true));\n }\n\n return (\n <React.Fragment>\n <div className={`sidebar-section${!showSidebarProducts ? ' hide-products' : ''}`}>\n <header className=\"sidebar-section__header\">\n {productLabel ? <h2>{productLabel}</h2> : <h2>Size</h2>}\n {hasAdvancedFilters && (\n <div className=\"advanced-filter-button\">\n <Button type=\"bare\" onClick={handleShowAdvancedFilters}>\n Filter Designs <FontAwesomeIcon icon=\"sliders-h\" size=\"lg\" />\n </Button>\n </div>\n )}\n </header>\n <Filter\n filterUI={activeSubcatalog.filter_ui}\n filterDefault={isCustomProduct ? 'Custom' : productFilter || 'All'}\n filters={productFilters}\n filterType=\"products\"\n handleSelectFilter={handleSelectFilter}\n />\n {isCustomProduct && <CustomSizePicker />}\n {!isCustomProduct && (\n <ul className=\"products\">\n {products.map((product) => (\n <li className=\"product\" key={product.id}>\n <ProductButton id={product.id} handleOpenTooltipModal={handleOpenTooltipModal} />\n </li>\n ))}\n </ul>\n )}\n </div>\n\n {tooltipDialog && renderModal(tooltipDialog)}\n </React.Fragment>\n );\n}\n\nexport default Products;\n", "import Filter from './Filter';\n\nexport default Filter;\n", "import React, { useMemo } from 'react';\n\nimport FilterButtons from './FilterButtons';\nimport FilterSelectInput from './FilterSelectInput';\n\nimport type { BaseAPIData } from 'types/catalog_types';\n\nexport type FilterType = 'options' | 'products';\n\nexport type FilterProps = {\n /** string specifying how to display filter */\n filterUI: BaseAPIData['filter_ui'];\n /** Array of possible filters to select */\n filters: string[];\n /** The currently selected filter */\n filterDefault: string;\n handleSelectFilter: (filter: string) => void;\n /** String to use for a11y text describing the filter controls */\n filterType: FilterType;\n};\n\nfunction Filter({ filterUI, filterDefault, filterType, handleSelectFilter, filters }: FilterProps) {\n const realGroups = useMemo(() => filters.filter((group) => group !== 'All'), [filters]);\n\n const showFilters = useMemo(() => {\n return filterUI !== 'none' && realGroups.length > 0 && filterDefault.length > 0;\n }, [realGroups, filterUI, filterDefault]);\n\n if (!showFilters) return null;\n\n // Not entirely sure why we don't use if (filterUi === 'dropdown'), but not going to mess with that since it's working\n if (filterUI === '') {\n return (\n <FilterButtons\n filters={filters}\n filter={filterDefault}\n handleSelectFilter={handleSelectFilter}\n />\n );\n }\n\n return (\n <FilterSelectInput\n filters={filters}\n filter={filterDefault}\n handleSelectFilter={handleSelectFilter}\n filterType={filterType}\n />\n );\n}\n\nexport default Filter;\n", "/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/anchor-is-valid */\n// Reevaluate the elements breaking these rules when there's time\nimport React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Button from 'components/shared/Button';\n\nimport { realNumber } from 'utils/math_util';\n\ntype FilterButtonsProps = {\n filters: string[];\n filter: string;\n handleSelectFilter: (filter: string) => void;\n};\n\nfunction FilterButtons({ filters, filter, handleSelectFilter }: FilterButtonsProps) {\n const elemRef = useRef<HTMLDivElement>(null);\n\n const [elem, setElem] = useState<HTMLDivElement | null>(null);\n const [scrollPanel, setScrollPanel] = useState<HTMLDivElement | null>(null);\n const [prevArrow, setPrevArrow] = useState<HTMLAnchorElement | null>(null);\n const [nextArrow, setNextArrow] = useState<HTMLAnchorElement | null>(null);\n\n const [elementWidth, setElementWidth] = useState<number | null>(null);\n const [scrollWidth, setScrollWidth] = useState<number | null>(null);\n\n const [endVal, setEndVal] = useState<string | null>(null);\n\n const [scrollPos, setScrollPos] = useState<number>(0);\n const [scrollStyle, setScrollStyle] = useState({});\n\n const [showScrollArrows, setShowScrollArrows] = useState(false);\n\n useEffect(() => {\n if (filters.length > 0 && elemRef.current) {\n setElem(elemRef.current);\n }\n }, []);\n\n useEffect(() => {\n if (elem) {\n setElementWidth(elem.offsetWidth);\n setScrollPanel(elem.querySelector<HTMLDivElement>('.scroll-panel'));\n }\n }, [elem]);\n\n useEffect(() => {\n function handleElemResize() {\n if (elemRef.current) {\n setElem(elemRef.current);\n }\n }\n\n if (scrollPanel) {\n const scrollPanelOffsetWidth = Math.round(\n Array.from(scrollPanel.children).reduce((w, c) => {\n const elemstyle = window.getComputedStyle(c);\n return (\n w +\n parseFloat(elemstyle.getPropertyValue('width')) +\n parseFloat(elemstyle.getPropertyValue('margin-left')) +\n parseFloat(elemstyle.getPropertyValue('margin-right'))\n );\n }, 0)\n );\n\n setScrollWidth(scrollPanelOffsetWidth);\n let styles = window.getComputedStyle(scrollPanel);\n setEndVal(styles.getPropertyValue('--translateTo'));\n\n scrollPanel.addEventListener('animationend', () => {\n styles = window.getComputedStyle(scrollPanel);\n setEndVal(styles.getPropertyValue('--translateTo'));\n\n scrollPanel.classList.remove('goscroll');\n });\n\n const elemObserver = new MutationObserver(handleElemResize);\n\n elemObserver.observe(scrollPanel, { attributes: true });\n }\n }, [scrollPanel]);\n\n useEffect(() => {\n const hasGoodValues = endVal && realNumber(parseInt(endVal)) && scrollWidth && elementWidth;\n if (hasGoodValues && scrollPanel) {\n setScrollStyle({ '--translateTo': endVal, '--translateFrom': endVal, '--pinPos': endVal });\n\n if (prevArrow) {\n prevArrow.classList.toggle('limit', parseInt(endVal, 10) === 0);\n }\n\n if (nextArrow) {\n nextArrow.classList.toggle(\n 'limit',\n parseInt(endVal, 10) <= (scrollWidth - (elementWidth - 20)) * -1\n );\n }\n }\n }, [endVal]);\n\n useEffect(() => {\n if (elementWidth && scrollWidth) {\n setShowScrollArrows(elementWidth < scrollWidth);\n }\n }, [elementWidth, scrollWidth]);\n\n useEffect(() => {\n if (elem) {\n setPrevArrow(elem.querySelector<HTMLAnchorElement>('.scroll-arrow.prev'));\n setNextArrow(elem.querySelector<HTMLAnchorElement>('.scroll-arrow.next'));\n elem.classList.toggle('sidescroll', showScrollArrows);\n elem.classList.toggle('buttons', !showScrollArrows);\n }\n\n if (scrollPanel) {\n if (!showScrollArrows) {\n scrollPanel.classList.remove('goscroll');\n setScrollStyle({ '--translateTo': 0, '--translateFrom': 0, '--pinPos': 0 });\n }\n }\n }, [elem, showScrollArrows]);\n\n // TODO: Refactor this functionality\n // When converting this component to TS, I just did what was necessary to get it running\n // It wasn't working totally right before this, as I think the logic is missing some\n // pieces. I don't think 20 is the right padding on the element, and the last item\n // in the scroll panel is cut off when trying to lock the _first_ element to\n // the left side of the panel. We should be locking the _next_ element to the end\n // of the panel when moving to the next item, and doing this logic only when moving\n // to the previous element\n function handleScrollArrowClick(e: React.MouseEvent) {\n if (!scrollPanel || !elementWidth || !scrollWidth) return;\n\n const { currentTarget } = e;\n const dir = currentTarget.classList.contains('prev') ? 1 : -1;\n setScrollPos(Math.max(scrollPos + 1 * dir * -1, 0));\n\n const translateFrom =\n parseInt(window.getComputedStyle(scrollPanel).getPropertyValue('--translateFrom')) * -1;\n\n const filterButtons = Array.from(scrollPanel.children) as HTMLElement[];\n\n const nextFirstButton =\n filterButtons.find((button) => {\n return (\n (dir < 0 &&\n button.offsetLeft < translateFrom + (elementWidth - 20) * (dir * -1) &&\n button.offsetLeft + button.offsetWidth >\n translateFrom + (elementWidth - 20) * (dir * -1)) ||\n (dir > 0 && button.offsetLeft > translateFrom + (elementWidth - 20) * (dir * -1))\n );\n }) ||\n filterButtons.find((button, i, buttons) => {\n const prevButton = i > 0 ? buttons[i - 1] : undefined;\n return (\n (dir < 0 &&\n button.offsetLeft > translateFrom + (elementWidth - 20) * (dir * -1) &&\n prevButton &&\n prevButton.offsetLeft + prevButton.offsetWidth <=\n translateFrom + (elementWidth - 20) * (dir * -1)) ||\n (dir > 0 && button.offsetLeft > translateFrom + (elementWidth - 20) * (dir * -1))\n );\n });\n\n const translateLimit = (scrollWidth - (elementWidth - 20)) * -1;\n const translateTo = Math.min(\n Math.max(\n ((nextFirstButton && nextFirstButton.offsetLeft) || 0) * -1,\n Math.min(translateLimit, 0)\n ),\n 0\n );\n\n scrollPanel.style.setProperty('--translateTo', `${translateTo}px`);\n scrollPanel.classList.add('goscroll');\n }\n\n const checkFilterGroups = useMemo(() => {\n return filters.filter((group) => group !== 'All');\n }, [filters]);\n\n return (\n <div\n ref={elemRef}\n className={`product-filter-buttons ${checkFilterGroups.length > 0 ? 'sidescroll' : ''}`}\n >\n {showScrollArrows && checkFilterGroups.length > 0 && (\n <a className=\"scroll-arrow prev limit\" onClick={handleScrollArrowClick}>\n <FontAwesomeIcon icon=\"caret-left\" />\n </a>\n )}\n {checkFilterGroups.length > 0 && (\n <div className=\"scroll-wrapper\">\n <div className=\"scroll-panel\" data-scroll-pos={scrollPos} style={scrollStyle}>\n {filters.length > 1 &&\n filters.map((filterGroup) => (\n <Button\n key={filterGroup}\n type=\"bare\"\n className={`${filter === filterGroup ? 'active' : null}`}\n onClick={() => handleSelectFilter(filterGroup)}\n >\n {filterGroup}\n </Button>\n ))}\n </div>\n </div>\n )}\n {showScrollArrows && checkFilterGroups.length > 0 && (\n <a className=\"scroll-arrow next\" onClick={handleScrollArrowClick}>\n <FontAwesomeIcon icon=\"caret-right\" />\n </a>\n )}\n </div>\n );\n}\n\nexport default FilterButtons;\n", "import React from 'react';\n\nimport type { FilterType } from './Filter';\n\ntype FilterSelectInputProps = {\n filters: string[];\n filter: string;\n filterType: FilterType;\n handleSelectFilter: (filter: string) => void;\n};\n\nfunction FilterSelectInput({\n filters,\n filter,\n filterType,\n handleSelectFilter,\n}: FilterSelectInputProps) {\n const handleFilterSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n const { options, selectedIndex } = e.target;\n const filterValue = options[selectedIndex].value;\n\n handleSelectFilter(filterValue);\n };\n\n return (\n <div style={{ marginBottom: '1rem', whiteSpace: 'pre', overflowX: 'auto' }}>\n <label>\n <span className=\"screen-reader-text\">Filter displayed {filterType}</span>\n <select style={{ width: '100%' }} value={filter} onChange={handleFilterSelectChange}>\n {filters.map((group) => (\n <option key={group} value={group}>\n {group}\n </option>\n ))}\n </select>\n </label>\n </div>\n );\n}\n\nexport default FilterSelectInput;\n", "import React, { useMemo, useCallback } from 'react';\nimport CustomSizePicker from 'components/shared/CustomSizePicker';\n\nimport ui from 'domains/ui';\nimport canvases from 'domains/canvases';\nimport activeEditor from 'domains/active_editor';\nimport {\n selectCatalogsLoaded,\n selectCustomPriceError,\n selectCustomPriceLoading,\n selectOptionsLoaded,\n selectSubcatalogsLoaded,\n} from 'selectors/loading_states';\n\nimport { validCustomOptions } from 'utils/type_guards';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport type { Dimension } from 'types/common_types';\n\nfunction CustomSizePickerContainer() {\n const dispatch = useAppDispatch();\n const catalogsLoaded = useAppSelector(selectCatalogsLoaded);\n const subcatalogsLoaded = useAppSelector(selectSubcatalogsLoaded);\n const optionsLoaded = useAppSelector(selectOptionsLoaded);\n const activeCanvasCustomSizes = useAppSelector(activeEditor.selectors.customSize);\n const customPriceLoading = useAppSelector(selectCustomPriceLoading);\n const customPrice = useAppSelector(activeEditor.selectors.customPrice);\n const customPriceError = useAppSelector(selectCustomPriceError);\n const customPriceErrorMessage = useAppSelector(ui.selectors.customSizeErrors);\n const product = useAppSelector(activeEditor.selectors.product);\n\n const isLoading = useMemo(() => {\n return !catalogsLoaded || !subcatalogsLoaded || !optionsLoaded;\n }, [catalogsLoaded, subcatalogsLoaded, optionsLoaded]);\n\n const setCustomSize = useCallback(\n (payload: Partial<Dimension>) => {\n dispatch(canvases.actions.changeActiveCanvasConfig.size(payload));\n },\n [dispatch]\n );\n\n if (!product || !product.custom_options || !validCustomOptions(product.custom_options))\n return null;\n\n return (\n <CustomSizePicker\n isLoading={isLoading}\n customPriceLoading={customPriceLoading}\n activeProductCustomOptions={product.custom_options}\n customHeight={activeCanvasCustomSizes.height}\n customWidth={activeCanvasCustomSizes.width}\n customPrice={customPrice}\n showPrice={!customPriceError}\n errorMessage={customPriceErrorMessage}\n setCustomSize={setCustomSize}\n />\n );\n}\n\nexport default CustomSizePickerContainer;\n", "import React from 'react';\nimport sanitize from 'utils/sanitize';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport ProductButton from 'components/shared/ProductButton';\n\nimport activeEditor from 'domains/active_editor';\nimport products from 'domains/products';\nimport canvases from 'domains/canvases';\n\nconst productButtonClickThrottle: { lastrun?: number; delay: number } = {\n lastrun: undefined,\n delay: 1000,\n};\n\ntype ProductButtonContainerProps = {\n id: number;\n handleOpenTooltipModal: (id: number, triggerId: string) => void;\n};\n\nfunction ProductButtonContainer({\n id,\n handleOpenTooltipModal = () => {},\n}: ProductButtonContainerProps) {\n const dispatch = useAppDispatch();\n const activeProductId = useAppSelector(activeEditor.selectors.productId);\n const product = useAppSelector((state) => products.selectors.selectById(state, id));\n\n if (!product) return null;\n\n const imageUrl = product.image_url;\n\n const isSelected = id === activeProductId;\n\n function openTooltipModal(clickedProductButtonId: string) {\n handleOpenTooltipModal(id, clickedProductButtonId);\n }\n\n function handleSelectProduct() {\n const now = new Date().getTime();\n if (\n activeProductId !== id &&\n (!productButtonClickThrottle.lastrun ||\n now - productButtonClickThrottle.lastrun >= productButtonClickThrottle.delay)\n ) {\n productButtonClickThrottle.lastrun = now;\n dispatch(canvases.actions.changeActiveCanvasConfig.product(id));\n }\n }\n\n return (\n <ProductButton\n id={id}\n title={sanitize(product.name)}\n price={product.price}\n imageUrl={imageUrl}\n isSelected={isSelected}\n hasTooltip={!!product.tooltip_title}\n onClickTooltip={openTooltipModal}\n onClick={handleSelectProduct}\n />\n );\n}\nexport default ProductButtonContainer;\n", "import ProductButton from './ProductButton';\n\nexport default ProductButton;\n", "import React, { useMemo } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { formatMoney } from 'accounting';\n\nexport type ProductButtonProps = {\n id: number;\n title: string;\n price: string;\n isSelected: boolean;\n onClick: React.MouseEventHandler;\n imageUrl: string;\n hasTooltip: boolean;\n onClickTooltip: (id: string) => void;\n};\n\nfunction ProductButton({\n title,\n id,\n price,\n isSelected,\n onClick,\n hasTooltip,\n imageUrl,\n onClickTooltip,\n}: ProductButtonProps) {\n const productButtonId = `product-button-${id}`;\n\n return (\n <div className=\"product-button-container\">\n <button\n id={productButtonId}\n className={`product-button ${isSelected ? 'selected' : ''}`}\n onClick={onClick}\n >\n {imageUrl !== '' && <img src={imageUrl} alt={title} />}\n {title !== '' && <span dangerouslySetInnerHTML={{ __html: title }} />}\n {parseFloat(price) > 0 && <span className=\"price\">{formatMoney(price)}</span>}\n </button>\n {hasTooltip && (\n <button className=\"tooltip-button\" onClick={() => onClickTooltip(productButtonId)}>\n <FontAwesomeIcon icon=\"info-circle\" />\n <span className=\"screen-reader-text\">Learn More</span>\n </button>\n )}\n </div>\n );\n}\n\nexport default ProductButton;\n", "import React, { useMemo, useState } from 'react';\nimport { formatMoney } from 'accounting';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { renderModal } from 'utils/modal_util';\n\nimport Modal from 'components/shared/Modal';\nimport TooltipModalContent from 'components/shared/TooltipModalContent';\nimport OptionButton from 'components/features/ProductSidebar/OptionButtonContainer';\nimport Filter from 'components/shared/Filter';\n\nimport optionGroups from 'domains/option_groups';\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\n\nimport { selectOptionPrices } from 'selectors/prices';\nimport { selectCustomPriceLoading } from 'selectors/loading_states';\n\nimport type { OptionGroupAPIData } from 'domains/option_groups';\nimport type { TooltipModalContentProps } from 'components/shared/TooltipModalContent/TooltipModalContent';\nimport type { Pair } from 'types/common_types';\n\ntype OptionGroupProps = {\n optionGroup: OptionGroupAPIData;\n};\n\nfunction OptionGroup({ optionGroup }: OptionGroupProps) {\n const { name, id: optionGroupId } = optionGroup;\n const [tooltipDialog, setTooltipDialog] = useState<React.ReactNode>(null);\n\n const dispatch = useAppDispatch();\n const allOptionGroupFilters = useAppSelector(activeEditor.selectors.optionGroupFilters);\n const disabledOptions = useAppSelector(activeEditor.selectors.disabledOptions);\n const appliedOptionGroupFilters = useAppSelector(optionGroups.selectors.appliedFilters);\n const customPriceLoading = useAppSelector(selectCustomPriceLoading);\n const optionPrices = useAppSelector(selectOptionPrices);\n\n const optionGroupPrice = useMemo(() => {\n if (!optionPrices[optionGroupId] || optionPrices[optionGroupId] <= 0) {\n return null;\n }\n\n return formatMoney(optionPrices[optionGroupId]);\n }, [optionPrices, optionGroupId]);\n\n const currentFilter = useMemo(() => {\n return appliedOptionGroupFilters[optionGroup.id];\n }, [appliedOptionGroupFilters, optionGroup.id]);\n\n const handleTooltipSelect = (id: number, groupId: number) => {\n const optionPair: Pair<number, number> = [groupId, id];\n dispatch(canvases.actions.changeActiveCanvasConfig.options({ options: [optionPair] }));\n setTooltipDialog(null);\n };\n\n const options = useMemo(() => {\n return optionGroup.options.filter((option) => {\n return (\n (!optionGroup.filter_default && !option.filter_group) ||\n !currentFilter ||\n currentFilter === 'All' ||\n option.filter_group.split(',').find((fg) => fg === currentFilter)\n );\n });\n }, [currentFilter, optionGroup]);\n\n const sectionClass = useMemo(() => {\n if (optionGroup.hidden) {\n return 'hidden';\n }\n if (optionGroup.options.length === 0) {\n return 'disclaimer';\n }\n\n return '';\n }, [optionGroup]);\n\n const tooltipModalData: TooltipModalContentProps[] = useMemo(() => {\n return options.map((option) => {\n const {\n id,\n tooltip_title: tooltipTitle,\n tooltip_description: tooltipDescription,\n tooltip_img: tooltipImg,\n tooltip_url: tooltipUrl,\n } = option;\n\n return {\n id,\n parentId: optionGroup.id,\n readOnly: !!disabledOptions[id] || option.read_only || !!option.unavailable,\n tooltipTitle,\n tooltipDescription,\n tooltipImg,\n tooltipUrl,\n handleTooltipSelect,\n };\n });\n }, [options]);\n\n function handleOpenTooltipModal(optionId: number, clickedOptionButtonId: string) {\n // we pass option uid as the id to tooltip data\n const pageStartIndex = tooltipModalData.findIndex((option) => option.id === optionId);\n setTooltipDialog(\n <Modal\n labelledBy=\"option-tooltip-modal\"\n lastFocusedElementId={clickedOptionButtonId}\n onClose={() => setTooltipDialog(null)}\n title={optionGroup.name}\n pageStartIndex={pageStartIndex}\n >\n {tooltipModalData.map((option) => (\n <TooltipModalContent key={option.id} {...option} />\n ))}\n </Modal>\n );\n }\n\n function handleSelectFilter(filter: string) {\n dispatch(optionGroups.actions.setAppliedOptionGroupFilters({ [optionGroupId]: filter }));\n }\n\n return (\n <React.Fragment>\n <div className={`sidebar-section option-section ${sectionClass}`}>\n <header className=\"sidebar-section__header flex\">\n {optionGroup.options.length === 0 && <FontAwesomeIcon icon=\"exclamation-triangle\" />}\n <h2 dangerouslySetInnerHTML={{ __html: name }} />\n {optionGroupPrice && (\n <div className={`price ${customPriceLoading ? 'is-dirty' : ''}`}>\n {optionGroupPrice}\n </div>\n )}\n </header>\n <Filter\n filterUI={optionGroup.filter_default ? optionGroup.filter_ui : 'none'}\n filterDefault={appliedOptionGroupFilters[optionGroup.id] || 'All'}\n filters={allOptionGroupFilters[optionGroup.id] || []}\n filterType=\"options\"\n handleSelectFilter={handleSelectFilter}\n />\n <div className=\"option-group\">\n {options.map((option) => {\n return (\n <div className=\"option\" key={option.id}>\n <OptionButton\n key={option.id}\n option={option}\n optionGroup={optionGroup}\n handleOpenTooltipModal={handleOpenTooltipModal}\n />\n </div>\n );\n })}\n </div>\n </div>\n\n {tooltipDialog && renderModal(tooltipDialog)}\n </React.Fragment>\n );\n}\n\nexport default OptionGroup;\n", "import React, { useMemo } from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport OptionButton from 'components/shared/OptionButton';\nimport {\n selectCatalogsLoaded,\n selectOptionsLoaded,\n selectSubcatalogsLoaded,\n} from 'selectors/loading_states';\n\nimport activeEditor from 'domains/active_editor';\nimport optionGroups from 'domains/option_groups';\nimport canvases from 'domains/canvases';\n\nimport type { OptionGroupAPIData, OptionAPIData } from 'domains/option_groups';\nimport type { OptionalPair, Pair } from 'types/common_types';\n\nconst optionButtonThrottle: { lastrun?: number; delay: number } = {\n lastrun: undefined,\n delay: 500,\n};\n\ntype OptionButtonContainerProps = {\n option: OptionAPIData;\n optionGroup: OptionGroupAPIData;\n handleOpenTooltipModal: (id: number, targetId: string) => void;\n};\n\nfunction OptionButtonContainer({\n option,\n optionGroup,\n handleOpenTooltipModal = () => {},\n}: OptionButtonContainerProps) {\n const dispatch = useAppDispatch();\n const catalogsLoaded = useAppSelector(selectCatalogsLoaded);\n const subcatalogsLoaded = useAppSelector(selectSubcatalogsLoaded);\n const optionsLoaded = useAppSelector(selectOptionsLoaded);\n const disabledOptions = useAppSelector(activeEditor.selectors.disabledOptions);\n const activeOptionConfig = useAppSelector(activeEditor.selectors.optionConfig);\n\n const isCustomProduct = useAppSelector(activeEditor.selectors.isCustomProduct);\n const activeCanvasCustomSizes = useAppSelector(activeEditor.selectors.customSize);\n\n const customHeight = useMemo(\n () => activeCanvasCustomSizes.height,\n [activeCanvasCustomSizes.height]\n );\n const customWidth = useMemo(() => activeCanvasCustomSizes.width, [activeCanvasCustomSizes.width]);\n\n const isLoading = useMemo(() => {\n return !catalogsLoaded || !subcatalogsLoaded || !optionsLoaded;\n }, [catalogsLoaded, subcatalogsLoaded, optionsLoaded]);\n\n const isSelected =\n !!activeOptionConfig[optionGroup.id] && activeOptionConfig[optionGroup.id] === option.id;\n const isRequired = optionGroup.required;\n\n function openTooltipModal(clickedOptionButtonId: string) {\n handleOpenTooltipModal(option.id, clickedOptionButtonId);\n }\n\n const disabled =\n disabledOptions[option.id] ||\n (isCustomProduct &&\n customHeight &&\n customWidth &&\n option.custom_options &&\n optionGroups.utils.customSizeOptionIsDisabled(\n customHeight,\n customWidth,\n option.custom_options\n ));\n\n const disabledTooltipDisplay = useMemo(() => {\n let str = '';\n\n if (disabled) {\n const customSize =\n isCustomProduct && customWidth && customHeight ? `${customWidth} x ${customHeight}` : '';\n str = `Not available with ${disabled.by || customSize}`;\n }\n\n if (option.unavailable) {\n str = 'This option is currently unavailable';\n }\n\n return str;\n }, [disabled, option, isCustomProduct, customHeight, customWidth]);\n\n // Until this is defined in the data, we need to cast it as a bool if undefined\n const unavailable = useMemo(() => !!option.unavailable, [option]);\n\n function handleClickOption(e: React.MouseEvent<HTMLButtonElement>) {\n const now = new Date().getTime();\n const { lastrun, delay } = optionButtonThrottle;\n if (!lastrun || now - lastrun >= delay) {\n optionButtonThrottle.lastrun = now;\n if (!isSelected) {\n const optionPair: Pair<number, number> = [optionGroup.id, option.id];\n dispatch(canvases.actions.changeActiveCanvasConfig.options({ options: [optionPair] }));\n } else if (!isRequired) {\n const optionPair: OptionalPair<number, number> = [optionGroup.id, undefined];\n dispatch(canvases.actions.changeActiveCanvasConfig.options({ options: [optionPair] }));\n e.currentTarget.blur();\n }\n } else {\n e.currentTarget.blur();\n e.preventDefault();\n }\n }\n return (\n <OptionButton\n option={option}\n isDisabled={!!disabled || option.read_only || isLoading || unavailable}\n disabledBy={disabledTooltipDisplay}\n isSelected={isSelected}\n onClick={handleClickOption}\n onClickTooltip={openTooltipModal}\n />\n );\n}\n\nexport default OptionButtonContainer;\n", "import OptionButton from './OptionButton';\n\nexport default OptionButton;\n", "import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Tippy from '@tippyjs/react';\n\nimport sanitize from 'utils/sanitize';\n\nexport type OptionButtonOptionData = {\n id: number;\n image_url: string;\n name: string;\n tooltip_title: string;\n};\n\nexport type OptionButtonProps = {\n option: OptionButtonOptionData;\n isSelected: boolean;\n isDisabled: boolean;\n onClick: React.MouseEventHandler;\n disabledBy: string;\n onClickTooltip: (id: string) => void;\n};\n\nfunction OptionButton({\n isSelected,\n isDisabled,\n onClick,\n option,\n disabledBy,\n onClickTooltip,\n}: OptionButtonProps) {\n const { id, image_url: imageUrl, name } = option;\n const sanitizedName = sanitize(name);\n const hasTooltip = !!option.tooltip_title;\n\n const buttonId = `option-button-${id}`;\n\n const container = (\n <div>\n <div className=\"option-tooltip-buttons\">\n <button\n id={buttonId}\n className={`option-button ${isSelected ? 'selected' : ''}`}\n disabled={isDisabled}\n onClick={onClick}\n >\n {imageUrl !== '' && <img src={imageUrl} alt={sanitizedName} />}\n {imageUrl === '' && (\n <span\n className=\"option-button-title\"\n dangerouslySetInnerHTML={{ __html: name }}\n title={sanitizedName}\n />\n )}\n </button>\n {hasTooltip && (\n <button className=\"tooltip-button\" onClick={() => onClickTooltip(buttonId)}>\n <FontAwesomeIcon icon=\"info-circle\" />\n <span className=\"screen-reader-text\">Learn More</span>\n </button>\n )}\n </div>\n {imageUrl !== '' && (\n <span\n className=\"option-button-title\"\n dangerouslySetInnerHTML={{ __html: name }}\n title={sanitizedName}\n />\n )}\n </div>\n );\n\n if (isDisabled) {\n const disabledContent = <span dangerouslySetInnerHTML={{ __html: disabledBy }} />;\n return (\n <Tippy content={<p>{disabledContent}</p>} theme=\"light\" allowHTML>\n {container}\n </Tippy>\n );\n }\n\n return container;\n}\n\nexport default OptionButton;\n", "import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { useAppSelector } from 'utils/hooks';\n\nimport Link from 'components/shared/Link';\n\nimport activeEditor from 'domains/active_editor';\n\nfunction ChangeCatalogButton({ linkText = 'Change Product Line' }) {\n const catalog = useAppSelector(activeEditor.selectors.catalog);\n\n const name = catalog ? catalog.name : '';\n\n return (\n <div className=\"catalog_navigation_container\">\n <div className=\"catalog-navigation\">\n <Link className=\"change-catalog-button button link\" href=\"/\">\n <h1>{name}</h1>\n <span>{linkText}</span>\n </Link>\n </div>\n <div className=\"mobile-catalog-navigation\">\n <Link href=\"/\" a11yText={linkText}>\n <FontAwesomeIcon icon=\"chevron-left\" />\n </Link>\n <h1>{name}</h1>\n </div>\n </div>\n );\n}\n\nexport default ChangeCatalogButton;\n", "import MobileNavigation from './MobileNavigation';\n\nexport default MobileNavigation;\n", "import React, { useEffect } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Button from 'components/shared/Button/Button';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport activeEditor from 'domains/active_editor';\nimport products from 'domains/products';\nimport ui from 'domains/ui';\n\nfunction findMobileNavigationElement() {\n // This is found in ChangeCatalogButton.tsx\n const mobileNavElem = document.querySelector(\n '.mobile-catalog-navigation'\n ) as HTMLDivElement | null;\n return !!mobileNavElem && !!mobileNavElem.offsetParent;\n}\n\nfunction MobileNavigation() {\n const dispatch = useAppDispatch();\n const activeProduct = useAppSelector(activeEditor.selectors.product);\n const showMobileSidebar = useAppSelector(ui.selectors.showMobileSidebar);\n const showSidebarProducts = useAppSelector(ui.selectors.showSidebarProducts);\n const showMobileUserPhotos = useAppSelector(ui.selectors.showMobileUserPhotos);\n const showEditorSidebar = useAppSelector(ui.selectors.showEditorSidebar);\n\n function handleWindowResizeForMobileNavigation() {\n dispatch(ui.actions.setHasMobileNavigation(findMobileNavigationElement()));\n }\n\n useEffect(() => {\n dispatch(ui.actions.setHasMobileNavigation(findMobileNavigationElement()));\n window.addEventListener('resize', handleWindowResizeForMobileNavigation);\n }, []);\n\n useEffect(() => {\n if (activeProduct && !products.utils.isCustomSizeProduct(activeProduct)) {\n dispatch(ui.actions.setShowMobileSidebar(false));\n }\n }, [activeProduct, dispatch]);\n\n return (\n <ul className=\"mobile-navigation-menu\">\n <li>\n <Button\n type=\"bare\"\n className={showMobileSidebar && showSidebarProducts ? 'active' : ''}\n onClick={() => {\n dispatch(ui.actions.mobileNavigationProducts());\n }}\n >\n <FontAwesomeIcon icon={['far', 'copy']} size=\"2x\" />\n Sizes\n </Button>\n </li>\n <li>\n <Button\n type=\"bare\"\n className={showMobileSidebar && !showSidebarProducts ? 'active' : ''}\n onClick={() => dispatch(ui.actions.mobileNavigationOptions())}\n >\n <FontAwesomeIcon icon=\"check-circle\" size=\"2x\" />\n Options\n </Button>\n </li>\n <li>\n <Button\n type=\"bare\"\n className={showMobileUserPhotos ? 'active' : ''}\n onClick={() => dispatch(ui.actions.mobileNavigationPhotos())}\n >\n <FontAwesomeIcon icon=\"image\" size=\"2x\" />\n Photos\n </Button>\n </li>\n <li>\n <Button\n type=\"bare\"\n className={!showMobileSidebar && !showMobileUserPhotos ? 'active' : ''}\n onClick={() => dispatch(ui.actions.mobileNavigationEdit())}\n >\n <FontAwesomeIcon icon=\"pencil-alt\" size=\"2x\" />\n Edit\n </Button>\n </li>\n <li className=\"editor-sidebar-trigger\">\n <Button\n type=\"icon\"\n icon={showEditorSidebar ? 'times' : 'ellipsis-vertical'}\n size=\"2x\"\n onClick={() => dispatch(ui.actions.setShowEditorSidebar(!showEditorSidebar))}\n />\n </li>\n </ul>\n );\n}\n\nexport default MobileNavigation;\n", "/* eslint-disable import/no-extraneous-dependencies */\nimport React, { ChangeEvent, useMemo } from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport { countBy } from 'lodash';\n\nimport Tippy from '@tippyjs/react';\n\nimport multiphotos from 'domains/multiphotos';\nimport cartModule from 'domains/cart';\nimport products from 'domains/products';\nimport optionGroups from 'domains/option_groups';\nimport ui from 'domains/ui';\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\nimport cartProductCreator from 'domains/cart_product_creator';\n\nimport Button from 'components/shared/Button';\nimport MultiCanvasAddToCart from './MultiCanvasAddToCart';\nimport MultiPhotoAddToCart from './MultiPhotoAddToCart';\nimport StandardAddToCart from './StandardAddToCart';\nimport { hasFullyConfiguredCanvas, notNull } from 'utils/type_guards';\nimport { hasAllRequiredOptionGroups } from 'utils/option_util';\nimport {\n selectCustomPriceError,\n selectCustomPriceLoading,\n selectOptionsLoading,\n selectSubcatalogsLoading,\n} from 'selectors/loading_states';\n\nexport type SharedAddToCartProps = {\n quantity: number;\n disable: boolean;\n};\n\nfunction AddToCartWrapper() {\n const dispatch = useAppDispatch();\n const activeProduct = useAppSelector(activeEditor.selectors.product);\n const allCanvasProductIds = useAppSelector(canvases.selectors.allProductIds);\n const productsById = useAppSelector(products.selectors.selectEntities);\n const multiPhotoIds = useAppSelector(multiphotos.selectors.selectIds);\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n const addToCartQuantity = useAppSelector(cartProductCreator.selectors.quantity);\n\n const status = useAppSelector(cartModule.selectors.status);\n const isProcessing = useAppSelector(cartProductCreator.selectors.isProcessing);\n const canvasesLocked = useAppSelector(canvases.selectors.locked);\n const subcatalogsLoading = useAppSelector(selectSubcatalogsLoading);\n const optionsLoading = useAppSelector(selectOptionsLoading);\n const customPriceLoading = useAppSelector(selectCustomPriceLoading);\n const hasCustomPriceError = useAppSelector(selectCustomPriceError);\n\n const allCanvases = useAppSelector(canvases.selectors.selectAll);\n const allOptionGroupsById = useAppSelector(optionGroups.selectors.selectEntities);\n const allOptionGroupsByTemplateId = useAppSelector(optionGroups.selectors.allByTemplateId);\n\n const allCanvasesReady = useMemo(() => {\n return (\n allCanvases.length > 0 &&\n allCanvases.every((c) => {\n if (!hasFullyConfiguredCanvas(c)) return false;\n\n const optionGroupIds = allOptionGroupsByTemplateId[c.product];\n if (!optionGroupIds) return false;\n\n const optionGroups = optionGroupIds.map((id) => allOptionGroupsById[id]).filter(notNull);\n return hasAllRequiredOptionGroups(c.options, optionGroups);\n })\n );\n }, [allCanvases, allOptionGroupsById, allOptionGroupsByTemplateId]);\n\n const hasCartErrorStatus = useMemo(() => status === 'error', [status]);\n\n const disable = useMemo(\n () =>\n isProcessing ||\n canvasesLocked ||\n subcatalogsLoading ||\n optionsLoading ||\n customPriceLoading ||\n hasCustomPriceError ||\n !allCanvasesReady ||\n addToCartQuantity < 1,\n [\n allCanvasesReady,\n addToCartQuantity,\n canvasesLocked,\n isProcessing,\n subcatalogsLoading,\n optionsLoading,\n customPriceLoading,\n hasCustomPriceError,\n ]\n );\n\n const showMultiPhotosButton = useMemo(() => {\n return !hasCartErrorStatus && multiPhotoIds.length > 0;\n }, [multiPhotoIds, hasCartErrorStatus]);\n\n const showMultiCanvasButton = useMemo(() => {\n return !hasCartErrorStatus && multiPhotoIds.length === 0 && allCanvases.length > 1;\n }, [multiPhotoIds, allCanvases, hasCartErrorStatus]);\n\n const showStandardButton = useMemo(() => {\n return !hasCartErrorStatus && multiPhotoIds.length === 0 && allCanvases.length === 1;\n }, [multiPhotoIds, allCanvases, hasCartErrorStatus]);\n\n const multiCanvasProductNames = useMemo(() => {\n const productNames = allCanvasProductIds.map((id) => {\n return id && !!productsById[id] ? productsById[id]?.name_long : '';\n });\n\n const countedNames = countBy(productNames);\n\n return Object.keys(countedNames).map((name) => {\n const count = countedNames[name] === 1 ? '' : `(${countedNames[name]})`;\n return (\n <p key={name}>\n {name} {count}\n </p>\n );\n });\n }, [allCanvasProductIds, productsById]);\n\n const productDescription = useMemo(\n () => (activeProduct ? activeProduct.name_long : ''),\n [activeProduct]\n );\n\n function setQuantity(e: ChangeEvent<HTMLInputElement>) {\n const { target } = e;\n dispatch(cartProductCreator.actions.updateQuantity(target.value));\n }\n\n return (\n <div className=\"add_to_cart\">\n <div className=\"cart_button_wrap\">\n <div className=\"quantity_select\">\n <div className=\"quantity_select_inner\">\n <label htmlFor=\"quantity_select\" className={`${addToCartQuantity < 1 ? 'error' : ''}`}>\n Qty\n </label>\n <input\n type=\"number\"\n min=\"1\"\n value={addToCartQuantity}\n id=\"quantity_select\"\n required\n onChange={setQuantity}\n />\n </div>\n </div>\n {showMultiCanvasButton && (\n <div className=\"cart_button_product_desc\">\n <Tippy content={multiCanvasProductNames} theme=\"light\">\n <span>Custom Arrangement</span>\n </Tippy>\n </div>\n )}\n {!showMultiCanvasButton && !hasMobileNavigation && (\n <div\n className=\"cart_button_product_desc\"\n dangerouslySetInnerHTML={{ __html: productDescription }}\n />\n )}\n\n {!showMultiCanvasButton && hasMobileNavigation && (\n // Label is contained in the dangerous html\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n <button\n className=\"mobile-cart-description cart_button_product_desc\"\n onClick={() => dispatch(ui.actions.setShowMobileSidebar(true))}\n dangerouslySetInnerHTML={{ __html: productDescription }}\n />\n )}\n </div>\n <div className=\"cart_button_wrap\">\n {hasCartErrorStatus && (\n <Button\n type=\"cornered\"\n className=\"cart_button error\"\n id=\"add-to-cart-button\"\n onClick={() => {}}\n disabled\n >\n Unavailable\n </Button>\n )}\n {showMultiPhotosButton && (\n <MultiPhotoAddToCart disable={disable} quantity={addToCartQuantity} />\n )}\n {showMultiCanvasButton && (\n <MultiCanvasAddToCart disable={disable} quantity={addToCartQuantity} />\n )}\n {showStandardButton && <StandardAddToCart disable={disable} quantity={addToCartQuantity} />}\n </div>\n </div>\n );\n}\n\nexport default AddToCartWrapper;\n", "import React from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport Button from 'components/shared/Button';\nimport Spinner from 'components/shared/Spinner';\n\nimport canvases from 'domains/canvases';\nimport cartProductCreator from 'domains/cart_product_creator';\nimport crops from 'domains/crops';\n\nimport { selectPriceTotal } from 'selectors/prices';\nimport { selectCartPhotos } from 'selectors/cart_photos';\n\nimport type { SharedAddToCartProps } from './AddToCartWrapper';\n\nfunction MultiCanvasAddToCart(props: SharedAddToCartProps) {\n const { quantity, disable } = props;\n\n const dispatch = useAppDispatch();\n const canvasIds = useAppSelector(canvases.selectors.selectIds);\n const total = useAppSelector(selectPriceTotal);\n const potentialCropIds = useAppSelector(crops.selectors.potentialCropIds);\n const cartPhotos = useAppSelector(selectCartPhotos);\n const isProcessing = useAppSelector(cartProductCreator.selectors.isProcessing);\n\n function handleAddToCartClick() {\n dispatch(cartProductCreator.actions.addToCart.pending('standard'));\n }\n\n const cropsNotReady = potentialCropIds.length !== cartPhotos.length;\n\n return (\n <Button\n type=\"cornered\"\n className=\"cart_button\"\n onClick={handleAddToCartClick}\n disabled={disable || cropsNotReady}\n >\n {!isProcessing && (\n <span>\n <span>Add {canvasIds.length * quantity} items to cart</span>\n <span className=\"price\">| ${(total * quantity).toFixed(2)}</span>\n </span>\n )}\n\n {isProcessing && <Spinner />}\n </Button>\n );\n}\n\nexport default MultiCanvasAddToCart;\n", "import { createSelector } from '@reduxjs/toolkit';\nimport canvases from 'domains/canvases';\nimport cropsModule from 'domains/crops';\nimport multiphotos from 'domains/multiphotos';\nimport photosModule from 'domains/photos';\nimport products from 'domains/products';\nimport activeEditor from 'domains/active_editor';\nimport { buildCartCropData } from 'utils/crop_data';\nimport { notNull, validCrop, validDimension } from 'utils/type_guards';\nimport { selectDefaultPPI } from 'selectors/ppi';\nimport { calculateBoundDimension } from 'utils/bounds_util';\nimport { orientationAndRatioPercentage } from 'utils/math_util';\nimport { fitImageToNode } from 'utils/pan_util';\nimport { ImageFilter } from 'types/photo_types';\n\n/**\n * @deprecated\n */\nexport const selectCartPhotos = createSelector(\n [\n cropsModule.selectors.selectAll,\n photosModule.selectors.selectEntities,\n products.selectors.selectEntities,\n canvases.selectors.selectEntities,\n ],\n (crops, photosById, productsById, canvasesById) => {\n return crops\n .map((crop) => {\n if (!crop.photoLoaded) return null;\n\n const { canvasId, nodeUid } = cropsModule.utils.parseCropId(crop.id);\n const photo = photosById[crop.photoId];\n const productId = canvasesById[canvasId]?.product;\n\n if (!photo || !productId || !validCrop(crop)) return null;\n\n // Find the real id for this crop's node uid\n const node = productsById[productId]?.nodes.find((n) => n.uid === nodeUid);\n if (!node) return null;\n\n const cartCrop = buildCartCropData(crop, photo, node.id);\n\n // - Include the canvasId to identify the correct cart photos in add to cart\n // - Reused for arrangement crops, so include the nodeUid for restoring the correct crop\n return { canvasId, nodeUid, cartCrop };\n })\n .filter(notNull);\n }\n);\n\n/**\n * @deprecated\n */\nexport const selectMultiPhotoCartPhotos = createSelector(\n [\n multiphotos.selectors.selectAll,\n photosModule.selectors.selectEntities,\n products.selectors.selectEntities,\n activeEditor.selectors.canvas,\n selectDefaultPPI,\n ],\n (multiphotos, photosById, productsById, activeCanvas, ppi) => {\n const withImageDimensions = multiphotos.filter((mp) => mp.photoLoaded);\n\n if (!activeCanvas || !activeCanvas.product || multiphotos.length !== withImageDimensions.length)\n return [];\n\n const product = productsById[activeCanvas.product];\n const node = product?.nodes.find((n) => n.node_type === 1);\n if (!product || !node) return [];\n\n const isCustomProduct = products.utils.isCustomSizeProduct(product);\n\n const [, , w, h] = node.bounds\n .split(',')\n .map((b) => calculateBoundDimension(b, 'image', product, activeCanvas) * ppi);\n\n const { orientation: nodeOrientation } = orientationAndRatioPercentage(w, h);\n\n return multiphotos\n .map((mp) => {\n const photo = photosById[mp.id];\n const imageDimensions = { height: mp.imageHeight, width: mp.imageWidth };\n\n if (!validDimension(imageDimensions)) return null;\n\n const { orientation: imageOrientation } = orientationAndRatioPercentage(\n imageDimensions.width,\n imageDimensions.height\n );\n\n const autoRotate =\n imageOrientation !== 'square' &&\n imageOrientation !== nodeOrientation &&\n product.rotation_allowed &&\n nodeOrientation !== 'square' &&\n !isCustomProduct;\n\n const nodeDimensions = autoRotate ? { width: h, height: w } : { width: w, height: h };\n\n const { fitCropH, fitCropW } = fitImageToNode(nodeDimensions, imageDimensions);\n\n const crop = {\n originalW: imageDimensions.width,\n originalH: imageDimensions.height,\n fitCropH,\n fitCropW,\n cropH: fitCropH,\n cropW: fitCropW,\n cropY: 0.5,\n cropX: 0.5,\n filter: 'original' as ImageFilter['filterType'],\n rotation: 0,\n zoom: 1,\n };\n\n if (!photo || !validCrop(crop)) return null;\n\n const cartCrop = buildCartCropData(crop, photo, node.id);\n\n return cartCrop;\n })\n .filter(notNull);\n }\n);\n", "import React from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport Button from 'components/shared/Button';\nimport Spinner from 'components/shared/Spinner';\n\nimport cartProductCreator from 'domains/cart_product_creator';\nimport multiphotos from 'domains/multiphotos';\n\nimport { selectMultiPhotoCartPhotos } from 'selectors/cart_photos';\nimport { selectPriceTotal } from 'selectors/prices';\n\nimport type { SharedAddToCartProps } from './AddToCartWrapper';\n\nfunction MultiPhotoAddToCart(props: SharedAddToCartProps) {\n const { quantity, disable } = props;\n\n const dispatch = useAppDispatch();\n const multiphotoIds = useAppSelector(multiphotos.selectors.selectIds);\n const cartPhotos = useAppSelector(selectMultiPhotoCartPhotos);\n const isProcessing = useAppSelector(cartProductCreator.selectors.isProcessing);\n const total = useAppSelector(selectPriceTotal);\n\n function handleAddToCartClick() {\n dispatch(cartProductCreator.actions.addToCart.pending('multiphoto'));\n }\n\n const cropsNotReady = cartPhotos.length !== multiphotoIds.length;\n\n return (\n <Button\n type=\"cornered\"\n className=\"cart_button\"\n disabled={disable || cropsNotReady}\n onClick={handleAddToCartClick}\n >\n {!isProcessing && (\n <span>\n <span>Add {quantity * multiphotoIds.length} items to cart</span>\n <span className=\"price\">| ${(total * multiphotoIds.length * quantity).toFixed(2)}</span>\n </span>\n )}\n\n {isProcessing && <Spinner />}\n </Button>\n );\n}\n\nexport default MultiPhotoAddToCart;\n", "import React, { useMemo, useState } from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport Button from 'components/shared/Button';\nimport Alert from 'components/shared/Alert';\nimport Spinner from 'components/shared/Spinner';\n\nimport crops from 'domains/crops';\n\nimport canvases from 'domains/canvases';\nimport activeEditor from 'domains/active_editor';\nimport cartProductCreator from 'domains/cart_product_creator';\n\nimport { selectPriceTotal } from 'selectors/prices';\nimport { selectCartPhotos } from 'selectors/cart_photos';\n\nimport type { SharedAddToCartProps } from './AddToCartWrapper';\n\nfunction StandardAddToCart(props: SharedAddToCartProps) {\n const { disable } = props;\n\n const dispatch = useAppDispatch();\n const canvasIds = useAppSelector(canvases.selectors.selectIds);\n const total = useAppSelector(selectPriceTotal);\n const cartPhotos = useAppSelector(selectCartPhotos);\n const potentialCropIds = useAppSelector(crops.selectors.potentialCropIds);\n const isProcessing = useAppSelector(cartProductCreator.selectors.isProcessing);\n const isCartProduct = useAppSelector(activeEditor.selectors.isCartProduct);\n\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const productNeedsPhoto = useMemo(() => {\n const multinode = canvasIds.length === 1 && potentialCropIds.length > 1;\n return !multinode && potentialCropIds.length > 0;\n }, [potentialCropIds, canvasIds]);\n\n const productHasPhoto = useMemo(() => cartPhotos.length > 0, [cartPhotos]);\n\n function dispatchAddToCart() {\n if (isCartProduct) {\n dispatch(cartProductCreator.actions.saveCartProductEdit.pending());\n } else {\n dispatch(cartProductCreator.actions.addToCart.pending('standard'));\n }\n }\n\n function handleAddToCartClick() {\n if (potentialCropIds.length > cartPhotos.length) {\n setShowConfirmDialog(true);\n } else {\n dispatchAddToCart();\n }\n }\n\n const cropsNotReady =\n (productNeedsPhoto && cartPhotos.length !== potentialCropIds.length) ||\n (productNeedsPhoto && !productHasPhoto);\n\n return (\n <React.Fragment>\n <Button\n type=\"cornered\"\n className=\"cart_button\"\n id=\"add-to-cart-button\"\n onClick={handleAddToCartClick}\n disabled={disable || cropsNotReady}\n >\n {!isProcessing && <span>{isCartProduct ? 'Save' : 'Add to cart'}</span>}\n {!isProcessing && !isCartProduct && <span className=\"price\">| ${total.toFixed(2)}</span>}\n {isProcessing && <Spinner />}\n </Button>\n\n {showConfirmDialog && (\n <Alert\n title=\"Confirm Add to Cart\"\n labelledBy=\"add-to-cart-alert-modal\"\n lastFocusedElementId=\"add-to-cart-button\"\n onClose={() => setShowConfirmDialog(false)}\n onCancel={() => setShowConfirmDialog(false)}\n message={\n 'Product is missing one or more photos.\\nAre you sure you want to add it to the cart?'\n }\n onContinue={() => {\n dispatchAddToCart();\n setShowConfirmDialog(false);\n }}\n />\n )}\n </React.Fragment>\n );\n}\n\nexport default StandardAddToCart;\n", "import TextToolSidebar from './TextToolsSidebar';\n\nexport default TextToolSidebar;\n", "import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport ui from 'domains/ui';\nimport textNodes from 'domains/text_nodes';\n\nimport { useAppDispatch } from 'utils/hooks';\n\nimport PassiveTextTools from './PassiveTextTools';\n\nfunction TextToolSidebar() {\n const dispatch = useAppDispatch();\n\n function handleCloseButtonClick(e: React.MouseEvent) {\n e.preventDefault();\n dispatch(ui.actions.setSidebarComponent('default'));\n dispatch(textNodes.actions.setActiveTextNodeUid(''));\n }\n\n return (\n <div className=\"sidebar-wrapper sidebar-component texttools\">\n <FontAwesomeIcon className=\"close\" icon=\"times\" onClick={handleCloseButtonClick} />\n <PassiveTextTools />\n </div>\n );\n}\n\nexport default TextToolSidebar;\n", "import selectors from './text_nodes.selectors';\nimport slice from './text_nodes.slice';\nimport utils from './text_nodes.utils';\n\nexport * from './text_nodes.types';\n\nconst module = {\n actions: { ...slice.actions },\n selectors,\n utils,\n};\n\nexport { default as slice } from './text_nodes.slice';\nexport default module;\n", "import { combineReducers, compose } from '@reduxjs/toolkit';\n\nimport slice from './text_nodes.slice';\nimport textNodesAdapter from './text_nodes.adapter';\n\nimport { selectDefaultPPI } from 'selectors/ppi';\nimport activeEditor from 'domains/active_editor';\n\nimport utils from './text_nodes.utils';\n\nimport type { RootState } from 'store/wos_store';\nimport type { CartProductTextNodeCreateParams } from 'domains/cart_products';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst defaultSelectors = textNodesAdapter.getSelectors();\n\nconst selectActiveTextNode = (state: LocalState) => state.activeNodeUid;\n\nconst selectTextNodesForCreateCartProduct = (\n state: RootState\n): CartProductTextNodeCreateParams[] => {\n const product = activeEditor.selectors.product(state);\n if (!product) throw new Error('No active product');\n\n return product.nodes.filter(utils.isTextNode).map((node) => {\n const tn = defaultSelectors.selectById(localState(state), node.uid);\n if (!tn) throw new Error('No text node for this ID');\n\n const ppi = selectDefaultPPI(state);\n\n const svgNodeId = `${utils.textNodeSVGBaseId}${node.uid}`;\n let svg = document.getElementById(svgNodeId);\n\n if (!svg) throw new Error('No Text Node Rendered');\n\n // Avoid saving the default \"Text Here\" string as an acual text content string\n const textContent = tn.textContent === utils.textNodeDefaults.textContent ? '' : tn.textContent;\n\n svg = svg.cloneNode(true) as HTMLElement;\n const textElements = svg.querySelectorAll('text');\n textElements.forEach((textElement) => {\n if (textElement.innerHTML === utils.textNodeDefaults.textContent) {\n textElement.innerHTML = '';\n }\n });\n\n return {\n node_id: node.id,\n font_size: tn.fontSize,\n font_family: tn.fontFamily,\n text_color: tn.textColor,\n text_horizontal_alignment: tn.horizontalAlignment,\n text_vertical_alignment: tn.verticalAlignment,\n text_content: textContent,\n auto_fit: tn.autofit,\n ppi,\n svg: svg.outerHTML,\n };\n });\n};\n\nexport default {\n ...textNodesAdapter.getSelectors(localState),\n activeNode: compose(selectActiveTextNode, localState),\n forCreateCartProduct: selectTextNodesForCreateCartProduct,\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport textNodesAdapter from './text_nodes.adapter';\nimport utils from './text_nodes.utils';\n\nimport type {\n TextNodeAutofitAdjustmentPayload,\n TextNodeChangePayload,\n TextNodeEntity,\n TextNodeSliceIntialState,\n} from './text_nodes.types';\n\nconst initialState: TextNodeSliceIntialState = {\n activeNodeUid: null,\n};\n\nconst textNodesSlice = createSlice({\n name: 'textNodes',\n initialState: textNodesAdapter.getInitialState(initialState),\n reducers: {\n changeActiveTextNode(state, { payload }: PayloadAction<Partial<TextNodeEntity>>) {\n if (!state.activeNodeUid) return state;\n\n return textNodesAdapter.updateOne(state, {\n id: state.activeNodeUid,\n changes: payload,\n });\n },\n setActiveTextNodeUid(state, { payload }: PayloadAction<string>) {\n return {\n ...state,\n activeNodeUid: payload,\n };\n },\n initializeTextNodes(state, { payload }: PayloadAction<TextNodeChangePayload[]>) {\n const removals = state.ids.filter((id) => !payload.find((item) => item.id === id));\n\n let update = textNodesAdapter.removeMany(state, removals);\n\n const changes = payload.map((change) => {\n const initialData = state.entities[change.id] || utils.textNodeDefaults;\n return {\n id: change.id,\n ...initialData,\n };\n });\n\n return textNodesAdapter.upsertMany(update, changes);\n },\n addCartProductTextNodes(state, { payload }: PayloadAction<TextNodeEntity[]>) {\n const fresh = textNodesAdapter.getInitialState(initialState);\n return textNodesAdapter.addMany(fresh, payload);\n },\n autofitTextAdjustment(state, { payload }: PayloadAction<TextNodeAutofitAdjustmentPayload>) {\n const adjusting = state.entities[payload.id];\n if (!adjusting) return state;\n\n // TODO: Add font min/max values here\n const fontNum = Math.floor(parseInt(adjusting.fontSize) * payload.adjustment);\n\n return textNodesAdapter.updateOne(state, {\n id: payload.id,\n changes: {\n fontSize: fontNum.toString(),\n },\n });\n },\n },\n});\n\nexport default textNodesSlice;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { TextNodeEntity } from './text_nodes.types';\n\nconst textNodesAdapter = createEntityAdapter<TextNodeEntity>();\n\nexport default textNodesAdapter;\n", "import type { NodeAPIData } from 'types/catalog_types';\nimport type { TextBounds, TextNodeEntity } from './text_nodes.types';\n\nconst [fontMinSize, fontMaxSize] = [4, 300];\n\n/**\n * These are all imported from Google Fonts. For order-api to render the preview,\n * every available font needs included in the build image. So any change to this\n * list *MUST* be reflected there as well.\n */\nconst fontList = [\n 'Anton',\n 'Architects Daughter',\n 'Arvo',\n 'Bree Serif',\n 'Cinzel',\n 'Courgette',\n 'Dancing Script',\n 'Inconsolata',\n 'Indie Flower',\n 'Josefin Slab',\n 'Kalam',\n 'Kaushan Script',\n 'Lobster',\n 'Merriweather',\n 'Noto Serif',\n 'Oswald',\n 'PT Sans',\n 'Pacifico',\n 'Raleway',\n 'Righteous',\n 'Roboto Condensed',\n 'Satisfy',\n 'Shadows Into Light',\n 'Source Sans Pro',\n] as const;\n\nconst textNodeDefaults: Omit<TextNodeEntity, 'id'> = {\n fontSize: '12',\n fontFamily: 'Merriweather',\n horizontalAlignment: 'middle',\n verticalAlignment: 'middle',\n textColor: '#626262',\n textContent: 'Text Here',\n autofit: true,\n};\n\n/** This is used as the id for a text node's svg, followed by the node uid */\nconst textNodeSVGBaseId = 'text_node--svg_';\n\nfunction isTextNode(node: NodeAPIData) {\n return node.node_type === 3;\n}\n\n/**\n * Measures the text nodes within an SVG container\n *\n * If the text is oversized or undersized by more than the limit,\n * return a value for correcting the font size to fit the text\n * within the container\n *\n * If the text is rightsized, return null\n *\n */\nconst FIT_LIMIT = 0.1;\nfunction getTextAutofitCorrection(svg: SVGSVGElement) {\n const { height, width } = svg.getBoundingClientRect();\n const { height: textHeight, width: textWidth } = getSVGTextBounds(svg);\n\n // Break early so we don't divide by 0\n if (textHeight === 0 || textWidth === 0) return null;\n\n const widthRatio = width / textWidth;\n const heightRatio = height / textHeight;\n\n // If either are oversized, correct for that first\n if (widthRatio < 1 || heightRatio < 1) {\n return Math.min(widthRatio, heightRatio);\n }\n\n // By here we know that both are undersized, so figure out\n // which is closest to the correct size\n const closestRatio = Math.min(widthRatio, heightRatio);\n\n // If the closest dimension is within the given limits of the container, consider it rightsized\n if (closestRatio - 1 < FIT_LIMIT) {\n return null;\n }\n\n return closestRatio;\n}\n\nfunction getSVGTextBounds(svg: SVGSVGElement) {\n const textNodes = svg.querySelectorAll('text');\n return Array.from(textNodes).reduce(\n (o: TextBounds, txtNode) => {\n const { width: txtWidth, height: txtHeight } = txtNode.getBoundingClientRect();\n const yAttr = txtNode.getAttribute('y');\n const txtTop = yAttr ? parseFloat(yAttr) : 0;\n let fontHeight = 0;\n\n // This is wrapped in a try-catch due to testing limitations, JSDom does not support svg methods\n // Behaves correctly in browser environment\n try {\n fontHeight = txtNode.getBBox().height;\n } catch {}\n\n return {\n top: o.top || txtTop,\n bottom: txtTop + txtHeight,\n width: Math.max(o.width, txtWidth),\n height: textNodes.length * fontHeight,\n };\n },\n {\n top: undefined,\n bottom: undefined,\n width: 0,\n height: 0,\n }\n );\n}\n\nexport default {\n fontMinSize,\n fontMaxSize,\n fontList,\n textNodeDefaults,\n textNodeSVGBaseId,\n isTextNode,\n getTextAutofitCorrection,\n getSVGTextBounds,\n};\n", "import utils from './text_nodes.utils';\n\nimport type { PickRequired } from 'types/common_types';\n\nexport type TextNodeSliceIntialState = {\n activeNodeUid: string | null;\n};\n\nexport type FontFamily = typeof utils.fontList[number];\n\nexport type TextAlignment = 'start' | 'middle' | 'end';\n\nexport type TextNodeEntity = {\n id: string;\n fontSize: string;\n fontFamily: FontFamily;\n textColor: string;\n horizontalAlignment: TextAlignment;\n verticalAlignment: TextAlignment;\n textContent: string;\n autofit: boolean;\n};\n\nexport type TextNodeChangePayload = PickRequired<Partial<TextNodeEntity>, 'id'>;\nexport type TextNodeAutofitAdjustmentPayload = {\n id: string;\n adjustment: number;\n};\n\n/**\n * Measurement values of text lines within a text node's SVG container\n */\nexport type TextBounds = {\n top?: number;\n bottom?: number;\n width: number;\n height: number;\n};\n", "/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n// Disabling the above rules for now, should readdress to have better accessibility\nimport React from 'react';\n\nimport { useSelector } from 'react-redux';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport textNodes from 'domains/text_nodes';\n\nimport PassiveTextArea from './PassiveTextArea';\nimport TextToolbarSidebarFontSize from './TextToolsFontSize';\nimport TextToolbarSidebarFontFamily from './TextToolsFontFamily';\nimport TextToolbarSidebarColor from './TextToolsColor';\nimport TextToolbarSidebarTextAlign from './TextToolsTextAlign';\nimport TextToolbarSidebarTextVertical from './TextToolsVerticalAlign';\n\nimport type { TextAlignment } from 'domains/text_nodes';\n\nfunction PassiveTextTools() {\n const dispatch = useAppDispatch();\n const activeTextNodeId = useSelector(textNodes.selectors.activeNode);\n if (!activeTextNodeId) {\n return <React.Fragment />;\n }\n const textNode = useAppSelector((state) =>\n textNodes.selectors.selectById(state, activeTextNodeId)\n );\n if (!textNode) {\n return <React.Fragment />;\n }\n const { autofit, fontSize, fontFamily, textColor, horizontalAlignment, verticalAlignment } =\n textNode || {};\n\n return (\n <React.Fragment>\n <div className=\"component-container\">\n <div className=\"texttools__item text\">\n <PassiveTextArea textNode={textNode} />\n </div>\n </div>\n <div className=\"component-details\">\n <div className=\"texttools__item size\">\n <TextToolbarSidebarFontSize\n autofit={!!autofit}\n size={Number(fontSize)}\n autofitCheck={(v) => {\n dispatch(textNodes.actions.changeActiveTextNode({ autofit: v }));\n }}\n sizeChange={(v) => {\n dispatch(textNodes.actions.changeActiveTextNode({ fontSize: v.toString() }));\n }}\n />\n </div>\n <div className=\"texttools__item font\">\n <TextToolbarSidebarFontFamily\n family={fontFamily}\n selectFamily={(v) => {\n dispatch(textNodes.actions.changeActiveTextNode({ fontFamily: v }));\n }}\n />\n </div>\n <div className=\"texttools__item align\">\n <TextToolbarSidebarTextAlign\n value={horizontalAlignment}\n onClick={(v: TextAlignment) => {\n dispatch(textNodes.actions.changeActiveTextNode({ horizontalAlignment: v }));\n }}\n />\n </div>\n <div className=\"texttools__item vertical\">\n <TextToolbarSidebarTextVertical\n value={verticalAlignment}\n onClick={(v: TextAlignment) => {\n dispatch(textNodes.actions.changeActiveTextNode({ verticalAlignment: v }));\n }}\n />\n </div>\n <div className=\"texttools__item color\">\n <TextToolbarSidebarColor\n color={textColor}\n colorChange={(v) => {\n dispatch(textNodes.actions.changeActiveTextNode({ textColor: v }));\n }}\n colorChoose={(v) => {\n dispatch(textNodes.actions.changeActiveTextNode({ textColor: v }));\n }}\n colorCancel={(v) => {\n dispatch(textNodes.actions.changeActiveTextNode({ textColor: v }));\n }}\n />\n </div>\n </div>\n </React.Fragment>\n );\n}\n\nexport default PassiveTextTools;\n", "import React, { useState, useEffect, useRef } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { useAppDispatch } from 'utils/hooks';\nimport { realNumber } from 'utils/math_util';\n\nimport textNodes from 'domains/text_nodes';\n\nimport type { TextNodeEntity } from 'domains/text_nodes';\n\ntype PassiveTextAreaProps = {\n textNode: TextNodeEntity;\n};\n\nfunction PassiveTextArea({ textNode }: PassiveTextAreaProps) {\n const { fontFamily, fontSize, horizontalAlignment, textContent, verticalAlignment } = textNode;\n\n const dispatch = useAppDispatch();\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const textSizeRef = useRef<SVGTextElement>(null);\n const textContainerRef = useRef<SVGSVGElement>(null);\n const activeTextNodeElement = document.querySelector(`#text_node--svg_${textNode.id}`);\n\n const [previewWidth, setPreviewWidth] = useState(405);\n const [relativeHeight, setRelativeHeight] = useState(100);\n const [textY, setTextY] = useState<number | string>('');\n const [textTransform, setTextTransform] = useState(0.5);\n const [relativeFont, setRelativeFont] = useState<number | undefined>(0);\n\n // this can just be set once and not calculated each time\n const previewRatio = () => {\n if (\n textNode &&\n activeTextNodeElement &&\n textContainerRef.current &&\n !textContainerRef.current.dataset.previewRatio\n ) {\n const { width: activeNodeWidth } = activeTextNodeElement.getBoundingClientRect();\n const { width: textContainerWidth } = textContainerRef.current.getBoundingClientRect();\n textContainerRef.current.dataset.previewRatio = (\n textContainerWidth / activeNodeWidth\n ).toString();\n }\n return Number(textContainerRef?.current?.dataset.previewRatio) || 1;\n };\n\n const adjustFontSize = (n: number) => n * previewRatio();\n\n useEffect(() => {\n // reset the text in the textarea when text node changes\n if (textNode && textAreaRef.current && textNode.textContent) {\n textAreaRef.current.value = textNode.textContent;\n }\n }, [textNode]);\n\n useEffect(() => {\n if (textNode && textContainerRef.current && textAreaRef.current) {\n const activeTextNodeElement = document.querySelector(`#text_node--svg_${textNode.id}`);\n if (!activeTextNodeElement) return;\n const { width: activeNodeWidth, height: activeNodeHeight } =\n activeTextNodeElement.getBoundingClientRect();\n const { width: containerWidth } = textContainerRef.current.getBoundingClientRect();\n const ratio = containerWidth / activeNodeWidth;\n setPreviewWidth(containerWidth);\n setRelativeHeight(activeNodeHeight * ratio);\n const adjustedFontSize = adjustFontSize(Number(fontSize));\n\n if (realNumber(adjustedFontSize)) {\n setRelativeFont(adjustedFontSize);\n }\n }\n }, [fontSize, textNode]);\n\n // figure out the y coordinate of the text depending on the vertical alignment\n useEffect(() => {\n if (textContent && relativeFont && textContainerRef.current && textSizeRef.current) {\n const { height: containerHeight } = textContainerRef.current.getBoundingClientRect();\n const { height: linesHeight } = textSizeRef.current.getBoundingClientRect();\n const diff = containerHeight - linesHeight;\n const lineHeight = relativeFont * 1.25;\n const bumper = lineHeight / 2;\n switch (verticalAlignment) {\n case 'start':\n setTextY(bumper);\n break;\n case 'end':\n setTextY(diff + bumper);\n break;\n case 'middle':\n default:\n setTextY(diff / 2 + bumper);\n }\n }\n }, [textContent, verticalAlignment, relativeFont, relativeHeight]);\n\n // translate the text depending on the alignment\n useEffect(() => {\n switch (horizontalAlignment) {\n case 'start':\n setTextTransform(0);\n break;\n case 'end':\n setTextTransform(1);\n break;\n case 'middle':\n default:\n setTextTransform(0.5);\n }\n }, [horizontalAlignment]);\n\n // Autoselect the text in the textarea when the active text node changes\n useEffect(() => {\n if (textAreaRef.current) {\n textAreaRef.current.select();\n }\n }, [textNode.id]);\n\n function handleTextChange(value: string) {\n dispatch(textNodes.actions.changeActiveTextNode({ textContent: value }));\n }\n\n return (\n <div className=\"texttools-item__text-node edit-text\">\n <div>\n <h2 className=\"title\">\n <FontAwesomeIcon icon=\"edit\" />\n <span>\n <strong>Type Here to Edit Text</strong>\n </span>\n </h2>\n <textarea ref={textAreaRef} rows={3} onChange={(e) => handleTextChange(e.target.value)} />\n </div>\n <div title=\"This is an approximation of the actual size of the text. It is provided as a visual aid for small and hard to read text areas.\">\n <h2 className=\"title\">\n <FontAwesomeIcon icon=\"eye\" />\n <span>\n <strong>Preview</strong>\n </span>\n </h2>\n <svg\n ref={textContainerRef}\n className=\"text-example-display\"\n style={{\n color: '#000',\n height: `${relativeHeight}px`,\n fontFamily,\n fontSize: relativeFont,\n }}\n >\n <text\n ref={textSizeRef}\n y={textY}\n transform={`translate(${previewWidth * textTransform})`}\n >\n {textContent\n .split(/\\n/g)\n .filter((l) => !!l)\n .map((t, i) => (\n <tspan\n key={`${t.toLowerCase()}_${i}`}\n x=\"0\"\n textAnchor={horizontalAlignment}\n dy={`${i === 0 ? 0.3125 : 1.25}em`}\n >\n {t}\n </tspan>\n ))}\n </text>\n </svg>\n </div>\n </div>\n );\n}\n\nexport default PassiveTextArea;\n", "import React from 'react';\nimport { range } from 'lodash';\n\nimport textNodes from 'domains/text_nodes/';\n\ntype TextToolsFontSizeProps = {\n autofit: boolean;\n size: number;\n autofitCheck: (checked: boolean) => void;\n sizeChange: (size: number) => void;\n};\n\nconst sizes = range(textNodes.utils.fontMinSize, textNodes.utils.fontMaxSize + 1);\n\nfunction TextToolbarSidebarFontSize(props: TextToolsFontSizeProps) {\n const { autofit, size, autofitCheck, sizeChange } = props;\n\n function handleCheckboxClick({ target: { checked } }: React.ChangeEvent<HTMLInputElement>) {\n autofitCheck(checked);\n }\n\n function handleSizeChange(e: React.ChangeEvent<HTMLSelectElement>) {\n const sizeStr = e.target.value;\n sizeChange(parseInt(sizeStr));\n }\n\n return (\n <div className=\"texttools-item__text-node font-size\">\n <label className=\"check-autofit\">\n <input type=\"checkbox\" onChange={handleCheckboxClick} checked={autofit} />\n <span>Fit text to space</span>\n </label>\n <label className=\"select-size\">\n Font Size\n <select\n disabled={autofit}\n onClick={(e) => e.stopPropagation()}\n onChange={handleSizeChange}\n value={size}\n >\n {sizes.map((item) => (\n <option\n key={item}\n value={item}\n className={`texttools__dropdown-item ${\n item === size ? 'texttools__dropdown-item--selected' : ''\n }`}\n >\n {item}\n </option>\n ))}\n </select>\n </label>\n </div>\n );\n}\n\nexport default TextToolbarSidebarFontSize;\n", "import React, { useEffect, useState, useRef } from 'react';\n\nimport textNodes from 'domains/text_nodes';\nimport { handleKeyEvents } from 'utils/handlers';\n\nimport type { FontFamily } from 'domains/text_nodes/';\n\ntype TextToolsFontFamilyProps = {\n family: FontFamily;\n selectFamily: (family: FontFamily) => void;\n};\n\nfunction TextToolbarSidebarFontFamily(props: TextToolsFontFamilyProps) {\n const { family, selectFamily } = props;\n const [openList, setOpenList] = useState(false);\n const listElem = useRef<HTMLUListElement>(null);\n\n const handleSelect = (item: FontFamily) => {\n selectFamily(item);\n setOpenList(false);\n };\n\n const handleMouseUp = () => {\n if (listElem.current) {\n listElem.current.focus();\n\n const button = listElem.current.querySelector('.texttools__dropdown-item--selected button');\n if (button) {\n button.scrollIntoView({ block: 'center' });\n }\n }\n };\n\n // handle the arrow keys\n const handleNavigate = ({ key }: React.KeyboardEvent) => {\n if (!listElem.current) {\n setOpenList(true);\n } else {\n const listitems = listElem.current.children as HTMLCollectionOf<HTMLLIElement>;\n const selectedItem = Array.from(listitems).findIndex((i) =>\n i.classList.contains('texttools__dropdown-item--selected')\n );\n\n if (selectedItem > -1) {\n let newIndex: number | undefined;\n\n if (key === 'ArrowDown') {\n newIndex = selectedItem === listitems.length - 1 ? 0 : selectedItem + 1;\n } else if (key === 'ArrowUp') {\n newIndex = selectedItem === 0 ? listitems.length - 1 : selectedItem - 1;\n } else if (key === 'ArrowRight') {\n const item = listitems[selectedItem].getAttribute('value');\n if (item) {\n handleSelect(item as FontFamily);\n }\n } else if (key === 'ArrowLeft') {\n setOpenList(false);\n }\n\n if (newIndex && listitems[newIndex]) {\n listitems[selectedItem].classList.remove('texttools__dropdown-item--selected');\n listitems[newIndex].classList.add('texttools__dropdown-item--selected');\n listitems[newIndex].scrollIntoView({ block: 'center' });\n listitems[newIndex].querySelector('button')?.focus();\n }\n }\n }\n };\n\n useEffect(() => {\n if (openList && listElem.current) {\n const listitems = listElem.current.children as HTMLCollectionOf<HTMLLIElement>;\n const selectedItem = Array.from(listitems).find((i) => i.getAttribute('value') === family);\n if (selectedItem) {\n selectedItem.focus();\n selectedItem.scrollIntoView({ block: 'center' });\n }\n }\n }, [openList, family]);\n\n return (\n <div className=\"texttools-item__text-node font-family\">\n <span className=\"choose-font\">Font Style</span>\n <div\n role=\"listbox\"\n className=\"font-family-selected\"\n tabIndex={0}\n style={{ fontFamily: family }}\n onKeyDown={handleKeyEvents({\n open: () => setOpenList(true),\n navigate: handleNavigate,\n close: () => setOpenList(false),\n })}\n onMouseDown={() => {\n setOpenList(!openList);\n }}\n onMouseUp={handleMouseUp}\n >\n {family}\n </div>\n\n {openList && (\n <ul className=\"texttools__dropdown-list\" ref={listElem}>\n {textNodes.utils.fontList.map((item) => (\n <li\n key={item}\n value={item}\n style={{ fontFamily: item }}\n className={`texttools__dropdown-item${\n item === family ? ' texttools__dropdown-item--selected' : ''\n }`}\n >\n <button\n type=\"button\"\n role=\"link\"\n onClick={(e) => {\n e.nativeEvent.stopImmediatePropagation();\n handleSelect(item);\n }}\n onKeyDown={handleKeyEvents({\n open: () => handleSelect(item),\n navigate: handleNavigate,\n close: () => setOpenList(false),\n })}\n onMouseUp={(e) => {\n e.nativeEvent.stopImmediatePropagation();\n handleMouseUp();\n }}\n >\n {item}\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n}\n\nexport default TextToolbarSidebarFontFamily;\n", "import React, { useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport tinycolor from 'tinycolor2';\n\nimport { RgbStringColorPicker } from 'react-colorful';\n\ntype TextToolsColorProps = {\n color: string;\n colorChange: (color: string) => void;\n colorChoose: (color: string) => void;\n colorCancel: (color: string) => void;\n};\n\nfunction TextToolbarSidebarColor(props: TextToolsColorProps) {\n const { color, colorChange, colorCancel, colorChoose } = props;\n\n const colorPickerElem = useRef<HTMLDivElement>(null);\n const thumbRef = useRef<HTMLButtonElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const restoreColor = useRef<string>(props.color);\n\n const [showPicker, setShowPicker] = useState(false);\n\n const rgbString = (c?: string) => tinycolor(c).toRgbString();\n\n function handleColorChange(c: string) {\n if (thumbRef.current) {\n thumbRef.current.style.backgroundColor = rgbString(c);\n }\n\n if (inputRef.current) {\n inputRef.current.value = rgbString(c);\n }\n\n colorChange(tinycolor(c).toHexString());\n }\n\n // Set it back to the previously used value\n function handleColorCancel() {\n if (restoreColor.current) {\n if (thumbRef.current) {\n thumbRef.current.style.backgroundColor = rgbString(restoreColor.current);\n }\n\n colorCancel(restoreColor.current);\n }\n setShowPicker(false);\n }\n\n function handleColorChoose() {\n if (inputRef.current) {\n const c = tinycolor(inputRef.current.value).toHexString();\n restoreColor.current = c;\n colorChoose(c);\n }\n\n setShowPicker(false);\n }\n\n return (\n <React.Fragment>\n <div className=\"texttools-item__text-node color-picker\">\n <span className=\"pick-color\">Text Color</span>\n <div className=\"color-picker-wrapper\">\n <button\n ref={thumbRef}\n type=\"button\"\n aria-label=\"Select text color\"\n className=\"color-picker-trigger\"\n style={{ backgroundColor: rgbString(color) }}\n onClick={() => setShowPicker(true)}\n />\n <input\n ref={inputRef}\n type=\"text\"\n value={color}\n onChange={(e) => handleColorChange(e.target.value)}\n style={{ display: 'inline-block', width: '150px' }}\n />\n </div>\n </div>\n\n <div\n className=\"texttools__dropdown-items\"\n ref={colorPickerElem}\n onClick={(e) => e.stopPropagation()}\n >\n {showPicker && (\n <div className=\"texttools__dropdown-item pick-color\">\n <RgbStringColorPicker color={rgbString(color)} onChange={handleColorChange} />\n <div className=\"color-picker-button-container\">\n <button\n type=\"button\"\n className=\"color-picker-button cancel-button\"\n onClick={handleColorCancel}\n >\n <FontAwesomeIcon icon=\"times\" />\n </button>\n <button\n type=\"button\"\n className=\"color-picker-button choose-button\"\n onClick={handleColorChoose}\n >\n <FontAwesomeIcon icon=\"check\" />\n </button>\n </div>\n </div>\n )}\n </div>\n </React.Fragment>\n );\n}\n\nexport default TextToolbarSidebarColor;\n", "import { useRef } from \"react\";\n\n// Saves incoming handler to the ref in order to avoid \"useCallback hell\"\nexport function useEventCallback<T>(handler?: (value: T) => void): (value: T) => void {\n const callbackRef = useRef(handler);\n const fn = useRef((value: T) => {\n callbackRef.current && callbackRef.current(value);\n });\n callbackRef.current = handler;\n\n return fn.current;\n}\n", "// Clamps a value between an upper and lower bound.\n// We use ternary operators because it makes the minified code\n// 2 times shorter then `Math.min(Math.max(a,b),c)`\nexport const clamp = (number: number, min = 0, max = 1): number => {\n return number > max ? max : number < min ? min : number;\n};\n", "import React, { useRef, useMemo, useEffect } from \"react\";\n\nimport { useEventCallback } from \"../../hooks/useEventCallback\";\nimport { clamp } from \"../../utils/clamp\";\n\nexport interface Interaction {\n left: number;\n top: number;\n}\n\n// Check if an event was triggered by touch\nconst isTouch = (event: MouseEvent | TouchEvent): event is TouchEvent => \"touches\" in event;\n\n// Finds a proper touch point by its identifier\nconst getTouchPoint = (touches: TouchList, touchId: null | number): Touch => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === touchId) return touches[i];\n }\n return touches[0];\n};\n\n// Finds the proper window object to fix iframe embedding issues\nconst getParentWindow = (node?: HTMLDivElement | null): Window => {\n return (node && node.ownerDocument.defaultView) || self;\n};\n\n// Returns a relative position of the pointer inside the node's bounding box\nconst getRelativePosition = (\n node: HTMLDivElement,\n event: MouseEvent | TouchEvent,\n touchId: null | number\n): Interaction => {\n const rect = node.getBoundingClientRect();\n\n // Get user's pointer position from `touches` array if it's a `TouchEvent`\n const pointer = isTouch(event) ? getTouchPoint(event.touches, touchId) : (event as MouseEvent);\n\n return {\n left: clamp((pointer.pageX - (rect.left + getParentWindow(node).pageXOffset)) / rect.width),\n top: clamp((pointer.pageY - (rect.top + getParentWindow(node).pageYOffset)) / rect.height),\n };\n};\n\n// Browsers introduced an intervention, making touch events passive by default.\n// This workaround removes `preventDefault` call from the touch handlers.\n// https://github.com/facebook/react/issues/19651\nconst preventDefaultMove = (event: MouseEvent | TouchEvent): void => {\n !isTouch(event) && event.preventDefault();\n};\n\n// Prevent mobile browsers from handling mouse events (conflicting with touch ones).\n// If we detected a touch interaction before, we prefer reacting to touch events only.\nconst isInvalid = (event: MouseEvent | TouchEvent, hasTouch: boolean): boolean => {\n return hasTouch && !isTouch(event);\n};\n\ninterface Props {\n onMove: (interaction: Interaction) => void;\n onKey: (offset: Interaction) => void;\n children: React.ReactNode;\n}\n\nconst InteractiveBase = ({ onMove, onKey, ...rest }: Props) => {\n const container = useRef<HTMLDivElement>(null);\n const onMoveCallback = useEventCallback<Interaction>(onMove);\n const onKeyCallback = useEventCallback<Interaction>(onKey);\n const touchId = useRef<null | number>(null);\n const hasTouch = useRef(false);\n\n const [handleMoveStart, handleKeyDown, toggleDocumentEvents] = useMemo(() => {\n const handleMoveStart = ({ nativeEvent }: React.MouseEvent | React.TouchEvent) => {\n const el = container.current;\n if (!el) return;\n\n // Prevent text selection\n preventDefaultMove(nativeEvent);\n\n if (isInvalid(nativeEvent, hasTouch.current) || !el) return;\n\n if (isTouch(nativeEvent)) {\n hasTouch.current = true;\n const changedTouches = nativeEvent.changedTouches || [];\n if (changedTouches.length) touchId.current = changedTouches[0].identifier;\n }\n\n el.focus();\n onMoveCallback(getRelativePosition(el, nativeEvent, touchId.current));\n toggleDocumentEvents(true);\n };\n\n const handleMove = (event: MouseEvent | TouchEvent) => {\n // Prevent text selection\n preventDefaultMove(event);\n\n // If user moves the pointer outside of the window or iframe bounds and release it there,\n // `mouseup`/`touchend` won't be fired. In order to stop the picker from following the cursor\n // after the user has moved the mouse/finger back to the document, we check `event.buttons`\n // and `event.touches`. It allows us to detect that the user is just moving his pointer\n // without pressing it down\n const isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0;\n\n if (isDown && container.current) {\n onMoveCallback(getRelativePosition(container.current, event, touchId.current));\n } else {\n toggleDocumentEvents(false);\n }\n };\n\n const handleMoveEnd = () => toggleDocumentEvents(false);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n\n // Ignore all keys except arrow ones\n if (keyCode < 37 || keyCode > 40) return;\n // Do not scroll page by arrow keys when document is focused on the element\n event.preventDefault();\n // Send relative offset to the parent component.\n // We use codes (37â†, 38↑, 39→, 40↓) instead of keys ('ArrowRight', 'ArrowDown', etc)\n // to reduce the size of the library\n onKeyCallback({\n left: keyCode === 39 ? 0.05 : keyCode === 37 ? -0.05 : 0,\n top: keyCode === 40 ? 0.05 : keyCode === 38 ? -0.05 : 0,\n });\n };\n\n function toggleDocumentEvents(state?: boolean) {\n const touch = hasTouch.current;\n const el = container.current;\n const parentWindow = getParentWindow(el);\n\n // Add or remove additional pointer event listeners\n const toggleEvent = state ? parentWindow.addEventListener : parentWindow.removeEventListener;\n toggleEvent(touch ? \"touchmove\" : \"mousemove\", handleMove);\n toggleEvent(touch ? \"touchend\" : \"mouseup\", handleMoveEnd);\n }\n\n return [handleMoveStart, handleKeyDown, toggleDocumentEvents];\n }, [onKeyCallback, onMoveCallback]);\n\n // Remove window event listeners before unmounting\n useEffect(() => toggleDocumentEvents, [toggleDocumentEvents]);\n\n return (\n <div\n {...rest}\n onTouchStart={handleMoveStart}\n onMouseDown={handleMoveStart}\n className=\"react-colorful__interactive\"\n ref={container}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n role=\"slider\"\n />\n );\n};\n\nexport const Interactive = React.memo(InteractiveBase);\n", "export const formatClassName = (names: unknown[]): string => names.filter(Boolean).join(\" \");\n", "import React from \"react\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props {\n className?: string;\n top?: number;\n left: number;\n color: string;\n}\n\nexport const Pointer = ({ className, color, left, top = 0.5 }: Props): JSX.Element => {\n const nodeClassName = formatClassName([\"react-colorful__pointer\", className]);\n\n const style = {\n top: `${top * 100}%`,\n left: `${left * 100}%`,\n };\n\n return (\n <div className={nodeClassName} style={style}>\n <div className=\"react-colorful__pointer-fill\" style={{ backgroundColor: color }} />\n </div>\n );\n};\n", "export const round = (number: number, digits = 0, base = Math.pow(10, digits)): number => {\n return Math.round(base * number) / base;\n};\n", "import { round } from \"./round\";\nimport { RgbaColor, RgbColor, HslaColor, HslColor, HsvaColor, HsvColor } from \"../types\";\n\n/**\n * Valid CSS <angle> units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nconst angleUnits: Record<string, number> = {\n grad: 360 / 400,\n turn: 360,\n rad: 360 / (Math.PI * 2),\n};\n\nexport const hexToHsva = (hex: string): HsvaColor => rgbaToHsva(hexToRgba(hex));\n\nexport const hexToRgba = (hex: string): RgbaColor => {\n if (hex[0] === \"#\") hex = hex.substring(1);\n\n if (hex.length < 6) {\n return {\n r: parseInt(hex[0] + hex[0], 16),\n g: parseInt(hex[1] + hex[1], 16),\n b: parseInt(hex[2] + hex[2], 16),\n a: hex.length === 4 ? round(parseInt(hex[3] + hex[3], 16) / 255, 2) : 1,\n };\n }\n\n return {\n r: parseInt(hex.substring(0, 2), 16),\n g: parseInt(hex.substring(2, 4), 16),\n b: parseInt(hex.substring(4, 6), 16),\n a: hex.length === 8 ? round(parseInt(hex.substring(6, 8), 16) / 255, 2) : 1,\n };\n};\n\nexport const parseHue = (value: string, unit = \"deg\"): number => {\n return Number(value) * (angleUnits[unit] || 1);\n};\n\nexport const hslaStringToHsva = (hslString: string): HsvaColor => {\n const matcher = /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hslString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return hslaToHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n l: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hslStringToHsva = hslaStringToHsva;\n\nexport const hslaToHsva = ({ h, s, l, a }: HslaColor): HsvaColor => {\n s *= (l < 50 ? l : 100 - l) / 100;\n\n return {\n h: h,\n s: s > 0 ? ((2 * s) / (l + s)) * 100 : 0,\n v: l + s,\n a,\n };\n};\n\nexport const hsvaToHex = (hsva: HsvaColor): string => rgbaToHex(hsvaToRgba(hsva));\n\nexport const hsvaToHsla = ({ h, s, v, a }: HsvaColor): HslaColor => {\n const hh = ((200 - s) * v) / 100;\n\n return {\n h: round(h),\n s: round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n l: round(hh / 2),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToHslString = (hsva: HsvaColor): string => {\n const { h, s, l } = hsvaToHsla(hsva);\n return `hsl(${h}, ${s}%, ${l}%)`;\n};\n\nexport const hsvaToHsvString = (hsva: HsvaColor): string => {\n const { h, s, v } = roundHsva(hsva);\n return `hsv(${h}, ${s}%, ${v}%)`;\n};\n\nexport const hsvaToHsvaString = (hsva: HsvaColor): string => {\n const { h, s, v, a } = roundHsva(hsva);\n return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n};\n\nexport const hsvaToHslaString = (hsva: HsvaColor): string => {\n const { h, s, l, a } = hsvaToHsla(hsva);\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n};\n\nexport const hsvaToRgba = ({ h, s, v, a }: HsvaColor): RgbaColor => {\n h = (h / 360) * 6;\n s = s / 100;\n v = v / 100;\n\n const hh = Math.floor(h),\n b = v * (1 - s),\n c = v * (1 - (h - hh) * s),\n d = v * (1 - (1 - h + hh) * s),\n module = hh % 6;\n\n return {\n r: round([v, c, b, b, d, v][module] * 255),\n g: round([d, v, v, c, b, b][module] * 255),\n b: round([b, b, d, v, v, c][module] * 255),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToRgbString = (hsva: HsvaColor): string => {\n const { r, g, b } = hsvaToRgba(hsva);\n return `rgb(${r}, ${g}, ${b})`;\n};\n\nexport const hsvaToRgbaString = (hsva: HsvaColor): string => {\n const { r, g, b, a } = hsvaToRgba(hsva);\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const hsvaStringToHsva = (hsvString: string): HsvaColor => {\n const matcher = /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hsvString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return roundHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n v: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hsvStringToHsva = hsvaStringToHsva;\n\nexport const rgbaStringToHsva = (rgbaString: string): HsvaColor => {\n const matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(rgbaString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return rgbaToHsva({\n r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n });\n};\n\nexport const rgbStringToHsva = rgbaStringToHsva;\n\nconst format = (number: number) => {\n const hex = number.toString(16);\n return hex.length < 2 ? \"0\" + hex : hex;\n};\n\nexport const rgbaToHex = ({ r, g, b, a }: RgbaColor): string => {\n const alphaHex = a < 1 ? format(round(a * 255)) : \"\";\n return \"#\" + format(r) + format(g) + format(b) + alphaHex;\n};\n\nexport const rgbaToHsva = ({ r, g, b, a }: RgbaColor): HsvaColor => {\n const max = Math.max(r, g, b);\n const delta = max - Math.min(r, g, b);\n\n // prettier-ignore\n const hh = delta\n ? max === r\n ? (g - b) / delta\n : max === g\n ? 2 + (b - r) / delta\n : 4 + (r - g) / delta\n : 0;\n\n return {\n h: round(60 * (hh < 0 ? hh + 6 : hh)),\n s: round(max ? (delta / max) * 100 : 0),\n v: round((max / 255) * 100),\n a,\n };\n};\n\nexport const roundHsva = (hsva: HsvaColor): HsvaColor => ({\n h: round(hsva.h),\n s: round(hsva.s),\n v: round(hsva.v),\n a: round(hsva.a, 2),\n});\n\nexport const rgbaToRgb = ({ r, g, b }: RgbaColor): RgbColor => ({ r, g, b });\n\nexport const hslaToHsl = ({ h, s, l }: HslaColor): HslColor => ({ h, s, l });\n\nexport const hsvaToHsv = (hsva: HsvaColor): HsvColor => {\n const { h, s, v } = roundHsva(hsva);\n return { h, s, v };\n};\n", "import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n className?: string;\n hue: number;\n onChange: (newHue: { h: number }) => void;\n}\n\nconst HueBase = ({ className, hue, onChange }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({ h: 360 * interaction.left });\n };\n\n const handleKey = (offset: Interaction) => {\n // Hue measured in degrees of the color circle ranging from 0 to 360\n onChange({\n h: clamp(hue + offset.left * 360, 0, 360),\n });\n };\n\n const nodeClassName = formatClassName([\"react-colorful__hue\", className]);\n\n return (\n <div className={nodeClassName}>\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n aria-label=\"Hue\"\n aria-valuenow={round(hue)}\n aria-valuemax=\"360\"\n aria-valuemin=\"0\"\n >\n <Pointer\n className=\"react-colorful__hue-pointer\"\n left={hue / 360}\n color={hsvaToHslString({ h: hue, s: 100, v: 100, a: 1 })}\n />\n </Interactive>\n </div>\n );\n};\n\nexport const Hue = React.memo(HueBase);\n", "import React from \"react\";\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\nimport { HsvaColor } from \"../../types\";\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n hsva: HsvaColor;\n onChange: (newColor: { s: number; v: number }) => void;\n}\n\nconst SaturationBase = ({ hsva, onChange }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({\n s: interaction.left * 100,\n v: 100 - interaction.top * 100,\n });\n };\n\n const handleKey = (offset: Interaction) => {\n // Saturation and brightness always fit into [0, 100] range\n onChange({\n s: clamp(hsva.s + offset.left * 100, 0, 100),\n v: clamp(hsva.v - offset.top * 100, 0, 100),\n });\n };\n\n const containerStyle = {\n backgroundColor: hsvaToHslString({ h: hsva.h, s: 100, v: 100, a: 1 }),\n };\n\n return (\n <div className=\"react-colorful__saturation\" style={containerStyle}>\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n aria-label=\"Color\"\n aria-valuetext={`Saturation ${round(hsva.s)}%, Brightness ${round(hsva.v)}%`}\n >\n <Pointer\n className=\"react-colorful__saturation-pointer\"\n top={1 - hsva.v / 100}\n left={hsva.s / 100}\n color={hsvaToHslString(hsva)}\n />\n </Interactive>\n </div>\n );\n};\n\nexport const Saturation = React.memo(SaturationBase);\n", "import { hexToRgba } from \"./convert\";\nimport { ObjectColor } from \"../types\";\n\nexport const equalColorObjects = (first: ObjectColor, second: ObjectColor): boolean => {\n if (first === second) return true;\n\n for (const prop in first) {\n // The following allows for a type-safe calling of this function (first & second have to be HSL, HSV, or RGB)\n // with type-unsafe iterating over object keys. TS does not allow this without an index (`[key: string]: number`)\n // on an object to define how iteration is normally done. To ensure extra keys are not allowed on our types,\n // we must cast our object to unknown (as RGB demands `r` be a key, while `Record<string, x>` does not care if\n // there is or not), and then as a type TS can iterate over.\n if (\n ((first as unknown) as Record<string, number>)[prop] !==\n ((second as unknown) as Record<string, number>)[prop]\n )\n return false;\n }\n\n return true;\n};\n\nexport const equalColorString = (first: string, second: string): boolean => {\n return first.replace(/\\s/g, \"\") === second.replace(/\\s/g, \"\");\n};\n\nexport const equalHex = (first: string, second: string): boolean => {\n if (first.toLowerCase() === second.toLowerCase()) return true;\n\n // To compare colors like `#FFF` and `ffffff` we convert them into RGB objects\n return equalColorObjects(hexToRgba(first), hexToRgba(second));\n};\n", "import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { ColorModel, AnyColor, HsvaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { useEventCallback } from \"./useEventCallback\";\n\nexport function useColorManipulation<T extends AnyColor>(\n colorModel: ColorModel<T>,\n color: T,\n onChange?: (color: T) => void\n): [HsvaColor, (color: Partial<HsvaColor>) => void] {\n // Save onChange callback in the ref for avoiding \"useCallback hell\"\n const onChangeCallback = useEventCallback<T>(onChange);\n\n // No matter which color model is used (HEX, RGB(A) or HSL(A)),\n // all internal calculations are based on HSVA model\n const [hsva, updateHsva] = useState<HsvaColor>(() => colorModel.toHsva(color));\n\n // By using this ref we're able to prevent extra updates\n // and the effects recursion during the color conversion\n const cache = useRef({ color, hsva });\n\n // Update local HSVA-value if `color` property value is changed,\n // but only if that's not the same color that we just sent to the parent\n useEffect(() => {\n if (!colorModel.equal(color, cache.current.color)) {\n const newHsva = colorModel.toHsva(color);\n cache.current = { hsva: newHsva, color };\n updateHsva(newHsva);\n }\n }, [color, colorModel]);\n\n // Trigger `onChange` callback only if an updated color is different from cached one;\n // save the new color to the ref to prevent unnecessary updates\n useEffect(() => {\n let newColor;\n if (\n !equalColorObjects(hsva, cache.current.hsva) &&\n !colorModel.equal((newColor = colorModel.fromHsva(hsva)), cache.current.color)\n ) {\n cache.current = { hsva, color: newColor };\n onChangeCallback(newColor);\n }\n }, [hsva, colorModel, onChangeCallback]);\n\n // Merge the current HSVA color object with updated params.\n // For example, when a child component sends `h` or `s` only\n const handleChange = useCallback((params: Partial<HsvaColor>) => {\n updateHsva((current) => Object.assign({}, current, params));\n }, []);\n\n return [hsva, handleChange];\n}\n", "declare const __webpack_nonce__: string | undefined;\nlet nonce: string | undefined;\n\n/**\n * Returns a nonce hash included by Webpack or the one defined manually by developer.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce\n * https://webpack.js.org/guides/csp/\n */\nexport const getNonce = (): string | undefined => {\n if (nonce) return nonce;\n if (typeof __webpack_nonce__ !== \"undefined\") return __webpack_nonce__;\n return undefined;\n};\n\n/**\n * Signs the style tag with a base64-encoded string (nonce) to conforms to Content Security Policies.\n * This function has to be invoked before any picker is rendered if you aren't using Webpack for CSP.\n */\nexport const setNonce = (hash: string): void => {\n nonce = hash;\n};\n", "import { useLayoutEffect, useEffect } from \"react\";\n\n// 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.\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n", "import { RefObject } from \"react\";\n\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { getNonce } from \"../utils/nonce\";\n\n// Bundler is configured to load this as a processed minified CSS-string\nimport styles from \"../css/styles.css\";\n\nconst styleElementMap: Map<Document, HTMLStyleElement> = new Map();\n\n/**\n * Injects CSS code into the document's <head>\n */\nexport const useStyleSheet = (nodeRef: RefObject<HTMLDivElement>): void => {\n useIsomorphicLayoutEffect(() => {\n const parentDocument = nodeRef.current ? nodeRef.current.ownerDocument : document;\n\n if (typeof parentDocument !== \"undefined\" && !styleElementMap.has(parentDocument)) {\n const styleElement = parentDocument.createElement(\"style\");\n styleElement.innerHTML = styles;\n styleElementMap.set(parentDocument, styleElement);\n\n // Conform to CSP rules by setting `nonce` attribute to the inline styles\n const nonce = getNonce();\n if (nonce) styleElement.setAttribute(\"nonce\", nonce);\n\n parentDocument.head.appendChild(styleElement);\n }\n }, []);\n};\n", "import React, { useRef } from \"react\";\n\nimport { Hue } from \"./Hue\";\nimport { Saturation } from \"./Saturation\";\n\nimport { ColorModel, ColorPickerBaseProps, AnyColor } from \"../../types\";\nimport { useColorManipulation } from \"../../hooks/useColorManipulation\";\nimport { useStyleSheet } from \"../../hooks/useStyleSheet\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n colorModel: ColorModel<T>;\n}\n\nexport const ColorPicker = <T extends AnyColor>({\n className,\n colorModel,\n color = colorModel.defaultColor,\n onChange,\n ...rest\n}: Props<T>): JSX.Element => {\n const nodeRef = useRef<HTMLDivElement>(null);\n useStyleSheet(nodeRef);\n\n const [hsva, updateHsva] = useColorManipulation<T>(colorModel, color, onChange);\n\n const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n return (\n <div {...rest} ref={nodeRef} className={nodeClassName}>\n <Saturation hsva={hsva} onChange={updateHsva} />\n <Hue hue={hsva.h} onChange={updateHsva} className=\"react-colorful__last-control\" />\n </div>\n );\n};\n", "import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalHex } from \"../utils/compare\";\nimport { hexToHsva, hsvaToHex } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"000\",\n toHsva: hexToHsva,\n fromHsva: ({ h, s, v }) => hsvaToHex({ h, s, v, a: 1 }),\n equal: equalHex,\n};\n\nexport const HexColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n <ColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslaString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\nimport { HsvaColor } from \"../../types\";\n\ninterface Props {\n className?: string;\n hsva: HsvaColor;\n onChange: (newAlpha: { a: number }) => void;\n}\n\nexport const Alpha = ({ className, hsva, onChange }: Props): JSX.Element => {\n const handleMove = (interaction: Interaction) => {\n onChange({ a: interaction.left });\n };\n\n const handleKey = (offset: Interaction) => {\n // Alpha always fit into [0, 1] range\n onChange({ a: clamp(hsva.a + offset.left) });\n };\n\n // We use `Object.assign` instead of the spread operator\n // to prevent adding the polyfill (about 150 bytes gzipped)\n const colorFrom = hsvaToHslaString(Object.assign({}, hsva, { a: 0 }));\n const colorTo = hsvaToHslaString(Object.assign({}, hsva, { a: 1 }));\n\n const gradientStyle = {\n backgroundImage: `linear-gradient(90deg, ${colorFrom}, ${colorTo})`,\n };\n\n const nodeClassName = formatClassName([\"react-colorful__alpha\", className]);\n const ariaValue = round(hsva.a * 100);\n\n return (\n <div className={nodeClassName}>\n <div className=\"react-colorful__alpha-gradient\" style={gradientStyle} />\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n aria-label=\"Alpha\"\n aria-valuetext={`${ariaValue}%`}\n aria-valuenow={ariaValue}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <Pointer\n className=\"react-colorful__alpha-pointer\"\n left={hsva.a}\n color={hsvaToHslaString(hsva)}\n />\n </Interactive>\n </div>\n );\n};\n", "import React, { useRef } from \"react\";\n\nimport { Hue } from \"./Hue\";\nimport { Saturation } from \"./Saturation\";\nimport { Alpha } from \"./Alpha\";\n\nimport { ColorModel, ColorPickerBaseProps, AnyColor } from \"../../types\";\nimport { useColorManipulation } from \"../../hooks/useColorManipulation\";\nimport { useStyleSheet } from \"../../hooks/useStyleSheet\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n colorModel: ColorModel<T>;\n}\n\nexport const AlphaColorPicker = <T extends AnyColor>({\n className,\n colorModel,\n color = colorModel.defaultColor,\n onChange,\n ...rest\n}: Props<T>): JSX.Element => {\n const nodeRef = useRef<HTMLDivElement>(null);\n useStyleSheet(nodeRef);\n\n const [hsva, updateHsva] = useColorManipulation<T>(colorModel, color, onChange);\n\n const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n return (\n <div {...rest} ref={nodeRef} className={nodeClassName}>\n <Saturation hsva={hsva} onChange={updateHsva} />\n <Hue hue={hsva.h} onChange={updateHsva} />\n <Alpha hsva={hsva} onChange={updateHsva} className=\"react-colorful__last-control\" />\n </div>\n );\n};\n", "import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalHex } from \"../utils/compare\";\nimport { hexToHsva, hsvaToHex } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"0001\",\n toHsva: hexToHsva,\n fromHsva: hsvaToHex,\n equal: equalHex,\n};\n\nexport const HexAlphaColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n <AlphaColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, HslaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { hslaToHsva, hsvaToHsla } from \"../utils/convert\";\n\nconst colorModel: ColorModel<HslaColor> = {\n defaultColor: { h: 0, s: 0, l: 0, a: 1 },\n toHsva: hslaToHsva,\n fromHsva: hsvaToHsla,\n equal: equalColorObjects,\n};\n\nexport const HslaColorPicker = (props: Partial<ColorPickerBaseProps<HslaColor>>): JSX.Element => (\n <AlphaColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { hslaStringToHsva, hsvaToHslaString } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"hsla(0, 0%, 0%, 1)\",\n toHsva: hslaStringToHsva,\n fromHsva: hsvaToHslaString,\n equal: equalColorString,\n};\n\nexport const HslaStringColorPicker = (\n props: Partial<ColorPickerBaseProps<string>>\n): JSX.Element => <AlphaColorPicker {...props} colorModel={colorModel} />;\n", "import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, HslColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { hslaToHsva, hsvaToHsla, hslaToHsl } from \"../utils/convert\";\n\nconst colorModel: ColorModel<HslColor> = {\n defaultColor: { h: 0, s: 0, l: 0 },\n toHsva: ({ h, s, l }) => hslaToHsva({ h, s, l, a: 1 }),\n fromHsva: (hsva) => hslaToHsl(hsvaToHsla(hsva)),\n equal: equalColorObjects,\n};\n\nexport const HslColorPicker = (props: Partial<ColorPickerBaseProps<HslColor>>): JSX.Element => (\n <ColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { hslStringToHsva, hsvaToHslString } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"hsl(0, 0%, 0%)\",\n toHsva: hslStringToHsva,\n fromHsva: hsvaToHslString,\n equal: equalColorString,\n};\n\nexport const HslStringColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n <ColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, HsvaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { roundHsva } from \"../utils/convert\";\n\nconst colorModel: ColorModel<HsvaColor> = {\n defaultColor: { h: 0, s: 0, v: 0, a: 1 },\n toHsva: (hsva) => hsva,\n fromHsva: roundHsva,\n equal: equalColorObjects,\n};\n\nexport const HsvaColorPicker = (props: Partial<ColorPickerBaseProps<HsvaColor>>): JSX.Element => (\n <AlphaColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { hsvaStringToHsva, hsvaToHsvaString } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"hsva(0, 0%, 0%, 1)\",\n toHsva: hsvaStringToHsva,\n fromHsva: hsvaToHsvaString,\n equal: equalColorString,\n};\n\nexport const HsvaStringColorPicker = (\n props: Partial<ColorPickerBaseProps<string>>\n): JSX.Element => <AlphaColorPicker {...props} colorModel={colorModel} />;\n", "import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, HsvColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { hsvaToHsv } from \"../utils/convert\";\n\nconst colorModel: ColorModel<HsvColor> = {\n defaultColor: { h: 0, s: 0, v: 0 },\n toHsva: ({ h, s, v }) => ({ h, s, v, a: 1 }),\n fromHsva: hsvaToHsv,\n equal: equalColorObjects,\n};\n\nexport const HsvColorPicker = (props: Partial<ColorPickerBaseProps<HsvColor>>): JSX.Element => (\n <ColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { hsvStringToHsva, hsvaToHsvString } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"hsv(0, 0%, 0%)\",\n toHsva: hsvStringToHsva,\n fromHsva: hsvaToHsvString,\n equal: equalColorString,\n};\n\nexport const HsvStringColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n <ColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, RgbaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { rgbaToHsva, hsvaToRgba } from \"../utils/convert\";\n\nconst colorModel: ColorModel<RgbaColor> = {\n defaultColor: { r: 0, g: 0, b: 0, a: 1 },\n toHsva: rgbaToHsva,\n fromHsva: hsvaToRgba,\n equal: equalColorObjects,\n};\n\nexport const RgbaColorPicker = (props: Partial<ColorPickerBaseProps<RgbaColor>>): JSX.Element => (\n <AlphaColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { rgbaStringToHsva, hsvaToRgbaString } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"rgba(0, 0, 0, 1)\",\n toHsva: rgbaStringToHsva,\n fromHsva: hsvaToRgbaString,\n equal: equalColorString,\n};\n\nexport const RgbaStringColorPicker = (\n props: Partial<ColorPickerBaseProps<string>>\n): JSX.Element => <AlphaColorPicker {...props} colorModel={colorModel} />;\n", "import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, RgbColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { rgbaToHsva, hsvaToRgba, rgbaToRgb } from \"../utils/convert\";\n\nconst colorModel: ColorModel<RgbColor> = {\n defaultColor: { r: 0, g: 0, b: 0 },\n toHsva: ({ r, g, b }) => rgbaToHsva({ r, g, b, a: 1 }),\n fromHsva: (hsva) => rgbaToRgb(hsvaToRgba(hsva)),\n equal: equalColorObjects,\n};\n\nexport const RgbColorPicker = (props: Partial<ColorPickerBaseProps<RgbColor>>): JSX.Element => (\n <ColorPicker {...props} colorModel={colorModel} />\n);\n", "import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { rgbStringToHsva, hsvaToRgbString } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"rgb(0, 0, 0)\",\n toHsva: rgbStringToHsva,\n fromHsva: hsvaToRgbString,\n equal: equalColorString,\n};\n\nexport const RgbStringColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n <ColorPicker {...props} colorModel={colorModel} />\n);\n", "const matcher = /^#?([0-9A-F]{3,8})$/i;\n\nexport const validHex = (value: string, alpha?: boolean): boolean => {\n const match = matcher.exec(value);\n const length = match ? match[1].length : 0;\n\n return (\n length === 3 || // '#rgb' format\n length === 6 || // '#rrggbb' format\n (!!alpha && length === 4) || // '#rgba' format\n (!!alpha && length === 8) // '#rrggbbaa' format\n );\n};\n", "import React, { useState, useEffect, useCallback } from \"react\";\n\nimport { useEventCallback } from \"../../hooks/useEventCallback\";\nimport { ColorInputBaseProps } from \"../../types\";\n\ninterface Props extends ColorInputBaseProps {\n /** Blocks typing invalid characters and limits string length */\n escape: (value: string) => string;\n /** Checks that value is valid color string */\n validate: (value: string) => boolean;\n /** Processes value before displaying it in the input */\n format?: (value: string) => string;\n /** Processes value before sending it in `onChange` */\n process?: (value: string) => string;\n}\n\nexport const ColorInput = (props: Props): JSX.Element => {\n const { color = \"\", onChange, onBlur, escape, validate, format, process, ...rest } = props;\n const [value, setValue] = useState(() => escape(color));\n const onChangeCallback = useEventCallback<string>(onChange);\n const onBlurCallback = useEventCallback<React.FocusEvent<HTMLInputElement>>(onBlur);\n\n // Trigger `onChange` handler only if the input value is a valid color\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = escape(e.target.value);\n setValue(inputValue);\n if (validate(inputValue)) onChangeCallback(process ? process(inputValue) : inputValue);\n },\n [escape, process, validate, onChangeCallback]\n );\n\n // Take the color from props if the last typed color (in local state) is not valid\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n if (!validate(e.target.value)) setValue(escape(color));\n onBlurCallback(e);\n },\n [color, escape, validate, onBlurCallback]\n );\n\n // Update the local state when `color` property value is changed\n useEffect(() => {\n setValue(escape(color));\n }, [color, escape]);\n\n return (\n <input\n {...rest}\n value={format ? format(value) : value}\n spellCheck=\"false\" // the element should not be checked for spelling errors\n onChange={handleChange}\n onBlur={handleBlur}\n />\n );\n};\n", "import React, { useCallback } from \"react\";\nimport { ColorInputBaseProps } from \"../types\";\n\nimport { validHex } from \"../utils/validate\";\nimport { ColorInput } from \"./common/ColorInput\";\n\ninterface HexColorInputProps extends ColorInputBaseProps {\n /** Enables `#` prefix displaying */\n prefixed?: boolean;\n /** Allows `#rgba` and `#rrggbbaa` color formats */\n alpha?: boolean;\n}\n\n/** Adds \"#\" symbol to the beginning of the string */\nconst prefix = (value: string) => \"#\" + value;\n\nexport const HexColorInput = (props: HexColorInputProps): JSX.Element => {\n const { prefixed, alpha, ...rest } = props;\n\n /** Escapes all non-hexadecimal characters including \"#\" */\n const escape = useCallback(\n (value: string) => value.replace(/([^0-9A-F]+)/gi, \"\").substring(0, alpha ? 8 : 6),\n [alpha]\n );\n\n /** Validates hexadecimal strings */\n const validate = useCallback((value: string) => validHex(value, alpha), [alpha]);\n\n return (\n <ColorInput\n {...rest}\n escape={escape}\n format={prefixed ? prefix : undefined}\n process={prefix}\n validate={validate}\n />\n );\n};\n", "import React, { useRef } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { handleKeyEvents } from 'utils/handlers';\n\nimport type { TextAlignment } from 'domains/text_nodes/';\nimport type { IconProp } from '@fortawesome/fontawesome-svg-core';\n\ntype TextToolsTextAlignProps = {\n value: TextAlignment;\n onClick: (v: TextAlignment) => void;\n};\n\ntype TextToolsTextAlignOptionProps = {\n item: TextAlignment;\n selected?: boolean;\n onClick: (v: TextAlignment) => void;\n};\n\nconst alignMap: Record<TextAlignment, string> = {\n start: 'left',\n middle: 'center',\n end: 'right',\n};\n\nconst alignItems = Object.keys(alignMap) as TextAlignment[];\n\nfunction TextToolbarSidebarTextAlign(props: TextToolsTextAlignProps) {\n const { value, onClick } = props;\n const buttonContainer = useRef<HTMLDivElement>(null);\n\n return (\n <div className=\"texttools-item__text-node text-align\">\n <span className=\"screen-reader-text\">change text alignment</span>\n <span className=\"select-align\">Horizontal Text Alignment</span>\n <div className=\"align-button-container\" ref={buttonContainer}>\n {alignItems.map((item) => (\n <TextToolbarSidebarTextAlignOption\n key={item}\n item={item}\n selected={item === value}\n onClick={() => onClick(item)}\n />\n ))}\n </div>\n </div>\n );\n}\n\nfunction TextToolbarSidebarTextAlignOption({\n item,\n onClick,\n selected = false,\n}: TextToolsTextAlignOptionProps) {\n return (\n <button\n type=\"button\"\n value={item}\n className={`align-button ${selected ? 'align-button--selected' : ''}`}\n onClick={() => onClick(item)}\n onKeyDown={handleKeyEvents({\n open: () => onClick(item),\n navigate: () => null,\n close: () => null,\n })}\n >\n <FontAwesomeIcon icon={`align-${alignMap[item]}` as IconProp} title={alignMap[item]} />\n </button>\n );\n}\n\nexport default TextToolbarSidebarTextAlign;\n", "import React, { useRef } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { handleKeyEvents } from 'utils/handlers';\n\nimport type { TextAlignment } from 'domains/text_nodes';\nimport type { IconProp } from '@fortawesome/fontawesome-svg-core';\n\ntype TextToolsVerticalAlignProps = {\n value: TextAlignment;\n onClick: (v: TextAlignment) => void;\n};\n\ntype TextToolsVerticalAlignOptionProps = {\n item: TextAlignment;\n selected: boolean;\n onClick: (v: TextAlignment) => void;\n};\n\nconst vertAlignMap: Record<TextAlignment, IconProp> = {\n start: 'arrow-up',\n middle: 'compress-alt',\n end: 'arrow-down',\n};\n\nconst alignItems = Object.keys(vertAlignMap) as TextAlignment[];\n\nfunction TextToolbarSidebarTextVertical(props: TextToolsVerticalAlignProps) {\n const { value, onClick } = props;\n const buttonContainer = useRef<HTMLDivElement>(null);\n\n return (\n <div className=\"texttools-item__text-node text-vertical\">\n <span className=\"screen-reader-text\">change text vertical alignment</span>\n <span className=\"select-vertical\">Vertical Text Alignment</span>\n <div className=\"align-button-container\" ref={buttonContainer}>\n {alignItems.map((item) => (\n <TextToolbarSidebarVerticalAlignOption\n key={item}\n item={item}\n selected={item === value}\n onClick={() => onClick(item)}\n />\n ))}\n </div>\n </div>\n );\n}\n\nfunction TextToolbarSidebarVerticalAlignOption({\n item,\n onClick,\n selected = false,\n}: TextToolsVerticalAlignOptionProps) {\n return (\n <button\n type=\"button\"\n value={item}\n className={`align-button ${selected ? 'align-button--selected' : ''}`}\n onClick={() => onClick(item)}\n onKeyDown={handleKeyEvents({\n open: () => onClick(item),\n navigate: () => null,\n close: () => null,\n })}\n >\n <FontAwesomeIcon icon={vertAlignMap[item]} title={item} />\n </button>\n );\n}\n\nexport default TextToolbarSidebarTextVertical;\n", "import Stage from './Stage';\n\nexport default Stage;\n", "import React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport Button from 'components/shared/Button';\nimport Slider from 'components/shared/Slider';\nimport { useResizeObserver } from 'utils/hooks';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\nimport dimensions from 'domains/stage_dimensions';\nimport rooms from 'domains/wall_preview_rooms';\nimport ui from 'domains/ui';\nimport textNodes from 'domains/text_nodes';\n\nimport { selectZoomedPPI, selectArrangementHeight, selectArrangementWidth } from 'selectors/ppi';\nimport {\n calculateAutoFit,\n centerArrangement,\n prepareArrangementMovement,\n wallPreviewBoundsCheck,\n} from 'thunks/arrangement_thunks';\n\nimport Canvas from './Canvas';\n\nfunction Stage() {\n const dispatch = useAppDispatch();\n const activeCanvasId = useAppSelector(activeEditor.selectors.canvasId);\n const activeCatalog = useAppSelector(activeEditor.selectors.catalog);\n const activeSubcatalog = useAppSelector(activeEditor.selectors.subcatalog);\n const activeTextNodeId = useAppSelector(textNodes.selectors.activeNode);\n const canvasIds = useAppSelector(canvases.selectors.selectIds);\n const ppi = useAppSelector(selectZoomedPPI);\n const arrangementWidth = useAppSelector(selectArrangementWidth);\n const arrangementHeight = useAppSelector(selectArrangementHeight);\n const arrangementPosition = useAppSelector(canvases.selectors.arrangementPosition);\n const isCartProduct = useAppSelector(activeEditor.selectors.isCartProduct);\n\n const whichWallPreview = useAppSelector(rooms.selectors.whichWallPreview);\n\n const screenDimensions = useAppSelector(dimensions.selectors.screenDimensions);\n const stageZoom = useAppSelector(dimensions.selectors.zoom);\n const wallPreviewDimensions = useAppSelector(dimensions.selectors.wallPreviewDimensions);\n const wallPreviewEnabled = useAppSelector(dimensions.selectors.wallPreviewActive);\n\n const stageElem = useRef<HTMLDivElement>(null);\n\n const [shouldCenterArrangement, setShouldCenterArrangement] = useState(true);\n const [editingCanvasId, setEditingCanvasId] = useState<string | null>(null);\n const [wasDragging, setWasDragging] = useState(false);\n\n const innerStageDimensions = useResizeObserver('app_stage_inner');\n\n // from wallpreview component, probably better place for this\n const isFramesClass = useMemo(() => {\n let className = 'not-frames';\n\n if (\n activeCatalog &&\n (activeCatalog.slug === 'FramedPrints' || activeCatalog.slug === 'woodprints')\n ) {\n className = 'frames';\n }\n\n return className;\n }, [activeCatalog]);\n\n const hasArrangement = useMemo(\n () => activeSubcatalog && activeSubcatalog.arrangement,\n [activeSubcatalog]\n );\n\n const showStageTools = useMemo(\n () => !wallPreviewEnabled && !isCartProduct && hasArrangement,\n [wallPreviewEnabled, isCartProduct, hasArrangement]\n );\n\n // Set the stage dimensions when resize observer hook updates\n useEffect(() => {\n dispatch(dimensions.actions.setScreenDimensions(innerStageDimensions));\n }, [innerStageDimensions, dispatch]);\n\n // Toggle autofit/centering when wall preview is turned on/off\n // Toggle should center arrangement so it doesn't constantly center when on wall previews\n useEffect(() => {\n const action = wallPreviewEnabled ? centerArrangement() : calculateAutoFit(true);\n dispatch(action);\n setShouldCenterArrangement(!wallPreviewEnabled);\n }, [dispatch, wallPreviewEnabled]);\n\n // Center the arrangement if we need it -- often just used for the initial positioning\n useEffect(() => {\n if (shouldCenterArrangement) {\n dispatch(centerArrangement());\n }\n }, [dispatch, shouldCenterArrangement, ppi, arrangementWidth, arrangementHeight]);\n\n // When wall preview is on, check that the arrangement is within the bounds when screen/wall preview sizes change\n useEffect(() => {\n if (wallPreviewEnabled) {\n dispatch(wallPreviewBoundsCheck());\n }\n }, [wallPreviewEnabled, screenDimensions, dispatch]);\n\n const shouldAllowStagePan = useMemo(() => {\n return hasArrangement && (stageZoom !== 1 || canvasIds.length > 1);\n }, [hasArrangement, stageZoom, canvasIds]);\n\n const wallPreviewBoundingContainerStyle = useMemo(() => {\n if (!wallPreviewEnabled || !wallPreviewDimensions || !whichWallPreview?.blobSrc) {\n return {\n width: screenDimensions.width,\n height: screenDimensions.height,\n };\n }\n\n return {\n backgroundImage: `url(${whichWallPreview.blobSrc})`,\n height: wallPreviewDimensions.height,\n width: wallPreviewDimensions.width,\n };\n }, [wallPreviewEnabled, whichWallPreview, wallPreviewDimensions, screenDimensions]);\n\n const arrangementWrapperStyle: React.CSSProperties = useMemo(() => {\n const top = arrangementPosition.y * ppi;\n const left = arrangementPosition.x * ppi;\n const width = arrangementWidth * ppi;\n const height = arrangementHeight * ppi;\n return {\n position: 'absolute',\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n };\n }, [arrangementHeight, arrangementWidth, arrangementPosition, ppi]);\n\n const handleStageClick = (e: React.MouseEvent<HTMLDivElement>) => {\n const canvasElements = Array.from(document.querySelectorAll('.canvas'));\n const clickInCanvas = canvasElements.some(\n (canvas) => e.target instanceof Element && canvas.contains(e.target)\n );\n if (!clickInCanvas && !wasDragging) {\n setEditingCanvasId(null);\n }\n\n if (wasDragging) {\n setWasDragging(false);\n }\n\n const textnodes = Array.from(document.querySelectorAll('.text_node--svg'));\n const clickInTextNode = textnodes.some(\n (textnode) => e.target instanceof Element && textnode.contains(e.target)\n );\n if (!clickInTextNode) {\n if (activeTextNodeId) {\n dispatch(ui.actions.setSidebarComponent('default'));\n dispatch(textNodes.actions.setActiveTextNodeUid(''));\n }\n }\n };\n\n function handleZoom(value: string) {\n dispatch(dimensions.actions.setStageZoom(parseFloat(value)));\n }\n\n function handleAutoFit() {\n dispatch(calculateAutoFit(true));\n }\n\n function handleMousePan(e: React.MouseEvent<HTMLDivElement>) {\n if (!shouldAllowStagePan) return;\n\n const canvasElements = Array.from(document.querySelectorAll('.canvas'));\n const stageTools = document.querySelector('.stage-tools');\n\n const clickInTools = stageTools && e.target instanceof Element && stageTools.contains(e.target);\n const clickInCanvas = canvasElements.some(\n (canvas) => e.target instanceof Element && canvas.contains(e.target)\n );\n\n if (clickInCanvas || clickInTools) {\n return;\n }\n\n setShouldCenterArrangement(false);\n\n function trackmove({ movementX, movementY }: MouseEvent) {\n if (stageElem.current) {\n stageElem.current.style.cursor = 'grabbing';\n }\n\n setWasDragging(true);\n dispatch(prepareArrangementMovement({ movementX, movementY }));\n }\n\n document.addEventListener('mousemove', trackmove);\n document.addEventListener(\n 'mouseup',\n () => {\n document.removeEventListener('mousemove', trackmove);\n if (stageElem.current) {\n stageElem.current.style.cursor = 'grab';\n }\n },\n { once: true }\n );\n }\n\n function handleTouchPan(e: TouchEvent) {\n if (!shouldAllowStagePan) return;\n\n let previousTouch: Touch | undefined;\n\n const canvasElements = Array.from(document.querySelectorAll('.canvas'));\n const stageTools = document.querySelector('.stage-tools');\n\n const clickInTools = stageTools && e.target instanceof Element && stageTools.contains(e.target);\n const clickInCanvas = canvasElements.some(\n (canvas) => e.target instanceof Element && canvas.contains(e.target)\n );\n\n if (clickInCanvas || clickInTools) {\n return;\n }\n\n setShouldCenterArrangement(false);\n\n function trackmove(moveEvent: TouchEvent) {\n moveEvent.preventDefault();\n const touch = moveEvent.touches[0];\n let movementX;\n let movementY;\n\n if (previousTouch) {\n movementX = touch.pageX - previousTouch.pageX;\n movementY = touch.pageY - previousTouch.pageY;\n previousTouch = touch;\n } else {\n previousTouch = touch;\n return;\n }\n\n setWasDragging(true);\n dispatch(prepareArrangementMovement({ movementX, movementY }));\n }\n\n document.addEventListener('touchmove', trackmove, { passive: false });\n document.addEventListener(\n 'touchend',\n () => {\n document.removeEventListener('touchmove', trackmove);\n previousTouch = undefined;\n },\n { once: true }\n );\n }\n\n const Canvases = useMemo(() => {\n return canvasIds.map((canvasId) => {\n return (\n <Canvas\n canvasId={canvasId as string}\n key={canvasId}\n isEditingCanvas={canvasId === editingCanvasId && canvasId === activeCanvasId}\n setEditingCanvasId={setEditingCanvasId}\n setShouldCenterArrangement={setShouldCenterArrangement}\n />\n );\n });\n }, [activeCanvasId, canvasIds, editingCanvasId]);\n\n useEffect(() => {\n const stage = document.getElementById('app_stage');\n\n if (stage) {\n stage.addEventListener('touchstart', handleTouchPan, { passive: false });\n }\n\n return function cleanup() {\n const stage = document.getElementById('app_stage');\n if (stage) {\n stage.removeEventListener('touchstart', handleTouchPan);\n }\n };\n }, []);\n\n return (\n // TODO: Any better way to handle this?\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n id=\"app_stage\"\n ref={stageElem}\n className={`app_stage ${wallPreviewEnabled ? `wall-preview-enabled ${isFramesClass}` : ''}`}\n onClick={handleStageClick}\n onMouseDown={handleMousePan}\n style={{ cursor: shouldAllowStagePan ? 'grab' : 'default' }}\n >\n {showStageTools && (\n <div className=\"stage-tools\">\n <Button\n type=\"icon\"\n icon=\"crosshairs\"\n size=\"lg\"\n a11yText=\"Fit products to screen\"\n appearance=\"themed\"\n onClick={handleAutoFit}\n />\n <Slider\n id=\"zoom-stage\"\n min=\"0.05\"\n max=\"2\"\n value={stageZoom}\n step=\"0.01\"\n onChange={handleZoom}\n title=\"Zoom all products\"\n />\n </div>\n )}\n\n <div id=\"app_stage_inner\" className=\"app_stage_inner\">\n <div className=\"arrangement-container\" style={arrangementWrapperStyle}>\n {Canvases}\n </div>\n <div\n className=\"wall-preview-bounding-container\"\n style={wallPreviewBoundingContainerStyle}\n />\n </div>\n </div>\n );\n}\n\nexport default Stage;\n", "import Slider from './Slider';\n\nexport default Slider;\n", "import React from 'react';\n\nexport type SliderProps = {\n id: string;\n min: number | string;\n max: number | string;\n step: number | string;\n value: number | string;\n onChange: (e: number | string) => void;\n title: string;\n showLabel?: boolean;\n};\n\nfunction Slider({ id, min, max, step, value, onChange, title, showLabel = false }: SliderProps) {\n return (\n <div className=\"slider-wrapper\">\n <label htmlFor={id} className={showLabel ? 'slider-label' : 'screen-reader-text'}>\n {title}\n </label>\n <input\n type=\"range\"\n className=\"slider\"\n id={id}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n title={title}\n />\n </div>\n );\n}\n\nexport default Slider;\n", "import { clamp, keyBy, uniqBy } from 'lodash';\n\n//TODO: this is bad, but until these thunks are converted to epics it's necessary\nimport * as optionGroupAPI from 'domains/option_groups/option_groups.api';\nimport * as arrangementsAPI from 'domains/saved_arrangements/saved_arrangements.api';\n\nimport {\n selectDefaultPPI,\n selectZoomedPPI,\n selectArrangementHeight,\n selectArrangementWidth,\n} from 'selectors/ppi';\n\nimport subcatalogsModule from 'domains/subcatalogs';\nimport * as subcatalogsAPI from 'domains/subcatalogs/subcatalogs.api';\nimport productsModule from 'domains/products';\nimport optionGroupsModule from 'domains/option_groups';\nimport photosModule from 'domains/photos';\nimport dimensionModule from 'domains/stage_dimensions';\nimport canvasModule from 'domains/canvases';\nimport savedArrangements from 'domains/saved_arrangements';\nimport cropsModule from 'domains/crops';\n\nimport {\n calculateArrangementCanvasPositions,\n calculateArrangementHeight,\n calculateArrangementWidth,\n findArrangementPositionToCenter,\n getArrangementAvailability,\n} from 'utils/arrangement_util';\nimport { orientationAndRatioPercentage, realNumber } from 'utils/math_util';\nimport { notNull } from 'utils/type_guards';\nimport { createRotatedImageBlob, imageFilters } from 'utils/image_util';\nimport { fetchPhotoBlob } from 'utils/image_load';\n\nimport type { AppThunk } from 'store/wos_store';\nimport type { SavedArrangement } from 'domains/saved_arrangements';\nimport type { RestoreArrangementCropsPayload } from 'domains/crops';\nimport type { CanvasConfiguration, NextSizePayload } from 'domains/canvases';\nimport type { ImageFilter } from 'types/photo_types';\nimport type { ProductTemplateAPIData } from 'types/catalog_types';\nimport type { SavedArrangementCanvas } from 'domains/saved_arrangements';\n\ntype PrepareArrangementMovePayload = {\n id?: string;\n movementX: number;\n movementY: number;\n nextSize?: NextSizePayload;\n};\n\nexport function prepareAddCanvas(): AppThunk {\n return function prepareThunk(dispatch, getState) {\n // Place next canvas 1 inch to the right of the arrangement\n const state = getState();\n const arrangementWidth = selectArrangementWidth(state);\n\n dispatch(canvasModule.actions.setNextCanvasPosition(arrangementWidth + 1));\n };\n}\n\n// Converts movement in px to inches, calculates wall preview bounds if needed\nexport function prepareArrangementMovement(payload: PrepareArrangementMovePayload): AppThunk {\n const { id, nextSize } = payload;\n let { movementX, movementY } = payload;\n\n return function prepareThunk(dispatch, getState) {\n const state = getState();\n const wallPreviewEnabled = dimensionModule.selectors.wallPreviewActive(state);\n const ppi = selectZoomedPPI(state);\n\n movementX /= ppi;\n movementY /= ppi;\n\n // Bound movement within wall preview\n let leftLimit: number | undefined;\n let rightLimit: number | undefined;\n let topLimit: number | undefined;\n let bottomLimit: number | undefined;\n\n if (wallPreviewEnabled) {\n const wallPreviewBounds = dimensionModule.selectors.wallPreviewBounds(state);\n\n ({ leftLimit, rightLimit, topLimit, bottomLimit } = wallPreviewBounds);\n\n // Screen & wall preview dimensions are in px, so adjust to inches\n leftLimit /= ppi;\n topLimit /= ppi;\n rightLimit /= ppi;\n bottomLimit /= ppi;\n\n // If we have an id, we're moving a canvas. Otherwise, it's the whole arrangement\n if (id) {\n const arrangementPosition = canvasModule.selectors.arrangementPosition(state);\n const canvasConfig = canvasModule.selectors.selectById(state, id);\n if (!canvasConfig || !canvasConfig.product) return;\n\n const product = productsModule.selectors.selectById(state, canvasConfig.product);\n if (!product) return;\n\n // If we have next size, we're repositioning based on a product drag-resize\n const productSize =\n nextSize || productsModule.utils.calculateProductSize(product, canvasConfig);\n\n // Determine bounds for canvas' relative position within the arrangement\n topLimit -= arrangementPosition.y + movementY;\n bottomLimit -= arrangementPosition.y + movementY + productSize.height;\n leftLimit -= arrangementPosition.x + movementX;\n rightLimit -= arrangementPosition.x + movementX + productSize.width;\n } else {\n // Determine the right/bottom bounds based on the entire arrangement size\n const arrangementWidth = selectArrangementWidth(state);\n const arrangementHeight = selectArrangementHeight(state);\n rightLimit -= arrangementWidth;\n bottomLimit -= arrangementHeight;\n }\n }\n\n const action = id\n ? canvasModule.actions.moveCanvas({\n id,\n movementX,\n movementY,\n leftLimit,\n rightLimit,\n topLimit,\n bottomLimit,\n })\n : canvasModule.actions.moveArrangement({\n movementX,\n movementY,\n leftLimit,\n rightLimit,\n topLimit,\n bottomLimit,\n });\n\n dispatch(action);\n };\n}\n\n// Calculates the correct zoom value to fit everything within the screen\nexport function calculateAutoFit(shouldCenterArrangement?: boolean): AppThunk {\n return function autoFitThunk(dispatch, getState) {\n const state = getState();\n const defaultPPI = selectDefaultPPI(state);\n\n // Unlikely we would be running this if default ppi is not ready,\n // but since we're dividing by it we should break early if that's the case\n if (!defaultPPI) return;\n\n const arrangementDimensions = {\n width: selectArrangementWidth(state),\n height: selectArrangementHeight(state),\n };\n const screenDimensions = dimensionModule.selectors.screenDimensions(state);\n\n // Find the zoom value to get a ppi to fit the arrangement on the screen\n const { orientation } = orientationAndRatioPercentage(\n arrangementDimensions.width,\n arrangementDimensions.height\n );\n\n const primaryDim = orientation === 'landscape' ? 'width' : 'height';\n const secondaryDim = primaryDim === 'width' ? 'height' : 'width';\n\n let newppi = screenDimensions[primaryDim] / arrangementDimensions[primaryDim];\n\n // If the calculated primary dimension is going to be too large, use the other one\n if (arrangementDimensions[secondaryDim] * newppi > screenDimensions[secondaryDim]) {\n newppi = screenDimensions[secondaryDim] / arrangementDimensions[secondaryDim];\n }\n\n // Find the zoom value to fit items on stage, adjust for a little extra margin\n let fitZoom = newppi / defaultPPI;\n fitZoom -= fitZoom * 0.1;\n dispatch(dimensionModule.actions.setStageZoom(fitZoom));\n\n if (shouldCenterArrangement) {\n dispatch(centerArrangement());\n }\n };\n}\n\n// Sets the arrangement position to center it within the stage dimensions\nexport function centerArrangement(): AppThunk {\n return function centerArrangementThunk(dispatch, getState) {\n const state = getState();\n\n const ppi = selectZoomedPPI(state);\n const arrangementWidth = selectArrangementWidth(state);\n const arrangementHeight = selectArrangementHeight(state);\n const { width: screenWidth, height: screenHeight } =\n dimensionModule.selectors.screenDimensions(state);\n\n // We only want to center if it is _explicitly_ not centered\n // If we don't have the data for it, skip any render changes\n if (!ppi || !arrangementWidth || !arrangementHeight || !screenHeight || !screenWidth) return;\n\n const currentPosition = canvasModule.selectors.arrangementPosition(state);\n\n const centerPosition = findArrangementPositionToCenter(\n { width: arrangementWidth, height: arrangementHeight },\n { width: screenWidth / ppi, height: screenHeight / ppi }\n );\n\n // If already centered, skip any changes\n if (currentPosition.x === centerPosition.x && currentPosition.y === centerPosition.y) {\n return;\n }\n\n dispatch(\n canvasModule.actions.setArrangementPosition({ x: centerPosition.x, y: centerPosition.y })\n );\n };\n}\n\n// Clamps the arrangement position within the bounds of the wall preview size\nexport function wallPreviewBoundsCheck(): AppThunk {\n return function boundsCheckThunk(dispatch, getState) {\n const state = getState();\n\n const ppi = selectZoomedPPI(state);\n const arrangementPosition = canvasModule.selectors.arrangementPosition(state);\n const arrangementWidth = selectArrangementWidth(state);\n const arrangementHeight = selectArrangementHeight(state);\n let { leftLimit, rightLimit, topLimit, bottomLimit } =\n dimensionModule.selectors.wallPreviewBounds(state);\n\n // Skip if limits are not defined yet\n if (!realNumber(leftLimit)) return;\n\n leftLimit /= ppi;\n topLimit /= ppi;\n rightLimit = rightLimit / ppi - arrangementWidth;\n bottomLimit = bottomLimit / ppi - arrangementHeight;\n\n const arrangementRightEdge = arrangementPosition.x + arrangementWidth;\n const arrangementBottomEdge = arrangementPosition.y + arrangementHeight;\n\n const withinLeftBound = arrangementPosition.x > leftLimit;\n const withinRightBound = arrangementRightEdge < rightLimit;\n const withinTopBound = arrangementPosition.y > topLimit;\n const withinBottomBound = arrangementBottomEdge < bottomLimit;\n\n if (!withinRightBound || !withinLeftBound || !withinTopBound || !withinBottomBound) {\n const x = clamp(arrangementPosition.x, leftLimit, rightLimit);\n const y = clamp(arrangementPosition.y, topLimit, bottomLimit);\n\n dispatch(canvasModule.actions.setArrangementPosition({ x, y }));\n }\n };\n}\n\nexport function prepareRestoreArrangement(arrangement: SavedArrangement): AppThunk {\n return async function prepareRestoreArrangementThunk(dispatch, getState) {\n let preState = getState();\n\n // Arrangements can only be composed of subcatalogs within one catalog\n // So, if we have the subcatalog of the first canvas, we will have all the\n // possible subcatalogs in this arrangement\n const firstCanvasConfig = arrangement.canvases[0].config;\n const subcatalog = subcatalogsModule.selectors.selectById(\n preState,\n firstCanvasConfig.subcatalog\n );\n\n // If we don't have the subcatalogs for this arrangement, fetch and add them to the store\n if (!subcatalog) {\n const catalogId = firstCanvasConfig.catalog;\n const response = await subcatalogsAPI.allByCatalogId(catalogId);\n dispatch(\n subcatalogsModule.actions.fetchSubcatalogs.fulfilled({\n subcatalogs: response,\n catalogId,\n })\n );\n }\n\n // We have the subcatalogs & products for sure now, let's check for option groups\n preState = getState();\n const uniqueProductCanvases = uniqBy(arrangement.canvases, (canvas) => canvas.config.product);\n const haveAllOptionGroups = uniqueProductCanvases.every((canvas) => {\n const {\n config: { product },\n } = canvas;\n const optionGroups = optionGroupsModule.selectors.forTemplateId(preState, product);\n return optionGroups && optionGroups.length > 0;\n });\n\n if (!haveAllOptionGroups) {\n const promises = uniqueProductCanvases.map((canvas) => {\n const {\n config: { product },\n } = canvas;\n return optionGroupAPI.allByTemplateId(product);\n });\n\n const allOptionGroupsAndOptions = await Promise.all(promises);\n\n allOptionGroupsAndOptions.forEach((joined, index) => {\n dispatch(\n optionGroupsModule.actions.fetchOptionGroups.fulfilled({\n optionGroups: joined,\n templateId: uniqueProductCanvases[index].config.product,\n })\n );\n });\n }\n\n preState = getState();\n const unavailable = getArrangementAvailability(preState, arrangement.canvases);\n\n if (unavailable.length > 0) {\n dispatch(\n savedArrangements.actions.addUnavailableArrangements({\n id: arrangement.id,\n items: unavailable,\n })\n );\n } else {\n dispatch(restoreArrangementAndAutoFit(arrangement));\n }\n\n // TODO: Also need to dispatch fetch svgs if there are any\n };\n}\n\nexport function restoreArrangementAndAutoFit(arrangement: SavedArrangement): AppThunk {\n return async function restoreArrangementThunk(dispatch, getState) {\n const state = getState();\n let { crops } = arrangement;\n\n // Key crops by canvas ID to make later merging easy\n const cropsByCanvasId = keyBy(crops, 'canvas_id');\n\n dispatch(canvasModule.actions.restoreArrangement(arrangement));\n\n // Match up photos with crops, and a promise for the crop's base image blob\n const photosAndCrops = crops\n .map((crop) => {\n const photo = photosModule.selectors.selectById(state, crop.ordering_upload_id);\n if (!photo) return null;\n\n return { crop, photo };\n })\n .filter(notNull)\n .map((merged) => {\n const { crop, photo } = merged;\n const appliedFilter = crop.filter_applied || 'original';\n const filter = imageFilters.find((f) => f.filterType === appliedFilter) as ImageFilter;\n const imageSrc = photo[filter.filePathFull];\n\n return { ...merged, blobPromise: fetchPhotoBlob(imageSrc) };\n });\n\n // Fetch all the base blobs\n const blobs = await Promise.all(photosAndCrops.map((merged) => merged.blobPromise));\n\n // Create promises for rotated crop image blobs\n const withRotationPromises = blobs.map((blob, index) => {\n // index will match the merged photosAndCrops array\n const matched = photosAndCrops[index];\n\n // If we don't need to rotate it, Promise.all will resolve with the original blob\n if (matched.crop.degrees_rotated === 0) return blob;\n\n const promise = createRotatedImageBlob(blob, matched.crop.degrees_rotated);\n return promise;\n });\n\n // Fetch all the rotated blobs, resolving the unrotated ones with the original\n const withRotatedBlobs = await Promise.all(withRotationPromises);\n\n // Merge the crop with the blob src\n const restoreCrops: RestoreArrangementCropsPayload[] = withRotatedBlobs.map((blob, index) => {\n // Again, index will match the merged photosAndCrops array\n const { canvas_id } = photosAndCrops[index].crop;\n const blobSrc = URL.createObjectURL(blob);\n\n return { ...cropsByCanvasId[canvas_id], blobSrc };\n });\n\n dispatch(cropsModule.actions.restoreArrangementCrops(restoreCrops));\n\n const wallPreviewEnabled = dimensionModule.selectors.wallPreviewActive(state);\n if (wallPreviewEnabled) {\n dispatch(centerArrangement());\n } else {\n dispatch(calculateAutoFit(true));\n }\n };\n}\n\nexport function updateUnavailableArrangement(\n removeIds: string[],\n arrangement: SavedArrangement\n): AppThunk {\n return async function updateUnavailableArrangementThunk(dispatch, getState) {\n let state = getState();\n const productsById = productsModule.selectors.selectEntities(state);\n\n // We have to do several different modifications based on the arrangement passed in,\n // so just do them all in one loop\n const canvasesForSave: Record<string, SavedArrangementCanvas> = {};\n const canvasesById: Record<string, CanvasConfiguration> = {};\n let canvasesWithArrangementShape: Pick<CanvasConfiguration, 'position' | 'id'>[] = [];\n arrangement.canvases.forEach((canvas) => {\n const { x, y, width, height, config } = canvas;\n const { id } = config;\n\n // Exclude the removed ones\n if (removeIds.indexOf(id) === -1) {\n canvasesById[id] = config;\n canvasesForSave[id] = { config, width, height, x: 0, y: 0 };\n canvasesWithArrangementShape.push({ position: { x, y }, id });\n }\n });\n\n const repositionedCanvases = calculateArrangementCanvasPositions(canvasesWithArrangementShape);\n\n // Put them back to the right shape after adjusting the positions\n // and add the positions to the array for PUT request\n canvasesWithArrangementShape = [];\n repositionedCanvases.updates.forEach((canvas) => {\n const { changes, id } = canvas;\n const { x, y } = changes.position;\n\n canvasesForSave[id].x = x;\n canvasesForSave[id].y = y;\n canvasesWithArrangementShape.push({ position: { x, y }, id });\n });\n\n const width = calculateArrangementWidth(\n canvasesWithArrangementShape,\n canvasesById,\n productsById as Record<number, ProductTemplateAPIData>\n );\n const height = calculateArrangementHeight(\n canvasesWithArrangementShape,\n canvasesById,\n productsById as Record<number, ProductTemplateAPIData>\n );\n\n const keepCrops = arrangement.crops.filter((crop) => {\n return !!canvasesForSave[crop.canvas_id];\n });\n\n // Save the arrangement with updated canvases & size\n const resp = await arrangementsAPI.update(arrangement.id, {\n name: arrangement.name,\n width,\n height,\n canvases: Object.values(canvasesForSave),\n crops: keepCrops,\n });\n\n // Send the update response to the reducer\n dispatch(savedArrangements.actions.update.fulfilled(resp));\n\n // Get the arrangement after putting it through reducer which normalizes the data\n state = getState();\n const toRestore = savedArrangements.selectors.selectById(\n state,\n arrangement.id\n ) as SavedArrangement;\n dispatch(restoreArrangementAndAutoFit(toRestore));\n };\n}\n", "import catalog from 'apis/catalog';\n\nimport type { RawOptionGroupAPIData } from './option_groups.types';\n\nexport const allByTemplateId = async (id: number) => {\n const { data } = await catalog.get<RawOptionGroupAPIData[]>(`/options.json?template_id=${id}`);\n return data;\n};\n\nexport const orderOptionGroups = async () => {\n const { data } = await catalog.get<RawOptionGroupAPIData[]>('/order_option_groups.json');\n return data;\n};\n", "import axios from 'axios';\n\nimport { API_ROOT_URL, API_URL, API_TOKEN } from 'utils/globals';\n\nconst headers = {\n common: {\n Authorization: `Token token=\"${API_TOKEN}\"`,\n },\n};\n\nexport default axios.create({ baseURL: API_URL, headers });\n\nexport const rootAPI = axios.create({\n baseURL: API_ROOT_URL,\n headers,\n});\n", "import wos from 'apis/wos';\n\nimport type { SavedArrangement, SavedArrangementPOSTData } from 'domains/saved_arrangements';\n\nexport const all = async () => {\n const response = await wos.get<SavedArrangement[]>('/arrangements.json');\n return response.data;\n};\n\nexport const find = async (id: number) => {\n const response = await wos.get<SavedArrangement>(`/arrangements/${id}.json`);\n return response.data;\n};\n\nexport const create = async (data: SavedArrangementPOSTData) => {\n const response = await wos.post<SavedArrangement>('/arrangements.json', {\n arrangement: data,\n });\n return response.data;\n};\n\nexport const update = async (id: number, data: SavedArrangementPOSTData) => {\n const response = await wos.put<SavedArrangement>(`/arrangements/${id}.json`, {\n arrangement: data,\n });\n return response.data;\n};\n\nexport const destroy = async (id: number) => {\n await wos.delete(`/arrangements/${id}.json`);\n};\n\nexport const fromUploads = async (ids: number[]) => {\n const response = await wos.get<SavedArrangement[]>('/arrangements/from_uploads', {\n params: { ids },\n });\n return response.data;\n};\n", "import catalog from 'apis/catalog';\nimport { RawSubcatalogAPIData } from 'types/catalog_types';\n\nexport const allByCatalogId = async (catalogId: number) => {\n const { data } = await catalog.get<RawSubcatalogAPIData[]>(\n `/templates.json?parent_id=${catalogId}`\n );\n return data;\n};\n", "import actions from './saved_arrangements.actions';\nimport selectors from './saved_arrangements.selectors';\nimport slice from './saved_arrangements.slice';\n\nexport * from './saved_arrangements.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './saved_arrangements.slice';\nexport default module;\n", "import { createAPIActions } from 'utils/common';\n\nimport {\n CreateArrangementPayload,\n SavedArrangement,\n UpdateArrangementPayload,\n} from './saved_arrangements.types';\n\nconst getAll = createAPIActions<void, SavedArrangement[]>('savedArrangements', 'getAll');\nconst create = createAPIActions<CreateArrangementPayload, SavedArrangement>(\n 'savedArrangements',\n 'create'\n);\nconst update = createAPIActions<UpdateArrangementPayload, SavedArrangement>(\n 'savedArrangements',\n 'update'\n);\nconst destroy = createAPIActions<number, number>('savedArrangements', 'destroy');\n\nexport default {\n getAll,\n create,\n update,\n destroy,\n};\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport canvases from 'domains/canvases';\nimport products from 'domains/products';\n\nimport { hasFullyConfiguredCanvas, notNull } from 'utils/type_guards';\n\nimport slice from './saved_arrangements.slice';\nimport arrangementsAdapter from './saved_arrangements.adapter';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectActiveSavedArrangementId = (state: LocalState) => state.active;\n\nconst selectActiveSavedArrangement = (state: LocalState) => {\n if (state.active === null) return;\n\n return state.entities[state.active];\n};\n\nconst selectUnavailableArrangement = (state: LocalState) => state.unavailable;\n\nconst selectUnavailableArrangementIds = (state: LocalState) => state.unavailableIds;\n\nconst selectArrangementForSave = createSelector(\n [canvases.selectors.selectAll, products.selectors.selectEntities],\n (allCanvases, productsById) => {\n return allCanvases\n .map((canvas) => {\n const product = canvas.product ? productsById[canvas.product] : null;\n\n if (!product || !hasFullyConfiguredCanvas(canvas)) return null;\n\n const { x, y } = canvas.position;\n const { width, height } = products.utils.calculateProductSize(product, canvas);\n\n return { x, y, width, height, config: canvas };\n })\n .filter(notNull);\n }\n);\n\nexport default {\n ...arrangementsAdapter.getSelectors(localState),\n activeId: compose(selectActiveSavedArrangementId, localState),\n active: compose(selectActiveSavedArrangement, localState),\n unavailable: compose(selectUnavailableArrangement, localState),\n unavailableIds: compose(selectUnavailableArrangementIds, localState),\n // Already globalized\n forSave: selectArrangementForSave,\n};\n", "import { PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport arrangementsAdapter from './saved_arrangements.adapter';\nimport actions from './saved_arrangements.actions';\n\nimport canvases from 'domains/canvases';\n\nimport type {\n SavedArrangementsSliceInitialState,\n UnavailableArrangement,\n} from './saved_arrangements.types';\n\nconst initialState: SavedArrangementsSliceInitialState = {\n status: 'idle',\n active: null,\n unavailable: null,\n unavailableIds: [],\n};\n\nconst savedArrangements = createSlice({\n name: 'savedArrangements',\n initialState: arrangementsAdapter.getInitialState(initialState),\n reducers: {\n updateOne: arrangementsAdapter.updateOne,\n addUnavailableArrangements(state, { payload }: PayloadAction<UnavailableArrangement>) {\n return {\n ...state,\n unavailable: payload,\n unavailableIds: [...state.unavailableIds, payload.id],\n };\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.create.pending, (state) => {\n return {\n ...state,\n status: 'loading',\n };\n })\n .addCase(actions.create.fulfilled, (state, { payload }) => {\n const arrangement = payload;\n const update = arrangementsAdapter.addOne(state, {\n ...arrangement,\n canvases: arrangement.canvases,\n crops: arrangement.crops,\n });\n\n update.active = payload.id;\n update.status = 'idle';\n\n return update;\n })\n .addCase(actions.update.pending, (state) => {\n return {\n ...state,\n status: 'loading',\n };\n })\n .addCase(actions.update.fulfilled, (state, { payload }) => {\n if (!payload) return state;\n\n const update = arrangementsAdapter.updateOne(state, {\n id: payload.id,\n changes: {\n ...payload,\n canvases: payload.canvases,\n crops: payload.crops,\n },\n });\n\n update.active = payload.id;\n update.status = 'idle';\n\n return update;\n })\n .addCase(actions.destroy.pending, (state) => {\n return {\n ...state,\n status: 'loading',\n };\n })\n .addCase(actions.destroy.fulfilled, (state, { payload }) => {\n const update = arrangementsAdapter.removeOne(state, payload);\n\n if (update.active === payload) {\n update.active = null;\n }\n\n if (update.unavailable && update.unavailable.id === payload) {\n update.unavailable = null;\n }\n\n update.status = 'idle';\n\n return update;\n })\n .addCase(actions.getAll.pending, (state) => {\n return {\n ...state,\n status: 'loading',\n };\n })\n .addCase(actions.getAll.fulfilled, (state, { payload }) => {\n const arrangements = payload.map((arrangement) => {\n return {\n ...arrangement,\n canvases: arrangement.canvases,\n crops: arrangement.crops,\n };\n });\n\n const update = arrangementsAdapter.upsertMany(state, arrangements);\n update.status = 'idle';\n })\n .addCase(canvases.actions.restoreArrangement, (state, { payload }) => {\n return {\n ...state,\n active: payload.id,\n unavailable: null,\n };\n });\n },\n});\n\nexport default savedArrangements;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport { SavedArrangement } from './saved_arrangements.types';\n\nconst arrangementsAdapter = createEntityAdapter<SavedArrangement>();\n\nexport default arrangementsAdapter;\n", "import type { Point, Dimension, PickRequired, LoadingStatus } from 'types/common_types';\nimport type { CanvasConfiguration } from 'domains/canvases';\nimport type { CanvasCartPhoto, CartPhoto } from 'types/photo_types';\n\nexport type SavedArrangementsSliceInitialState = {\n status: LoadingStatus;\n active: number | null;\n unavailable: UnavailableArrangement | null;\n unavailableIds: number[];\n};\n\nexport type SavedArrangementCanvas = Point &\n Dimension & {\n config: PickRequired<\n CanvasConfiguration,\n 'id' | 'catalog' | 'subcatalog' | 'product' | 'options'\n >;\n };\n\nexport type SavedArrangementCrop = Omit<\n CartPhoto,\n 'photo_url' | 'original_filename' | 'node_id'\n> & {\n canvas_id: string;\n node_uid: string;\n};\n\nexport type SavedArrangement = {\n id: number;\n customer_id: string;\n preview_url: string;\n name: string;\n created_at: string;\n updated_at: string;\n height: number | null;\n width: number | null;\n canvases: SavedArrangementCanvas[];\n crops: SavedArrangementCrop[];\n};\n\nexport type SavedArrangementPOSTData = Omit<\n SavedArrangement,\n 'id' | 'customer_id' | 'preview_url' | 'created_at' | 'updated_at'\n>;\n\nexport type CreateArrangementPayload = Omit<SavedArrangementPOSTData, 'crops'> & {\n crops: CanvasCartPhoto[];\n};\n\nexport type UpdateArrangementPayload = CreateArrangementPayload & {\n id: number;\n};\n\nexport type UnavailableArrangementItem = {\n type: 'product' | 'option-group' | 'option';\n reason: 'unavailable' | 'discontinued';\n item: { id: string; name?: string; parentName?: string };\n};\n\nexport type UnavailableArrangement = {\n id: number;\n items: UnavailableArrangementItem[];\n};\n", "import React, { useEffect, useReducer, useMemo } from 'react';\n\nimport Spinner from 'components/shared/Spinner';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { orientationAndRatioPercentage } from 'utils/math_util';\nimport { maskImageLoadedReducer } from 'utils/reducers';\n\nimport { selectZoomedPPI } from 'selectors/ppi';\nimport { prepareArrangementMovement } from 'thunks/arrangement_thunks';\nimport { selectCanvasProductLoading } from 'selectors/loading_states';\n\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\nimport products from 'domains/products';\nimport ui from 'domains/ui';\nimport dimensions from 'domains/stage_dimensions';\n\nimport Node from './Node';\nimport CanvasTools from './CanvasTools';\n\nimport type { NextSizePayload } from 'domains/canvases';\n\ntype CanvasProps = {\n canvasId: string;\n isEditingCanvas: boolean;\n setEditingCanvasId: (canvasId: string | null) => void;\n setShouldCenterArrangement: (set: boolean) => void;\n};\n\nfunction Canvas(props: CanvasProps) {\n const { canvasId, isEditingCanvas, setEditingCanvasId, setShouldCenterArrangement } = props;\n\n const dispatch = useAppDispatch();\n const activeCanvasId = useAppSelector(activeEditor.selectors.canvasId);\n const canvasIds = useAppSelector(canvases.selectors.selectIds);\n const activeSubcatalog = useAppSelector(activeEditor.selectors.subcatalog);\n const wallPreviewEnabled = useAppSelector(dimensions.selectors.wallPreviewActive);\n const canvasConfig = useAppSelector((state) => canvases.selectors.selectById(state, canvasId));\n const canvasProduct = useAppSelector((state) =>\n products.selectors.selectById(state, canvasConfig?.product || '')\n );\n const visualOnlyRotation = useAppSelector(ui.selectors.visualRotation);\n const ppi = useAppSelector(selectZoomedPPI);\n const canvasProductLoading = useAppSelector(selectCanvasProductLoading);\n\n const nodes = useAppSelector((state) => canvases.selectors.nodesForCanvas(state, canvasId));\n\n // Mask node images that have been loaded\n const [maskImageLoaded, setMaskImageLoaded] = useReducer(maskImageLoadedReducer, {});\n\n const isCustomProduct = useMemo(() => {\n if (!canvasProduct) return false;\n\n return products.utils.isCustomSizeProduct(canvasProduct);\n }, [canvasProduct]);\n\n const canvasCustomSize = useMemo(() => {\n return {\n height: canvasConfig?.height || 0,\n width: canvasConfig?.width || 0,\n };\n }, [canvasConfig]);\n\n const productHeight = useMemo(() => {\n if (!canvasProduct || !canvasConfig) return 0;\n\n const { height } = products.utils.calculateProductSize(canvasProduct, canvasConfig);\n return height;\n }, [canvasProduct, canvasConfig]);\n\n const productWidth = useMemo(() => {\n if (!canvasProduct || !canvasConfig) return 0;\n\n const { width } = products.utils.calculateProductSize(canvasProduct, canvasConfig);\n return width;\n }, [canvasConfig, canvasProduct]);\n\n const canvasDimensions = useMemo(() => {\n let dimension = { height: 0, width: 0 };\n\n if (productHeight && productWidth) {\n dimension.height = productHeight * ppi;\n dimension.width = productWidth * ppi;\n }\n\n return dimension;\n }, [productWidth, productHeight, ppi]);\n\n const canvasOrientation = useMemo(() => {\n const { orientation } = orientationAndRatioPercentage(productWidth, productHeight);\n return orientation;\n }, [productWidth, productHeight]);\n\n const canvasRotation = useMemo(() => {\n return {\n rotation: canvasConfig?.rotation || 0,\n userRotated: canvasConfig?.userRotated || false,\n };\n }, [canvasConfig]);\n\n const isMultiNodeProduct = useMemo(() => {\n if (!canvasProduct) return false;\n\n return products.utils.productIsMultiNode(canvasProduct);\n }, [canvasProduct]);\n\n const canvasRotationAllowed = useMemo(() => {\n if (!canvasProduct) return false;\n\n return products.utils.canRotateProduct(canvasProduct);\n }, [canvasProduct]);\n\n const canvasPosition = useMemo(() => canvasConfig?.position, [canvasConfig]);\n\n const canvasStyle: React.CSSProperties = useMemo(() => {\n const x = canvasPosition?.x || 0;\n const y = canvasPosition?.y || 0;\n\n return {\n position: 'absolute',\n left: `${x * ppi}px`,\n top: `${y * ppi}px`,\n bottom: '0',\n right: '0',\n width: `${canvasDimensions.width}px`,\n height: `${canvasDimensions.height}px`,\n transform: `rotate(${visualOnlyRotation}deg)`,\n transition: 'transform 0.2s',\n cursor: 'default',\n zIndex: activeCanvasId === canvasId ? 2 : 1,\n };\n }, [activeCanvasId, canvasDimensions, canvasId, canvasPosition, ppi, visualOnlyRotation]);\n\n const maskNodesWithImage = useMemo(() => {\n return (nodes || [])\n .filter((node) => node.node_type === 2 && node.node_image !== '')\n .map((node) => node.node_image)\n .join(',');\n }, [nodes]);\n\n // Remove editing tools on regular stage if arrangements are disabled\n useEffect(() => {\n if (!activeSubcatalog?.arrangement && !wallPreviewEnabled) {\n setEditingCanvasId(null);\n }\n }, [activeSubcatalog, wallPreviewEnabled]);\n\n const canvasIsRendering = useMemo(() => {\n const maskImages = maskNodesWithImage.split(',');\n\n return (\n canvasProductLoading ||\n (maskNodesWithImage !== '' &&\n maskImages.length > 0 &&\n !maskImages.every((src) => maskImageLoaded[src]))\n );\n }, [canvasProductLoading, maskNodesWithImage, maskImageLoaded]);\n\n /*\n * Event Handlers\n */\n function enableDragCanvas() {\n setShouldCenterArrangement(false);\n const trackMovement = ({ movementX, movementY }: MouseEvent) => {\n dispatch(prepareArrangementMovement({ id: canvasId, movementX, movementY }));\n };\n\n document.addEventListener('mousemove', trackMovement);\n document.addEventListener(\n 'mouseup',\n () => {\n document.removeEventListener('mousemove', trackMovement);\n },\n { once: true }\n );\n }\n\n function enableDragCanvasTouch(startEvent: TouchEvent) {\n setShouldCenterArrangement(false);\n let previousTouch: Touch | undefined;\n\n startEvent.preventDefault();\n\n const trackMovement = (e: TouchEvent) => {\n e.preventDefault();\n const touch = e.touches[0];\n let movementX;\n let movementY;\n\n if (previousTouch) {\n movementX = touch.pageX - previousTouch.pageX;\n movementY = touch.pageY - previousTouch.pageY;\n previousTouch = touch;\n } else {\n previousTouch = touch;\n return;\n }\n\n dispatch(prepareArrangementMovement({ id: canvasId, movementX, movementY }));\n };\n\n document.addEventListener('touchmove', trackMovement, { passive: false });\n document.addEventListener(\n 'touchend',\n () => {\n document.removeEventListener('touchmove', trackMovement);\n previousTouch = undefined;\n },\n { once: true }\n );\n }\n\n function handleProductResizeCanvasReposition(x: number, y: number, nextSize: NextSizePayload) {\n dispatch(\n prepareArrangementMovement({\n movementX: -x,\n movementY: -y,\n nextSize,\n })\n );\n }\n\n function handleCanvasClick(id: string) {\n if (activeCanvasId !== id) {\n dispatch(canvases.actions.setActiveCanvasId(id));\n }\n\n if (activeSubcatalog?.arrangement || wallPreviewEnabled) {\n setEditingCanvasId(id);\n }\n }\n\n return (\n // TODO: Any better way to handle this?\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n className={`canvas${canvasIsRendering ? ' fade' : ''}`}\n data-testid={`canvas-${canvasId}`}\n style={canvasStyle}\n onClick={() => handleCanvasClick(canvasId)}\n >\n {canvasIsRendering && (\n <Spinner color=\"#fff\" style={{ height: '50px', width: '50px', position: 'absolute' }} />\n )}\n {activeCanvasId === canvasId && canvasIds.length > 1 && <span className=\"active-indicator\" />}\n {(nodes || []).map((node) => (\n <Node\n key={node.uid}\n node={node}\n canvasId={canvasId}\n canvasDimensions={canvasDimensions}\n canvasRotation={canvasRotation}\n canvasRotationAllowed={canvasRotationAllowed}\n canvasOrientation={canvasOrientation}\n isCustomProduct={isCustomProduct}\n isMultiNodeProduct={isMultiNodeProduct}\n setMaskImageLoaded={setMaskImageLoaded}\n />\n ))}\n {!canvasIsRendering && canvasProduct && isEditingCanvas && (\n <CanvasTools\n canvasId={canvasId}\n nodes={nodes || []}\n productWidth={productWidth}\n productHeight={productHeight}\n isCustomProduct={isCustomProduct}\n canvasRotation={canvasRotation}\n canvasCustomSize={canvasCustomSize}\n canvasDimensions={canvasDimensions}\n enableDragCanvas={enableDragCanvas}\n enableDragCanvasTouch={enableDragCanvasTouch}\n canvasProduct={canvasProduct}\n handleProductResizeCanvasReposition={handleProductResizeCanvasReposition}\n />\n )}\n </div>\n );\n}\n\nexport default Canvas;\n", "import type { NodeDimension } from 'types/node_types';\n\n// Image, Mask, Text node dimensions\n// To prevent unwanted renders, only fully update when a dimension has changed\nexport function nodeDimensionsReducer(state: NodeDimension, payload: NodeDimension) {\n if (\n state.x !== payload.x ||\n state.y !== payload.y ||\n state.w !== payload.w ||\n state.h !== payload.h\n ) {\n return payload;\n }\n return state;\n}\n\nexport function maskImageLoadedReducer(\n state: Record<string, boolean>,\n payload: { src: string; loaded: boolean }\n) {\n const { src, loaded } = payload;\n\n return {\n ...state,\n [src]: loaded,\n };\n}\n", "import React from 'react';\n\nimport ImageNodeContainer from './ImageNodeContainer';\nimport MaskNodeContainer from './MaskNodeContainer';\nimport BetterTextNodeContainer from './BetterTextNodeContainer';\n\nimport type { Dimension, Orientation } from 'types/common_types';\nimport type { NodeAPIData } from 'types/catalog_types';\n\nexport type NodeProps = {\n canvasId: string;\n node: NodeAPIData;\n canvasDimensions: Dimension;\n canvasRotation: { rotation: number; userRotated: boolean };\n isCustomProduct: boolean;\n canvasRotationAllowed: boolean;\n canvasOrientation: Orientation;\n isMultiNodeProduct: boolean;\n setMaskImageLoaded: (set: { src: string; loaded: boolean }) => void;\n};\n\nfunction Node(props: NodeProps) {\n const {\n node,\n node: { node_type: nodeType },\n } = props;\n\n return (\n <div className=\"node\">\n {nodeType === 1 && <ImageNodeContainer {...props} />}\n {nodeType === 2 && <MaskNodeContainer {...props} />}\n {nodeType === 3 && <BetterTextNodeContainer node={node} />}\n </div>\n );\n}\n\nexport default Node;\n", "import React, { useEffect, useState, useMemo } from 'react';\nimport { round } from 'lodash';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { getOrientation } from 'utils/orientation';\nimport { buildImageNodeCropStyles, buildImageNodeStyles } from 'utils/node_util';\nimport { invertCroppedDimension } from 'utils/math_util';\nimport { renderModal } from 'utils/modal_util';\n\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\nimport ImageNode from 'components/shared/Nodes/ImageNode';\n\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\n\nimport crops from 'domains/crops';\nimport ui from 'domains/ui';\nimport cartProductCreator from 'domains/cart_product_creator';\nimport multiphotos from 'domains/multiphotos';\n\nimport { useCalculatedBounds } from './hooks';\n\nimport type { NodeProps } from './Node';\n\nfunction ImageNodeContainer(props: NodeProps) {\n const {\n node,\n canvasId,\n canvasRotation,\n canvasRotationAllowed,\n canvasOrientation,\n isMultiNodeProduct,\n } = props;\n\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const cropId = useMemo(() => crops.utils.buildCropId(canvasId, node.uid), [canvasId, node.uid]);\n\n const dispatch = useAppDispatch();\n const activeCanvasId = useAppSelector(activeEditor.selectors.canvasId);\n const activeImageNode = useAppSelector(crops.selectors.activeImageNode);\n const multiphotoIds = useAppSelector(multiphotos.selectors.selectIds);\n const potentialCropIds = useAppSelector(crops.selectors.potentialCropIds);\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n const addToCartQuantity = useAppSelector(cartProductCreator.selectors.quantity);\n\n const thisNodeCropData = useAppSelector((state) => crops.selectors.selectById(state, cropId));\n const nodePhoto = useAppSelector((state) => crops.selectors.photoByCropId(state, cropId));\n const imageSrc = useAppSelector((state) => crops.selectors.cropBlobSrc(state, cropId));\n const cropLoading = useAppSelector((state) => crops.selectors.photoLoading(state, cropId));\n\n const [x, y, w, h] = useCalculatedBounds(canvasId, node.uid);\n\n const nodeDimension = useMemo(\n () => ({\n height: canvasRotation.rotation === 0 ? h : w,\n width: canvasRotation.rotation === 0 ? w : h,\n }),\n [w, h, canvasRotation.rotation]\n );\n\n const nodePoint = useMemo(\n () => ({\n x: canvasRotation.rotation === 0 ? x : y,\n y: canvasRotation.rotation === 0 ? y : x,\n }),\n [x, y, canvasRotation.rotation]\n );\n\n const scaledPhotoWidth = useMemo(() => {\n if (!thisNodeCropData || !thisNodeCropData.cropW) return null;\n const scaled = invertCroppedDimension(nodeDimension.width, thisNodeCropData.cropW);\n if (scaled === 0) return null;\n\n return scaled;\n }, [thisNodeCropData, nodeDimension]);\n\n const scaledPhotoHeight = useMemo(() => {\n if (!thisNodeCropData || !thisNodeCropData.cropH) return null;\n const scaled = invertCroppedDimension(nodeDimension.height, thisNodeCropData.cropH);\n if (scaled === 0) return null;\n\n return scaled;\n }, [thisNodeCropData, nodeDimension]);\n\n const [isDropTarget, setIsDropTarget] = useState(false);\n\n const usingRotatedImage = useMemo(\n () => !!thisNodeCropData && thisNodeCropData.rotation !== 0,\n [thisNodeCropData]\n );\n\n const cropNodeAspectRatio = useMemo(() => {\n return thisNodeCropData?.nodeAspectRatio;\n }, [thisNodeCropData]);\n\n // We need to update crops if node dimension aspect ratio changes\n // This indicates a rotated canvas or a new product, which means we need\n // to re-fit the image to the node\n useEffect(() => {\n if (nodeDimension.width && nodeDimension.height && cropNodeAspectRatio) {\n const updateAspectRatio = crops.utils.roundAspectRatio(nodeDimension);\n if (cropNodeAspectRatio !== updateAspectRatio) {\n dispatch(\n crops.actions.updateCropNodeDimensions({\n nodeDimension,\n canvasId,\n nodeUid: node.uid,\n })\n );\n }\n }\n }, [dispatch, canvasId, node.uid, nodeDimension, cropNodeAspectRatio]);\n\n // Style for entire node\n const styles = useMemo(\n () => buildImageNodeStyles(node, nodeDimension, nodePoint, isDropTarget),\n [node, nodeDimension, nodePoint, isDropTarget]\n );\n\n // Apply crop data\n const imageStyle = useMemo(() => {\n if (!thisNodeCropData) return {};\n\n return buildImageNodeCropStyles(thisNodeCropData, nodeDimension);\n }, [thisNodeCropData, nodeDimension]);\n\n // Is this the active image node\n const isActive = useMemo(() => {\n return activeCanvasId === canvasId && activeImageNode === node.uid;\n }, [activeImageNode, node.uid, activeCanvasId, canvasId]);\n\n const imgAlt = useMemo(() => {\n let alt = '';\n\n if (nodePhoto && nodePhoto.original_filename) {\n alt = nodePhoto.original_filename;\n }\n\n return alt;\n }, [nodePhoto]);\n\n // Set the height & width of the full image, triggers init of crop data\n // Auto-rotates if conditions are correct\n function handleImageLoaded(e: React.SyntheticEvent<HTMLImageElement>) {\n const image = e.currentTarget;\n const { naturalHeight, naturalWidth } = image;\n const imageOrientation = getOrientation(naturalWidth, naturalHeight);\n const canAutoRotate =\n canvasRotationAllowed && !canvasRotation.userRotated && !usingRotatedImage;\n\n const shouldAutoRotate =\n imageOrientation !== 'square' && imageOrientation !== canvasOrientation;\n\n // Init needs to happen before auto-rotation, since canvas rotation\n // re-establishes crop dimensions\n dispatch(\n crops.actions.initCropDimensions({\n canvasId,\n nodeUid: node.uid,\n nodeDimension,\n imageDimensions: { height: naturalHeight, width: naturalWidth },\n })\n );\n\n dispatch(crops.actions.setCropPhotoLoaded({ id: cropId, loaded: true }));\n\n if (canAutoRotate && shouldAutoRotate) {\n dispatch(canvases.actions.rotateCanvas(canvasId));\n }\n }\n\n function handleClearImage() {\n dispatch(crops.actions.deleteCrop(cropId));\n }\n\n function handlePanCrop(movementX: number, movementY: number) {\n if (!scaledPhotoWidth || !scaledPhotoHeight || (!movementX && !movementY)) return;\n\n dispatch(\n crops.actions.panCrop({\n canvasId,\n nodeUid: node.uid,\n movementX: round(movementX / scaledPhotoWidth, 6),\n movementY: round(movementY / scaledPhotoHeight, 6),\n flipTrackingDirection: Number(node.rotation) !== 0 && canvasRotation.rotation === 0,\n })\n );\n }\n\n // Show mobile user photos when empty image node is clicked\n function handleImageNodeClick() {\n if (hasMobileNavigation && imageSrc === '') {\n dispatch(ui.actions.setShowMobileUserPhotos(true));\n }\n\n dispatch(crops.actions.setActiveImageNode(node.uid));\n dispatch(canvases.actions.setActiveCanvasId(canvasId));\n }\n\n function handleImageNodeDragEnter(e: React.DragEvent) {\n e.preventDefault();\n setIsDropTarget(true);\n }\n\n function addProductsForMultipleSelect() {\n dispatch(cartProductCreator.actions.addToCart.pending('multiphoto'));\n setShowConfirmDialog(false);\n }\n\n const multiPhotoAlertButtons = (\n <React.Fragment>\n <Button type=\"confirm\" onClick={addProductsForMultipleSelect}>\n Add Multiple Items to Cart\n </Button>\n <Button type=\"cancel\" onClick={() => setShowConfirmDialog(false)}>\n Do Not Add\n </Button>\n </React.Fragment>\n );\n\n function handleImageNodeDrop(e: React.DragEvent) {\n e.preventDefault();\n setIsDropTarget(false);\n const dragPhoto = parseInt(e.dataTransfer.getData('text/plain'));\n if (multiphotoIds.length > 1 && potentialCropIds.length === 1) {\n setShowConfirmDialog(true);\n } else if (dragPhoto) {\n dispatch(crops.actions.createCrop({ canvasId, nodeUid: node.uid, photoId: dragPhoto }));\n dispatch(crops.actions.setNextActiveImageNode());\n }\n }\n\n return (\n <React.Fragment>\n <ImageNode\n uid={node.uid}\n imageSrc={imageSrc}\n cropLoading={cropLoading}\n styles={styles}\n imageStyle={imageStyle}\n imgAlt={imgAlt}\n isActive={isActive}\n isMultiNodeProduct={isMultiNodeProduct}\n onLoad={handleImageLoaded}\n onClear={handleClearImage}\n onClick={handleImageNodeClick}\n onDragEnter={handleImageNodeDragEnter}\n onDragLeave={() => setIsDropTarget(false)}\n onDrop={handleImageNodeDrop}\n onPan={handlePanCrop}\n />\n\n {showConfirmDialog &&\n renderModal(\n <Modal\n title=\"Confirm Multiple Add to Cart\"\n labelledBy=\"confirm-multi-photo-modal\"\n lastFocusedElementId=\"first-photo-thumb\"\n onClose={() => setShowConfirmDialog(false)}\n primaryFooterGroup={multiPhotoAlertButtons}\n >\n <div className=\"alert-message\">\n <div>\n You have <strong>{multiphotoIds.length}</strong> photos selected.\n </div>\n <div>\n Would you like to add {addToCartQuantity} of this item for each selected photo?\n </div>\n </div>\n </Modal>\n )}\n </React.Fragment>\n );\n}\n\nexport default ImageNodeContainer;\n", "import type { Orientation } from 'types/common_types';\n\nexport function getOrientation(w: number, h: number): Orientation {\n if (w === h) return 'square';\n if (w > h) return 'landscape';\n return 'portrait';\n}\n", "import { invertCroppedDimension } from './math_util';\n\nimport type { NodeAPIData } from 'types/catalog_types';\nimport type { Dimension, Point } from 'types/common_types';\nimport type { ImageNodeStyleProp, MaskNodeStyleProp } from 'types/node_types';\nimport type { PhotoCrop } from 'types/photo_types';\n\nexport function buildImageNodeStyles(\n node: NodeAPIData,\n nodeDimension: Dimension,\n nodePoint: Point,\n isDropTarget: boolean\n): ImageNodeStyleProp {\n const { width, height } = nodeDimension;\n const { x, y } = nodePoint;\n const rotation = node.rotation || 0;\n\n let imgWrap = {};\n if (isDropTarget) {\n imgWrap = { outline: '3px dashed #f4d03f' };\n }\n\n return {\n node: {\n zIndex: 2000 + parseInt(node.sort_order.toString()),\n top: `${y || 0}px`,\n left: `${x || 0}px`,\n height: `${height || 0}px`,\n width: `${width || 0}px`,\n transform: `rotate(${rotation}deg)`,\n },\n cropFrame: {\n height: `${height || 0}px`,\n width: `${width || 0}px`,\n },\n imgWrap,\n };\n}\n\nexport function buildImageNodeCropStyles(crop: PhotoCrop, nodeDimension: Dimension) {\n const cropW = crop.cropW || 1;\n const cropH = crop.cropH || 1;\n const cropX = crop.cropX || 0;\n const cropY = crop.cropY || 0;\n\n const width = invertCroppedDimension(nodeDimension.width, cropW);\n const height = invertCroppedDimension(nodeDimension.height, cropH);\n\n // Crop point is the % off of center the image has been moved\n const x = nodeDimension.width / 2 - cropX * width;\n const y = nodeDimension.height / 2 - cropY * height;\n\n return {\n height: `${height || 0}px`,\n width: `${width || 0}px`,\n transformOrigin: 'center',\n transform: `translate(${x || 0}px, ${y || 0}px)`,\n };\n}\n\nexport function buildMaskNodeStyles(\n node: NodeAPIData,\n nodeDimension: Dimension,\n nodePoint: Point,\n rotation: number\n): MaskNodeStyleProp {\n const { width, height } = nodeDimension;\n const { x, y } = nodePoint;\n\n return {\n // Style for entire node\n node: {\n zIndex: 2000 + parseInt(node.sort_order.toString()),\n top: `${y || 0}px`,\n left: `${x || 0}px`,\n height: `${height || 0}px`,\n width: `${width || 0}px`,\n transformOrigin: 'center center',\n transform: `rotate(${rotation}deg)`,\n },\n // Style for mask image\n maskImage: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n height: `${height || 0}px`,\n width: `${width || 0}px`,\n },\n };\n}\n", "import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Spinner from 'components/shared/Spinner';\n\nimport type { ImageNodeStyleProp } from 'types/node_types';\n\nexport type ImageNodeProps = {\n uid: string;\n imageSrc: string;\n cropLoading: boolean;\n styles: ImageNodeStyleProp;\n imageStyle: React.CSSProperties;\n imgAlt: string;\n isActive: boolean;\n isMultiNodeProduct: boolean;\n onLoad: React.ReactEventHandler<HTMLImageElement>;\n onClear: React.MouseEventHandler;\n onClick?: React.MouseEventHandler;\n onDragEnter?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n onPan?: (x: number, y: number) => void;\n};\n\nfunction ImageNode({\n uid,\n imageSrc,\n cropLoading,\n styles,\n imageStyle,\n imgAlt,\n isActive,\n isMultiNodeProduct,\n onLoad,\n onClear,\n onClick,\n onDragEnter,\n onDragLeave,\n onDrop,\n onPan,\n}: ImageNodeProps) {\n // Handle panning an image started with a mouse event\n function handleMousePan() {\n if (!onPan) return;\n\n function trackmove({ movementX, movementY }: MouseEvent) {\n onPan && onPan(movementX, movementY);\n }\n\n document.addEventListener('mousemove', trackmove);\n document.addEventListener(\n 'mouseup',\n () => {\n document.removeEventListener('mousemove', trackmove);\n },\n { once: true }\n );\n }\n\n // Handle panning an image started by a touch event\n // touchmove event has slight differences to a mousemove event, so has to be handled differently\n function handleTouchPan(event: React.TouchEvent<HTMLImageElement>) {\n if (!onPan) return;\n\n event.preventDefault();\n let previousTouch: React.Touch | undefined;\n\n function trackmove(e: TouchEvent) {\n e.preventDefault();\n const touch = e.touches[0];\n\n let movementX;\n let movementY;\n\n if (previousTouch) {\n movementX = touch.pageX - previousTouch.pageX;\n movementY = touch.pageY - previousTouch.pageY;\n previousTouch = touch;\n } else {\n previousTouch = touch;\n return;\n }\n\n onPan && onPan(movementX, movementY);\n }\n\n document.addEventListener('touchmove', trackmove, { passive: false });\n document.addEventListener(\n 'touchend',\n () => {\n previousTouch = undefined;\n document.removeEventListener('touchmove', trackmove);\n },\n { once: true }\n );\n }\n\n return (\n // TODO: Any better way to handle this?\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n className={`image_node ${imageSrc ? 'has_image' : ''}`}\n // testid & uid are required for testing\n data-testid=\"image-node\"\n data-uid={uid}\n style={styles.node}\n onClick={onClick}\n // Dropping requires handling both dragenter/dragover events and calling preventDefault\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#specifying_drop_targets\n onDragOver={(e) => e.preventDefault()}\n onDragEnter={onDragEnter}\n onDragLeave={onDragLeave}\n onDrop={onDrop}\n >\n <button className=\"trigger_clear_image\" onClick={onClear}>\n <FontAwesomeIcon icon=\"times\" color=\"white\" fixedWidth />\n <span className=\"screen-reader-text\">Remove image from node</span>\n </button>\n <div\n className={`img_wrap ${isActive && isMultiNodeProduct ? ' active' : ''}`}\n style={styles.imgWrap}\n >\n <div className=\"cropFrame\" style={styles.cropFrame}>\n {imageSrc !== '' && (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <img\n onLoad={onLoad}\n onMouseDown={handleMousePan}\n onTouchStart={handleTouchPan}\n src={imageSrc}\n style={imageStyle}\n alt={`Your upload, titled ${imgAlt}`}\n className=\"cropImage\"\n draggable={false} // prevents ghost image while panning\n onDragStart={(e) => e.preventDefault()} // prevents highlighting while panning\n />\n )}\n </div>\n </div>\n {cropLoading && (\n <Spinner\n color=\"#fff\"\n style={{\n height: '100%',\n width: '100%',\n position: 'absolute',\n top: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#252525',\n }}\n />\n )}\n </div>\n );\n}\n\nexport default ImageNode;\n", "import { useMemo } from 'react';\nimport { round } from 'lodash';\n\nimport { useAppSelector } from 'utils/hooks';\nimport { selectZoomedPPI } from 'selectors/ppi';\n\nimport canvases from 'domains/canvases';\n\nexport function useCalculatedBounds(canvasId: string, nodeUid: string) {\n const ppi = useAppSelector(selectZoomedPPI);\n const bounds = useAppSelector((state) =>\n canvases.selectors.calculatedBoundsForCanvasNode(state, { canvasId, nodeUid })\n );\n\n const withPPI = useMemo(() => bounds.map((b) => round(b * ppi, 6)), [bounds, ppi]);\n\n return withPPI;\n}\n", "import React, { useEffect, useMemo } from 'react';\n\nimport MaskNode from 'components/shared/Nodes/MaskNode';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { buildMaskNodeStyles } from 'utils/node_util';\n\nimport { selectZoomedPPI } from 'selectors/ppi';\n\nimport ui from 'domains/ui';\nimport products from 'domains/products';\nimport svgs from 'domains/svgs';\nimport canvases from 'domains/canvases';\n\nimport { useCalculatedBounds } from './hooks';\n\nimport type { NodeProps } from './Node';\n\nfunction MaskNodeContainer(props: NodeProps) {\n const { canvasId, node, canvasDimensions, canvasRotation, setMaskImageLoaded } = props;\n\n const dispatch = useAppDispatch();\n const ppi = useAppSelector(selectZoomedPPI);\n const svgData = useAppSelector((state) => svgs.selectors.selectById(state, node.svg_id || ''));\n const theme = useAppSelector(ui.selectors.theme);\n\n const canvasConfig = useAppSelector((state) => canvases.selectors.selectById(state, canvasId));\n const canvasProduct = useAppSelector((state) =>\n products.selectors.selectById(state, canvasConfig?.product || '')\n );\n\n const [x, y, w, h] = useCalculatedBounds(canvasId, node.uid);\n\n const borderColor = useMemo(() => canvasConfig?.borderColor, [canvasConfig]);\n\n const nodeDimension = useMemo(\n () => ({\n height: canvasRotation.rotation === 0 ? h : w,\n width: canvasRotation.rotation === 0 ? w : h,\n }),\n [w, h, canvasRotation.rotation]\n );\n\n const nodePoint = useMemo(\n () => ({\n x: canvasRotation.rotation === 0 ? x : y,\n y: canvasRotation.rotation === 0 ? y : x,\n }),\n [x, y, canvasRotation.rotation]\n );\n\n const shouldCenterMaskNode = useMemo(() => {\n if (!canvasProduct || !canvasConfig) return false;\n\n return products.utils.canRotateProduct(canvasProduct) && canvasConfig.rotation === 90;\n }, [canvasProduct, canvasConfig]);\n\n const styles = useMemo(() => {\n let rotation = 0;\n let dimension = { ...nodeDimension };\n let point = { ...nodePoint };\n\n // If we need to center the mask node, we know the rotation is 90\n // We also know the bounds have been reversed, so we need to restore the bounds\n // to the natural orientation in order to use css transform to rotate\n if (shouldCenterMaskNode) {\n rotation = 90;\n dimension.width = nodeDimension.height;\n dimension.height = nodeDimension.width;\n point.x = (canvasDimensions.width - dimension.width) / 2;\n point.y = (canvasDimensions.height - dimension.height) / 2;\n }\n\n return buildMaskNodeStyles(node, dimension, point, rotation);\n }, [nodeDimension, nodePoint, node, canvasConfig, shouldCenterMaskNode, canvasDimensions]);\n\n // Remove border color if this mask node is removed\n useEffect(() => {\n return function cleanup() {\n dispatch(canvases.actions.updateCanvas({ borderColor: undefined }));\n };\n }, []);\n\n // manipulate the svg if needed\n const renderedSVG = useMemo(() => {\n if (!node.svg_id || !svgData || !svgData.data) {\n return null;\n }\n\n const svgContainer = svgs.utils.toParseableSVG(svgData.data);\n const withStrokes = svgContainer.querySelectorAll<SVGElement>('[data-stroke]');\n\n if (withStrokes.length > 0) {\n withStrokes.forEach((elem) => {\n const stroke = elem.dataset.stroke as string; // safe because this is literally what the selector was\n const strokeWidth = parseFloat(stroke) * ppi;\n elem.setAttribute('stroke-width', strokeWidth.toString());\n });\n }\n\n if (borderColor) {\n svgContainer.querySelectorAll('.border').forEach((elem) => {\n elem.setAttribute('style', `fill: #${borderColor}`);\n });\n }\n\n const textElems = svgContainer.querySelectorAll<SVGTextElement>('svg text');\n textElems.forEach((elem) => {\n // eslint-disable-next-line no-param-reassign\n elem.style.fill = '';\n });\n\n return svgContainer.innerHTML;\n }, [svgData, ppi, borderColor, node, theme]);\n\n function handleImageLoaded() {\n setMaskImageLoaded({ src: node.node_image, loaded: true });\n }\n\n return (\n <MaskNode node={node} styles={styles} renderedSVG={renderedSVG} onLoad={handleImageLoaded} />\n );\n}\n\nexport default MaskNodeContainer;\n", "import * as React from 'react';\nimport type { NodeAPIData } from 'types/catalog_types';\nimport type { MaskNodeStyleProp } from 'types/node_types';\n\ntype MaskNodeProps = {\n node: NodeAPIData;\n styles: MaskNodeStyleProp;\n onLoad: React.ReactEventHandler<HTMLImageElement>;\n renderedSVG: string | null;\n};\n\nfunction MaskNode({ node, styles, onLoad, renderedSVG = null }: MaskNodeProps) {\n return (\n <div\n className=\"mask_node\"\n data-testid=\"mask-node\"\n data-id={node.id}\n data-uid={node.uid}\n style={styles.node}\n >\n {!node.svg_id && node.node_image && (\n <img\n src={node.node_image}\n style={styles.maskImage}\n onLoad={onLoad}\n className=\"mask_image\"\n alt=\"\"\n />\n )}\n {renderedSVG && (\n <div style={styles.maskImage} dangerouslySetInnerHTML={{ __html: renderedSVG }} />\n )}\n </div>\n );\n}\n\nexport default MaskNode;\n", "import React, { useMemo } from 'react';\n\nimport TextNode from 'components/shared/Nodes/TextNode';\n\nimport { selectZoomedPPI } from 'selectors/ppi';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport ui from 'domains/ui';\nimport textNodes from 'domains/text_nodes';\n\nimport type { NodeAPIData } from 'types/catalog_types';\n\ntype BetterTextNodeContainerProps = {\n node: NodeAPIData;\n};\n\nfunction BetterTextNodeContainer(props: BetterTextNodeContainerProps) {\n const { node } = props;\n\n const dispatch = useAppDispatch();\n\n const ppi = useAppSelector(selectZoomedPPI);\n const textData = useAppSelector((state) => textNodes.selectors.selectById(state, node.uid));\n const activeNodeUid = useAppSelector(textNodes.selectors.activeNode);\n\n const isActive = useMemo(() => node.uid === activeNodeUid, [node, activeNodeUid]);\n\n const nodeDimension = useMemo(() => {\n const [x, y, w, h] = node.bounds.split(',').map((bound) => parseFloat(bound) * ppi);\n return { x, y, w, h };\n }, [node, ppi]);\n\n // Style for entire node\n const styles = useMemo(() => {\n const { x, y, w, h } = nodeDimension;\n const rotation = node.rotation || 0;\n\n // Bump to top of stacking context when we're editing\n const zIndex = isActive ? 9999 : 2000 + node.sort_order;\n\n return {\n node: {\n zIndex,\n top: `${y}px`,\n left: `${x}px`,\n height: `${h}px`,\n width: `${w}px`,\n },\n svg: {\n height: '100%',\n width: '100%',\n transform: `rotate(${rotation}deg)`,\n },\n };\n }, [nodeDimension, node, isActive]);\n\n if (!textData) return null;\n\n return (\n <TextNode\n onClick={() => {\n dispatch(textNodes.actions.setActiveTextNodeUid(node.uid));\n dispatch(ui.actions.setSidebarComponent('TextTools'));\n }}\n showWarning={false}\n node={node}\n nodeDimension={nodeDimension}\n styles={styles}\n fontSize={parseInt(textData.fontSize)}\n fontFamily={textData.fontFamily}\n textColor={textData.textColor}\n textContent={textData.textContent}\n verticalAlign={textData.verticalAlignment}\n horizontalAlign={textData.horizontalAlignment}\n autofit={textData.autofit}\n active={node.uid === activeNodeUid}\n />\n );\n}\n\nexport default BetterTextNodeContainer;\n", "import React, { useMemo, useRef } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport textNodes from 'domains/text_nodes';\n\nimport type { NodeAPIData } from 'types/catalog_types';\nimport type { TextNodeStyleProp } from 'types/node_types';\nimport type { TextAlignment } from 'domains/text_nodes';\nimport type { Point } from 'types/common_types';\n\ntype TextNodeProps = {\n node: NodeAPIData;\n styles: TextNodeStyleProp;\n showWarning: boolean;\n nodeDimension: { w: number; h: number };\n fontSize: number;\n fontFamily: string;\n textColor: string;\n verticalAlign: TextAlignment;\n horizontalAlign: TextAlignment;\n textContent: string;\n autofit: boolean;\n active: boolean;\n onClick?: React.MouseEventHandler;\n};\n\ntype TextLineProps = {\n fontSize: number | string;\n fontFamily: string;\n textColor: string;\n verticalAlign: TextAlignment;\n horizontalAlign: TextAlignment;\n position: Point & { dy: number };\n children: React.ReactNode;\n};\n\nfunction TextNode({\n node,\n styles,\n showWarning,\n nodeDimension,\n fontSize,\n fontFamily,\n textColor,\n verticalAlign,\n horizontalAlign,\n textContent,\n onClick,\n}: TextNodeProps) {\n const svgRef = useRef<SVGSVGElement>(null);\n\n const textX = useMemo(() => {\n const { w } = nodeDimension;\n\n switch (horizontalAlign) {\n case 'start':\n return 0;\n case 'end':\n return w;\n case 'middle':\n default:\n return w / 2;\n }\n }, [horizontalAlign, nodeDimension]);\n\n const lines = useMemo(() => {\n const lineHeight = svgRef.current?.querySelector('text')?.getBoundingClientRect().height || 1;\n return textContent\n .split(/\\n\\r?/g)\n .filter((l) => !!l)\n .map((line, i, arr) => {\n const nodesHeight = arr.length * lineHeight;\n const offset = lineHeight * i;\n let y = 0;\n\n /**\n * We are using dy to place each line relative to the previous.\n *\n * This means each line uses the same y position, which is located on the baseline\n * of the first line of text. Offsetting by the line height does not look right,\n * so we offset by the font size. For some text rendering reason, this works\n * pretty well.\n *\n * We had to avoid using the dominant-baseline presentation attribute since the\n * preview rendering library we use on the back-end does not support this property.\n * https://gnome.pages.gitlab.gnome.org/librsvg/devel-docs/features.html\n *\n */\n\n switch (verticalAlign) {\n case 'middle':\n // height difference btw the middle of the box & text lines, excluding the first line\n y = nodeDimension.h / 2 - nodesHeight / 2 + fontSize;\n break;\n case 'end':\n // height difference btw the container & text lines, excluding the first line\n y = nodeDimension.h - nodesHeight + fontSize;\n break;\n case 'start':\n default:\n // the height of the first line\n y = fontSize;\n break;\n }\n\n return (\n <TextLine\n key={line + i}\n fontSize={fontSize}\n fontFamily={fontFamily}\n textColor={textColor}\n verticalAlign={verticalAlign}\n horizontalAlign={horizontalAlign}\n position={{ x: textX, y, dy: offset }}\n >\n {line}\n </TextLine>\n );\n });\n }, [\n nodeDimension,\n textContent,\n textColor,\n fontSize,\n fontFamily,\n verticalAlign,\n horizontalAlign,\n textX,\n ]);\n\n return (\n <React.Fragment>\n <div\n role=\"textbox\"\n tabIndex={0}\n className=\"text_node--container\"\n style={styles.node}\n onClick={onClick}\n >\n {showWarning && (\n <div\n className=\"animated wobble svg-warning svg-warning__text-overflow\"\n title=\"It appears your text is outside the text box.\"\n >\n <FontAwesomeIcon icon=\"exclamation-triangle\" />\n </div>\n )}\n <div className=\"svg-container\" style={styles.svg}>\n <svg\n ref={svgRef}\n id={`${textNodes.utils.textNodeSVGBaseId}${node.id}`}\n className=\"text_node--svg\"\n width={nodeDimension.w}\n height={nodeDimension.h}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {lines}\n </svg>\n </div>\n </div>\n </React.Fragment>\n );\n}\n\nfunction TextLine(props: TextLineProps) {\n const { horizontalAlign, fontSize, fontFamily, textColor, position } = props;\n\n return (\n <text\n textAnchor={horizontalAlign}\n fontSize={fontSize}\n fontFamily={fontFamily}\n fill={textColor}\n x={`${position.x}px`}\n y={`${position.y}px`}\n dy={`${position.dy}px`}\n >\n {props.children}\n </text>\n );\n}\n\nexport default TextNode;\n", "import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport {\n roundToHalf,\n roundToQuarter,\n orientationAndRatioPercentage,\n realNumber,\n} from 'utils/math_util';\nimport { inRange, sortedUniq, clamp } from 'lodash';\nimport { selectZoomedPPI } from 'selectors/ppi';\n\nimport canvases from 'domains/canvases';\nimport activeEditor from 'domains/active_editor';\nimport products from 'domains/products';\n\nimport type {\n CustomSizeProductCustomOptions,\n NodeAPIData,\n ProductTemplateAPIData,\n} from 'types/catalog_types';\nimport type { Dimension } from 'types/common_types';\nimport type { NextSizePayload } from 'domains/canvases';\n\ntype CanvasToolsProps = {\n canvasId: string;\n nodes: NodeAPIData[];\n productWidth: number;\n productHeight: number;\n canvasCustomSize: Dimension;\n canvasRotation: { rotation: number; userRotated: boolean };\n canvasDimensions: Dimension;\n canvasProduct: ProductTemplateAPIData;\n isCustomProduct: boolean;\n enableDragCanvas: () => void;\n enableDragCanvasTouch: (e: TouchEvent) => void;\n handleProductResizeCanvasReposition: (x: number, y: number, nextSize: NextSizePayload) => void;\n};\n\ntype NextSizesBySize = Record<number, NextSizePayload[]>;\n\ntype Anchor = {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n};\n\ntype ResizeDirection =\n | 'top-left'\n | 'top-middle'\n | 'top-right'\n | 'middle-right'\n | 'bottom-right'\n | 'bottom-middle'\n | 'bottom-left'\n | 'middle-left';\n\nfunction CanvasTools(props: CanvasToolsProps) {\n const {\n canvasId,\n nodes,\n productWidth,\n productHeight,\n canvasCustomSize,\n canvasRotation,\n canvasDimensions,\n enableDragCanvas,\n enableDragCanvasTouch,\n handleProductResizeCanvasReposition,\n canvasProduct,\n isCustomProduct,\n } = props;\n\n const dispatch = useDispatch();\n const ppi = useSelector(selectZoomedPPI);\n const filteredProducts = useSelector(activeEditor.selectors.filteredProducts);\n\n // Width values for resizing\n const [portraitsByWidth, setPortraitsByWidth] = useState<NextSizesBySize>({});\n const [landscapesByWidth, setLandscapesByWidth] = useState<NextSizesBySize>({});\n const [portraitWidths, setPortraitWidths] = useState<number[]>([]);\n const [landscapeWidths, setLandscapeWidths] = useState<number[]>([]);\n\n // Height values for resizing\n const [portraitsByHeight, setPortraitsByHeight] = useState<NextSizesBySize>({});\n const [landscapesByHeight, setLandscapesByHeight] = useState<NextSizesBySize>({});\n const [portraitHeights, setPortraitHeights] = useState<number[]>([]);\n const [landscapeHeights, setLandscapeHeights] = useState<number[]>([]);\n\n // Values for visual updates to the drag box\n const [resizeX, setResizeX] = useState(0);\n const [resizeY, setResizeY] = useState(0);\n const [anchorPoint, setAnchorPoint] = useState<Anchor>({});\n const [currentAspectRatio, setCurrentAspectRatio] = useState(0);\n\n // Values that update the product\n const [nextSize, setNextSize] = useState<NextSizePayload | null>(null);\n const [shouldUpdateSize, setShouldUpdateSize] = useState(false);\n\n // Reposition the canvas if drag resized to left or top\n const [shouldUpdateCanvasPositionX, setShouldUpdateCanvasPositionX] = useState(false);\n const [shouldUpdateCanvasPositionY, setShouldUpdateCanvasPositionY] = useState(false);\n\n const movementX = useRef(0);\n const movementY = useRef(0);\n\n // Style for resize dragbox\n const resizeContainerStyle = useMemo(() => {\n return {\n border: resizeX || resizeY ? '1px dotted black' : 'none',\n width: `calc(100% + ${resizeX}px`,\n height: `calc(100% + ${resizeY}px`,\n ...anchorPoint,\n };\n }, [resizeX, resizeY, anchorPoint]);\n\n // Style for highlighted next product size\n const nextSizeGuideStyle = useMemo(() => {\n if (nextSize && canvasProduct) {\n // only show box if we have a next size and it's not the same size as current\n const sameSize =\n nextSize.printX === parseFloat(canvasProduct.print_size_x) &&\n nextSize.printY === parseFloat(canvasProduct.print_size_y);\n\n if (nextSize.width && !sameSize) {\n return {\n width: nextSize.printX * ppi,\n height: nextSize.printY * ppi,\n ...anchorPoint,\n };\n }\n }\n\n return {\n display: 'none',\n };\n }, [nextSize, ppi, canvasProduct]);\n\n // Set the aspect ratio of the current product for when user constrains the resize\n useEffect(() => {\n if (canvasProduct) {\n const currentW =\n canvasRotation.rotation === 0 ? canvasProduct.print_size_x : canvasProduct.print_size_y;\n const currentH =\n canvasRotation.rotation === 0 ? canvasProduct.print_size_y : canvasProduct.print_size_x;\n\n setCurrentAspectRatio(roundToHalf(parseFloat(currentW)) / roundToHalf(parseFloat(currentH)));\n }\n }, [canvasProduct, canvasRotation]);\n\n // Set up the data structures to make resizing by drag box more efficient\n // Here we set objects [orientation]By[Height/Width] and arrays [orientation][Heights/Widths], which is sorted & unique'd\n useEffect(() => {\n const portraitWs: number[] = [];\n const portraitHs: number[] = [];\n const landscapeWs: number[] = [];\n const landscapeHs: number[] = [];\n\n const pByW: NextSizesBySize = {};\n const pByH: NextSizesBySize = {};\n\n const lByW: NextSizesBySize = {};\n const lByH: NextSizesBySize = {};\n\n // TODO: this whole thing can probably be done much more efficiently in redux\n // For all the resizable products, group them by orientation and size\n // Doing in all in a single foreach to reduce computations\n filteredProducts.forEach((s) => {\n let { print_size_x: printXStr, print_size_y: printYStr } = s;\n const printX = parseFloat(printXStr);\n const printY = parseFloat(printYStr);\n const { orientation } = orientationAndRatioPercentage(printX, printY);\n\n // Set portraitsBy[Height/Width]\n const portraitW = orientation === 'landscape' ? roundToHalf(printY) : roundToHalf(printX);\n const portraitH = orientation === 'landscape' ? roundToHalf(printX) : roundToHalf(printY);\n const portraitSize = {\n product: s,\n printX: orientation === 'landscape' ? printY : printX,\n printY: orientation === 'landscape' ? printX : printY,\n width: portraitW,\n height: portraitH,\n rotate: orientation !== 'portrait',\n };\n\n pByH[portraitH] = pByH[portraitH] ? pByH[portraitH].concat([portraitSize]) : [portraitSize];\n pByW[portraitW] = pByW[portraitW] ? pByW[portraitW].concat([portraitSize]) : [portraitSize];\n\n // Set landscapesBy[Height/Width]\n const landscapeW = orientation === 'landscape' ? roundToHalf(printX) : roundToHalf(printY);\n const landscapeH = orientation === 'landscape' ? roundToHalf(printY) : roundToHalf(printX);\n const landscapeSize = {\n product: s,\n printX: orientation === 'landscape' ? printX : printY,\n printY: orientation === 'landscape' ? printY : printX,\n width: landscapeW,\n height: landscapeH,\n rotate: orientation !== 'landscape',\n };\n\n lByH[landscapeH] = lByH[landscapeH]\n ? lByH[landscapeH].concat([landscapeSize])\n : [landscapeSize];\n lByW[landscapeW] = lByW[landscapeW]\n ? lByW[landscapeW].concat([landscapeSize])\n : [landscapeSize];\n\n // Save the heights and widths to sort & uniq later\n portraitWs.push(portraitW);\n portraitHs.push(portraitH);\n landscapeWs.push(landscapeW);\n landscapeHs.push(landscapeH);\n });\n\n setPortraitsByWidth(pByW);\n setLandscapesByWidth(lByW);\n\n setPortraitsByHeight(pByH);\n setLandscapesByHeight(lByH);\n\n // Sort and dedupe the widths and heights\n const sortedPortraitWidths = sortedUniq(portraitWs.sort((a, b) => a - b));\n const sortedPortraitHeights = sortedUniq(portraitHs.sort((a, b) => a - b));\n\n setPortraitWidths(sortedPortraitWidths);\n setPortraitHeights(sortedPortraitHeights);\n\n // These are the same, just flipped from portrait\n setLandscapeWidths(sortedPortraitHeights);\n setLandscapeHeights(sortedPortraitWidths);\n }, [filteredProducts]);\n\n // Sets the new product if the user resized to a matching size then released mouse drag\n useEffect(() => {\n if (nextSize?.product && shouldUpdateSize) {\n if (isCustomProduct) {\n dispatch(\n canvases.actions.changeActiveCanvasConfig.size({\n height: nextSize.height,\n width: nextSize.width,\n })\n );\n } else {\n dispatch(canvases.actions.changeActiveCanvasConfig.product(nextSize.product.id));\n\n // Rotates the product to the right orientation to match the user's drag box\n if (\n nextSize.product.rotation_allowed &&\n !products.utils.productIsMultiNode(nextSize.product)\n ) {\n dispatch(\n canvases.actions.updateCanvas({\n rotation: nextSize.rotate ? 90 : 0,\n userRotated: true,\n })\n );\n }\n }\n\n // Match canvas position to the point the resized product starts\n const xMove = shouldUpdateCanvasPositionX\n ? nextSize.printX * ppi - canvasDimensions.width\n : 0;\n const yMove = shouldUpdateCanvasPositionY\n ? nextSize.printY * ppi - canvasDimensions.height\n : 0;\n handleProductResizeCanvasReposition(xMove, yMove, nextSize);\n\n setShouldUpdateCanvasPositionX(false);\n setShouldUpdateCanvasPositionY(false);\n setShouldUpdateSize(false);\n setNextSize(null);\n }\n }, [\n nextSize,\n shouldUpdateSize,\n shouldUpdateCanvasPositionX,\n shouldUpdateCanvasPositionY,\n canvasDimensions,\n ppi,\n isCustomProduct,\n ]);\n\n // Get the canvas product orientation & rotation, flip the numbers in the name to match\n const currentDisplaySize = useMemo(() => {\n if (isCustomProduct) {\n const { width, height } = canvasCustomSize;\n return { width, height };\n }\n\n const [firstSize, secondSize] = canvasProduct.name.split('x');\n const { orientation } = orientationAndRatioPercentage(productWidth, productHeight);\n const { rotation } = canvasRotation;\n const defaultPortrait =\n (orientation === 'portrait' && rotation === 0) ||\n (orientation === 'landscape' && rotation === 90);\n\n if (\n orientation === 'square' ||\n (defaultPortrait && rotation === 0) ||\n (!defaultPortrait && rotation === 90)\n ) {\n return { width: firstSize, height: secondSize };\n }\n\n return { width: secondSize, height: firstSize };\n }, [\n canvasProduct,\n canvasRotation,\n productHeight,\n productWidth,\n isCustomProduct,\n canvasCustomSize,\n ]);\n\n function setResizeWithDirection(\n x: number,\n y: number,\n direction: ResizeDirection,\n constrainRatio: boolean\n ) {\n const [yDirection, xDirection] = direction.split('-');\n const anchor: Anchor = {};\n const shouldConstrainRatio =\n constrainRatio && yDirection !== 'middle' && xDirection !== 'middle';\n\n switch (xDirection) {\n case 'left':\n movementX.current -= x;\n movementY.current = shouldConstrainRatio\n ? movementX.current / currentAspectRatio\n : movementY.current;\n anchor.right = 0;\n setShouldUpdateCanvasPositionX(true);\n break;\n case 'right':\n movementX.current += x;\n movementY.current = shouldConstrainRatio\n ? movementX.current / currentAspectRatio\n : movementY.current;\n anchor.left = 0;\n break;\n // No x direction changes if moving from middle\n case 'middle':\n default:\n break;\n }\n\n switch (yDirection) {\n case 'top':\n movementY.current = shouldConstrainRatio ? movementY.current : movementY.current - y;\n anchor.bottom = 0;\n setShouldUpdateCanvasPositionY(true);\n break;\n case 'bottom':\n movementY.current = shouldConstrainRatio ? movementY.current : movementY.current + y;\n anchor.top = 0;\n break;\n // No y direction changes if moving from middle\n case 'middle':\n default:\n break;\n }\n\n // Set the values that update dragging box size\n setAnchorPoint(anchor);\n setResizeX(movementX.current);\n setResizeY(movementY.current);\n\n return {\n shouldConstrainRatio,\n resizedH: productHeight + movementY.current / ppi,\n resizedW: productWidth + movementX.current / ppi,\n resizedCustomH: canvasCustomSize.height + movementY.current / ppi,\n resizedCustomW: canvasCustomSize.width + movementX.current / ppi,\n };\n }\n\n function findClosestProductSize(\n resizedW: number,\n resizedH: number,\n shouldConstrainRatio: boolean\n ) {\n const { orientation } = orientationAndRatioPercentage(resizedW, resizedH);\n\n // Select the object for lookups by the dragbox orientation\n const productsByWidth = orientation === 'landscape' ? landscapesByWidth : portraitsByWidth;\n const productsByHeight = orientation === 'landscape' ? landscapesByHeight : portraitsByHeight;\n\n // Select the available heights/widths by the dragbox orientation\n const productWidths = orientation === 'landscape' ? landscapeWidths : portraitWidths;\n const productHeights = orientation === 'landscape' ? landscapeHeights : portraitHeights;\n\n let closestWidth = productsByWidth[resizedW] ? resizedW : null;\n let closestHeight = productsByHeight[resizedH] ? resizedH : null;\n\n if (!closestWidth) {\n closestWidth = productWidths.reduce((acc, width) => {\n const difference = Math.abs(resizedW - width);\n const previousDifference = Math.abs(resizedW - acc);\n\n if (difference < previousDifference) {\n return width;\n }\n\n return acc;\n });\n }\n\n if (!closestHeight) {\n closestHeight = productHeights.reduce((acc, height) => {\n const difference = Math.abs(resizedH - height);\n const previousDifference = Math.abs(resizedH - acc);\n\n if (difference < previousDifference) {\n return height;\n }\n\n return acc;\n });\n }\n\n // Find a matching product height within 0.5in for the closest width\n const firstClosestProduct = productsByWidth[closestWidth].find((closestProduct) => {\n const { printY } = closestProduct;\n return inRange(resizedH, printY - 0.5, printY + 0.5);\n });\n\n // Find a matching product width within 0.5in for the closest height\n const firstClosestProductH = productsByHeight[closestHeight].find((closestProduct) => {\n const { printX } = closestProduct;\n return inRange(resizedW, printX - 0.5, printX + 0.5);\n });\n\n if (firstClosestProduct) {\n if (shouldConstrainRatio) {\n if (firstClosestProduct.width / firstClosestProduct.height === currentAspectRatio) {\n return firstClosestProduct;\n }\n } else {\n return firstClosestProduct;\n }\n }\n\n if (firstClosestProductH) {\n if (shouldConstrainRatio) {\n if (firstClosestProductH.width / firstClosestProductH.height === currentAspectRatio) {\n return firstClosestProductH;\n }\n } else {\n return firstClosestProductH;\n }\n }\n\n // If we get here, next size will be empty\n return null;\n }\n\n function findNextCustomSize(width: number, height: number): NextSizePayload {\n let nextW;\n let nextH;\n // This is only called when we're sure we're on a custom size, so safe to cast this\n let { bleed, frame, wrap } = canvasProduct.custom_options as CustomSizeProductCustomOptions;\n const { longmin, longmax, shortmin, shortmax } =\n canvasProduct.custom_options as CustomSizeProductCustomOptions;\n const { orientation } = orientationAndRatioPercentage(width, height);\n\n if (orientation === 'landscape') {\n nextW = clamp(roundToQuarter(width), longmin, longmax);\n nextH = clamp(roundToQuarter(height), shortmin, shortmax);\n } else {\n nextW = clamp(roundToQuarter(width), shortmin, shortmax);\n nextH = clamp(roundToQuarter(height), longmin, longmax);\n }\n\n // multiply by 2 to account for both sides\n bleed = (bleed && realNumber(bleed) && bleed * 2) || 0;\n frame = (frame && realNumber(frame) && frame * 2) || 0;\n wrap = (wrap && realNumber(wrap) && wrap * 2) || 0;\n\n return {\n product: canvasProduct,\n printX: nextW + bleed + frame + wrap,\n printY: nextH + bleed + frame + wrap,\n width: nextW,\n height: nextH,\n rotate: false,\n };\n }\n\n function handleDragResize(direction: ResizeDirection) {\n function trackMovement(e: MouseEvent) {\n const { shouldConstrainRatio, resizedH, resizedW, resizedCustomH, resizedCustomW } =\n setResizeWithDirection(e.movementX, e.movementY, direction, e.shiftKey);\n\n let next;\n\n if (isCustomProduct) {\n next = findNextCustomSize(resizedCustomW, resizedCustomH);\n } else {\n next = findClosestProductSize(resizedW, resizedH, shouldConstrainRatio);\n }\n\n if (next?.width) {\n setNextSize(next);\n }\n }\n\n function cancelResize(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n document.removeEventListener('mousemove', trackMovement);\n document.removeEventListener('keydown', cancelResize);\n resetResize();\n setNextSize(null);\n setShouldUpdateSize(false);\n }\n }\n\n function saveResize() {\n document.removeEventListener('keydown', cancelResize);\n document.removeEventListener('mousemove', trackMovement);\n setShouldUpdateSize(true);\n resetResize();\n }\n\n function resetResize() {\n movementX.current = 0;\n movementY.current = 0;\n setResizeX(0);\n setResizeY(0);\n setAnchorPoint({});\n }\n\n document.addEventListener('mousemove', trackMovement);\n document.addEventListener('mouseup', saveResize, { once: true });\n document.addEventListener('keydown', cancelResize);\n }\n\n function handleTouchResize(direction: ResizeDirection) {\n let previousTouch: Touch | undefined;\n\n function trackMovement(e: TouchEvent) {\n e.preventDefault();\n const touch = e.touches[0];\n let moveX;\n let moveY;\n\n if (previousTouch) {\n moveY = touch.pageX - previousTouch.pageX;\n moveX = touch.pageY - previousTouch.pageY;\n previousTouch = touch;\n } else {\n previousTouch = touch;\n return;\n }\n\n const { shouldConstrainRatio, resizedH, resizedW, resizedCustomH, resizedCustomW } =\n setResizeWithDirection(moveX, moveY, direction, false);\n\n let next;\n\n if (isCustomProduct) {\n next = findNextCustomSize(resizedCustomW, resizedCustomH);\n } else {\n next = findClosestProductSize(resizedW, resizedH, shouldConstrainRatio);\n }\n\n if (next?.width) {\n setNextSize(next);\n }\n }\n\n function saveResize() {\n previousTouch = undefined;\n document.removeEventListener('touchmove', trackMovement);\n setShouldUpdateSize(true);\n resetResize();\n }\n\n function resetResize() {\n movementX.current = 0;\n movementY.current = 0;\n setResizeX(0);\n setResizeY(0);\n setAnchorPoint({});\n }\n\n document.addEventListener('touchmove', trackMovement, { passive: false });\n document.addEventListener('touchend', saveResize, { once: true });\n }\n\n useEffect(() => {\n const handle = document.querySelector<HTMLButtonElement>('.reposition-canvas-handle');\n if (handle) {\n handle.addEventListener('touchstart', enableDragCanvasTouch, { passive: false });\n }\n\n return function cleanup() {\n if (handle) {\n handle.removeEventListener('touchstart', enableDragCanvasTouch);\n }\n };\n }, []);\n\n return (\n <div className=\"wall-preview-canvas-tools\" style={{ zIndex: resizeX || resizeY ? 3000 : 1 }}>\n {(nextSize?.width || currentDisplaySize.width) && (\n <span className=\"canvas-display-size\">\n {nextSize?.width || currentDisplaySize.width}w x{' '}\n {nextSize?.height || currentDisplaySize.height}h\n </span>\n )}\n\n <div className=\"next-size-guide\" style={nextSizeGuideStyle} />\n\n <div className=\"resize-canvas-container\" style={resizeContainerStyle}>\n {[\n 'top-left',\n 'top-middle',\n 'top-right',\n 'middle-right',\n 'bottom-right',\n 'bottom-middle',\n 'bottom-left',\n 'middle-left',\n ].map((direction: ResizeDirection) => {\n return (\n <button\n key={direction}\n className={`resize-canvas-handle ${direction}`}\n onMouseDown={() => {\n dispatch(canvases.actions.setActiveCanvasId(canvasId));\n handleDragResize(direction);\n }}\n onTouchStart={() => {\n dispatch(canvases.actions.setActiveCanvasId(canvasId));\n handleTouchResize(direction);\n }}\n >\n <span className=\"screen-reader-text\">Resize product</span>\n </button>\n );\n })}\n </div>\n\n <button\n className=\"reposition-canvas-handle\"\n onMouseDown={() => {\n dispatch(canvases.actions.setActiveCanvasId(canvasId));\n enableDragCanvas();\n }}\n onTouchStart={() => {\n dispatch(canvases.actions.setActiveCanvasId(canvasId));\n }}\n >\n <FontAwesomeIcon icon=\"arrows-alt\" size=\"xl\" />\n <span className=\"screen-reader-text\">Drag to reposition canvas</span>\n </button>\n </div>\n );\n}\n\nexport default CanvasTools;\n", "import Toolbar from './Toolbar';\n\nexport default Toolbar;\n", "import React, { useMemo } from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\nimport ui from 'domains/ui';\nimport crops from 'domains/crops';\n\nimport Button from 'components/shared/Button';\nimport ImageTools from './ImageTools';\nimport MaskTools from './MaskTools';\n\nfunction Toolbar() {\n const dispatch = useAppDispatch();\n const activeCanvasId = useAppSelector(activeEditor.selectors.canvasId);\n const shouldRotateVisualOnly = useAppSelector(activeEditor.selectors.hasRotatedNodes);\n const canRotateCanvas = useAppSelector(activeEditor.selectors.canRotate);\n const hasBorderColor = useAppSelector(activeEditor.selectors.hasBorderColor);\n const nodeHasImage = useAppSelector(crops.selectors.activeNodePhotoLoaded);\n\n const canvasRotationAllowed = useMemo(\n () => shouldRotateVisualOnly || canRotateCanvas,\n [shouldRotateVisualOnly, canRotateCanvas]\n );\n\n function handleRotateCanvas() {\n if (shouldRotateVisualOnly) {\n dispatch(ui.actions.rotateVisualOnly());\n } else if (activeCanvasId) {\n dispatch(canvases.actions.rotateCanvas(activeCanvasId));\n }\n }\n\n function handleZoom(zoom: string) {\n if (activeCanvasId) {\n dispatch(crops.actions.zoomCrop({ canvasId: activeCanvasId, zoom: parseFloat(zoom) }));\n }\n }\n\n function handleRotateImage() {\n dispatch(crops.actions.rotateActiveImage());\n }\n\n function handleShowImageFilters() {\n dispatch(ui.actions.setActiveContentSidebarMenu('image-filters'));\n }\n\n return (\n <div className=\"toolbar\">\n <div className=\"edit-tools\">\n {canvasRotationAllowed && (\n <Button\n type=\"icon\"\n appearance=\"themed\"\n a11yText=\"Rotate Canvas\"\n icon=\"retweet\"\n onClick={handleRotateCanvas}\n size=\"lg\"\n />\n )}\n {nodeHasImage && (\n <ImageTools\n handleZoom={handleZoom}\n handleRotateImage={handleRotateImage}\n handleShowImageFilters={handleShowImageFilters}\n />\n )}\n {hasBorderColor && <MaskTools />}\n </div>\n </div>\n );\n}\n\nexport default Toolbar;\n", "import React, { useMemo } from 'react';\n\nimport { useAppSelector } from 'utils/hooks';\n\nimport Button from 'components/shared/Button';\nimport Slider from 'components/shared/Slider';\n\nimport crops from 'domains/crops';\n\ntype ImageToolsProps = {\n handleZoom: (value: string) => void;\n handleRotateImage: () => void;\n handleShowImageFilters: () => void;\n};\n\nfunction ImageTools(props: ImageToolsProps) {\n const { handleZoom, handleRotateImage, handleShowImageFilters } = props;\n\n const activeCrop = useAppSelector(crops.selectors.activeCrop);\n\n const zoom = useMemo(() => (!!activeCrop && activeCrop.zoom) || '1', [activeCrop]);\n\n return (\n <div className=\"image-tools\">\n <Button\n type=\"icon\"\n icon=\"redo\"\n appearance=\"themed\"\n a11yText=\"Rotate Image\"\n onClick={handleRotateImage}\n size=\"lg\"\n />\n\n <Slider\n id=\"crop-zoom\"\n min=\"1\"\n max=\"2\"\n step=\"0.01\"\n onChange={handleZoom}\n title=\"Zoom Image\"\n value={zoom}\n />\n\n <Button\n type=\"icon\"\n icon=\"wand-magic-sparkles\"\n appearance=\"themed\"\n a11yText=\"Add Filter\"\n onClick={handleShowImageFilters}\n size=\"lg\"\n />\n </div>\n );\n}\n\nexport default ImageTools;\n", "import React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { RgbStringColorPicker } from 'react-colorful';\nimport tinycolor from 'tinycolor2';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport RgbDisplay from 'components/shared/RgbDisplay/';\nimport Button from 'components/shared/Button';\n\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\n\nfunction MaskTools() {\n const dispatch = useAppDispatch();\n const borderColor = useAppSelector(activeEditor.selectors.borderColor);\n\n const [showColorPicker, setShowColorPicker] = useState(false);\n\n const restoreColor = useRef<string>('FFFFFFFF');\n\n useEffect(() => {\n function handleClose({ target }: MouseEvent) {\n const picker = document.querySelector('.mask-tools .color-picker');\n if (picker && !picker.contains(target as HTMLElement)) {\n setShowColorPicker(false);\n }\n }\n\n if (showColorPicker) {\n document.addEventListener('click', handleClose);\n } else {\n document.removeEventListener('click', handleClose);\n }\n\n return function cleanup() {\n document.removeEventListener('click', handleClose);\n };\n }, [showColorPicker]);\n\n function handleColorChange(color: string) {\n const parsed = tinycolor(color);\n if (parsed.isValid()) {\n dispatch(canvases.actions.updateCanvas({ borderColor: parsed.toHex8() }));\n }\n }\n\n // Set it back to the previously used value\n function handleColorCancel() {\n setShowColorPicker(false);\n dispatch(canvases.actions.updateCanvas({ borderColor: restoreColor.current }));\n }\n\n // It's already been set in redux state, so update our 'restore'\n function handleColorChoose() {\n if (borderColor) {\n restoreColor.current = borderColor;\n }\n\n setShowColorPicker(false);\n }\n\n const rgbBorderColor = useMemo(() => tinycolor(borderColor).toRgbString(), [borderColor]);\n\n return (\n <div className=\"mask-tools\">\n {showColorPicker && (\n <div className=\"color-picker\">\n <RgbStringColorPicker color={rgbBorderColor} onChange={handleColorChange} />\n <div className=\"color-picker__controls\">\n <input\n type=\"text\"\n value={rgbBorderColor}\n onChange={(e) => handleColorChange(e.target.value)}\n />\n <Button\n type=\"bare\"\n className=\"color-picker-button cancel-button\"\n onClick={handleColorCancel}\n >\n cancel\n </Button>\n <Button\n type=\"bare\"\n className=\"color-picker-button choose-button\"\n onClick={handleColorChoose}\n >\n choose\n </Button>\n </div>\n </div>\n )}\n <Button\n type=\"bare\"\n className=\"sp-preview icon border-color-button\"\n onClick={() => setShowColorPicker(!showColorPicker)}\n >\n <span className=\"screen-reader-text\">Change border color</span>\n </Button>\n <RgbDisplay color={borderColor} />\n </div>\n );\n}\n\nexport default MaskTools;\n", "import Shuffler from './Shuffler';\n\nexport default Shuffler;\n", "import React, { createContext, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { debounce } from 'lodash';\n\nimport { findAncestor } from 'utils/dom_utils';\nimport Button from 'components/shared/Button';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport activeEditor from 'domains/active_editor';\n\nimport canvases from 'domains/canvases';\nimport products from 'domains/products';\nimport ui from 'domains/ui';\n\nimport { paramFilterDetail } from 'utils/globals';\nimport { notNull } from 'utils/type_guards';\n\nimport ShufflerProduct, { propInShufflerProduct } from './ShufflerProduct';\nimport ShufflerProductTile from './ShufflerProductTile';\nimport ShufflerFilterGroup from './ShufflerFilterGroup';\nimport { StandardControls, MobileControls } from './Controls';\nimport ShufflerProductDetail from './ShufflerProductDetail';\nimport ShufflerWalkthrough from './Walkthrough';\n\nimport FilterData from './data/filters';\n\nimport type { ShufflerFilterData, ShufflerFilterItem } from './data/filters.types';\nimport type { OptionGroupAPIData } from 'domains/option_groups';\nimport type { OptionalPair } from 'types/common_types';\n\nexport type ShufflerContextType = {\n itemClick: (e: React.SyntheticEvent) => void;\n handleItemNavigation: (e: React.KeyboardEvent) => void;\n byFilter: (target: EventTarget) => void;\n metalabels: Record<string, string>;\n selectedFilters: Set<string>;\n setSelectedFilters: (selected: Set<string>) => void;\n filterCollapse: React.MouseEventHandler;\n collapseFilters: Set<string>;\n showWalkthrough: boolean;\n setShowWalkthrough: (set: boolean) => void;\n filterSearch: (target: HTMLInputElement) => void;\n catalogOptionGroups: string[];\n handleZoom: (z: number) => void;\n numIcons: number;\n sortBy: string;\n setSortBy: (sort: string) => void;\n staticFilterData: ShufflerFilterData | null;\n productOptionGroups: OptionGroupAPIData[];\n relatedProducts: ShufflerProduct[];\n showRelatedProducts: boolean;\n setShowRelatedProducts: (show: boolean) => void;\n product: ShufflerProduct | undefined;\n setProduct: (p: ShufflerProduct | undefined) => void;\n currentOptionGroup: OptionGroupAPIData | undefined;\n setCurrentOptionGroup: (optionGroup: OptionGroupAPIData | undefined) => void;\n selectedOptions: Map<string, number>;\n optionClick: (e: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>) => void;\n optionGroupClick: (\n e: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>,\n force?: boolean\n ) => void;\n};\n\nexport const ShufflerContext = createContext<ShufflerContextType | null>(null);\n\nconst metalabels = { numphotos: 'Number of photos', hascustomtext: 'Custom text' };\n\nfunction Shuffler() {\n const dispatch = useAppDispatch();\n const activeCatalog = useAppSelector(activeEditor.selectors.catalog);\n const subcatalogs = useAppSelector(activeEditor.selectors.subcatalogs);\n const activeProduct = useAppSelector(activeEditor.selectors.product);\n const optionGroups = useAppSelector(activeEditor.selectors.optionGroups);\n const productsById = useAppSelector(products.selectors.selectEntities);\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n const showAdvancedFilters = useAppSelector(ui.selectors.showAdvancedFilters);\n\n const elem = useRef<HTMLDivElement>(null);\n const filtersElem = useRef<HTMLDivElement>(null);\n const mobileFooterElem = useRef<HTMLDivElement>(null);\n const shufflerElem = useRef<HTMLDivElement>(null);\n\n const [init, setInit] = useState(false);\n const [status, setStatus] = useState('pending');\n const [showWalkthrough, setShowWalkthrough] = useState(true);\n const [numIcons, setNumIcons] = useState(4);\n const [selectedFilters, setSelectedFilters] = useState<Set<string>>(new Set());\n const [collapseFilters, setCollapseFilters] = useState<Set<string>>(new Set());\n const [visibleItems, setVisibleItems] = useState<ShufflerProduct[]>([]);\n const [product, setProduct] = useState<ShufflerProduct | undefined>(undefined);\n const [relatedProducts, setRelatedProducts] = useState<ShufflerProduct[]>([]);\n const [showRelatedProducts, setShowRelatedProducts] = useState(true);\n const [productOptionGroups, setProductOptionGroups] = useState<OptionGroupAPIData[]>([]);\n const [currentOptionGroup, setCurrentOptionGroup] = useState<OptionGroupAPIData | undefined>(\n undefined\n );\n const [selectedOptions, setSelectedOptions] = useState<Map<string, number>>(new Map());\n const [sortBy, setSortBy] = useState('default');\n\n const staticFilterData = useMemo(() => {\n if (!activeCatalog?.name) return null;\n\n return FilterData[activeCatalog.name];\n }, [activeCatalog]);\n\n const catalogFilters = useMemo(() => {\n return staticFilterData ? staticFilterData.filters : [];\n }, [staticFilterData]);\n\n const catalogOptionGroups = useMemo(() => {\n return staticFilterData ? staticFilterData.optionGroups : [];\n }, [staticFilterData, optionGroups]);\n\n const allFilterableProducts = useMemo(() => {\n const formats = staticFilterData?.filters.find((f) => f.groupname === 'format');\n\n return subcatalogs\n .flatMap((s) => {\n return s.templates.flatMap((pId) => {\n const p = productsById[pId];\n if (!p) return null;\n\n const sp = new ShufflerProduct(s.name, p);\n\n // Add the format from the static data, if available\n if (formats) {\n let added = false;\n formats.groupfilters.forEach((filter) => {\n if (!added && filter.products.includes(sp.uid)) {\n sp.format = filter.name;\n added = true;\n }\n });\n }\n\n return sp;\n });\n })\n .filter(notNull)\n .reverse();\n }, [subcatalogs, productsById, staticFilterData]);\n\n const metadata = useMemo(() => {\n const ret: { numphotos: number[]; hascustomtext: boolean[] } = {\n numphotos: [],\n hascustomtext: [false],\n };\n\n const numSet = new Set<number>();\n allFilterableProducts.forEach((p) => {\n if (p.metaData.hascustomtext) {\n ret.hascustomtext = [true];\n }\n\n numSet.add(p.metaData.numphotos);\n });\n\n ret.numphotos = Array.from(numSet);\n\n return ret;\n }, [allFilterableProducts]);\n\n const reducedFilters = useMemo(() => {\n if (!staticFilterData) return [];\n\n const { filters, searchFilters } = staticFilterData;\n\n return filters\n .filter(({ groupname }) => searchFilters.includes(groupname))\n .reduce((a: ShufflerFilterItem[], { groupfilters }) => [...a, ...groupfilters], []);\n }, [staticFilterData]);\n\n // byFilter is the click handler for each filter link or checkbox\n const byFilter = useCallback(\n (target: EventTarget) => {\n if (target instanceof HTMLElement) {\n setStatus('filtering');\n const t = findAncestor(target, '[data-groupname]');\n if (!t) return;\n\n const filterGroup = t.dataset.groupname;\n const metaFilter = t.dataset.meta;\n const targetValue = t.dataset.value || t.getAttribute('value');\n const filters = new Set([...selectedFilters]);\n const thisFilterName = `${targetValue}:${filterGroup || metaFilter || ''}`;\n const filterIsActive = filters.has(thisFilterName);\n\n if (!filterGroup) {\n const filterName = metaFilter ? `:${metaFilter}` : thisFilterName;\n const toDelete = [...selectedFilters.values()].find(\n (f) => f.indexOf(filterName) === f.length - 1\n );\n if (toDelete) {\n filters.delete(toDelete);\n }\n }\n\n if (filterIsActive) {\n filters.delete(thisFilterName);\n } else if (!filterIsActive) {\n filters.add(thisFilterName);\n }\n setSelectedFilters(filters);\n }\n },\n [selectedFilters]\n );\n\n const filterCollapse = useCallback(\n ({ currentTarget }: React.MouseEvent<SVGSVGElement>) => {\n const v = currentTarget.dataset.groupname?.toLowerCase();\n if (!v) return;\n\n const reveal = collapseFilters.has(v);\n currentTarget.classList.toggle('fa-chevron-down', reveal);\n currentTarget.classList.toggle('fa-chevron-up', !reveal);\n if (reveal) {\n collapseFilters.delete(v);\n } else {\n collapseFilters.add(v);\n }\n setCollapseFilters(new Set([...collapseFilters]));\n },\n [collapseFilters]\n );\n\n const defaultSort = useCallback(\n (a: ShufflerProduct, b: ShufflerProduct) => {\n const featured = staticFilterData?.featured;\n if (!featured) return 0;\n\n const fa = featured.find((fp) => fp === a.uid);\n const fb = featured.find((fp) => fp === b.uid);\n if (fa && !fb) {\n return -1;\n }\n if (fb && !fa) {\n return 1;\n }\n return 0;\n },\n [staticFilterData]\n );\n\n const photoUpSort = (a: ShufflerProduct, b: ShufflerProduct) => {\n const countA = a.metaData.numphotos;\n const countB = b.metaData.numphotos;\n return countA - countB;\n };\n\n const photoDownSort = (a: ShufflerProduct, b: ShufflerProduct) => {\n const countA = a.metaData.numphotos;\n const countB = b.metaData.numphotos;\n return countB - countA;\n };\n\n const sizeUpSort = ({ size: a }: ShufflerProduct, { size: b }: ShufflerProduct) => {\n const aa = a.split('x').reduce((i, v) => {\n // eslint-disable-next-line no-param-reassign\n i += parseFloat(v);\n return i;\n }, 0);\n const bb = b.split('x').reduce((i, v) => {\n // eslint-disable-next-line no-param-reassign\n i += parseFloat(v);\n return i;\n }, 0);\n return aa - bb;\n };\n\n const sizeDownSort = ({ size: a }: ShufflerProduct, { size: b }: ShufflerProduct) => {\n const aa = a.split('x').reduce((i, v) => {\n // eslint-disable-next-line no-param-reassign\n i += parseFloat(v);\n return i;\n }, 0);\n const bb = b.split('x').reduce((i, v) => {\n // eslint-disable-next-line no-param-reassign\n i += parseFloat(v);\n return i;\n }, 0);\n return bb - aa;\n };\n\n const itemClick = useCallback(\n ({ currentTarget }: React.MouseEvent<HTMLButtonElement>) => {\n const { id: productId, catalog: catalogName } = currentTarget.dataset;\n if (!productId || !catalogName) return;\n\n const containingSubcatalog = subcatalogs.find(({ name }) => name === catalogName);\n if (!containingSubcatalog) return;\n\n dispatch(\n canvases.actions.changeActiveCanvasConfig.multi({\n subcatalog: containingSubcatalog.id,\n product: parseInt(productId),\n })\n );\n setProduct(allFilterableProducts.find(({ id }) => id === parseInt(productId)));\n },\n [dispatch, allFilterableProducts, subcatalogs]\n );\n\n const getNavigableItems = useCallback(() => {\n if (!shufflerElem.current) return [];\n\n return Array.from(shufflerElem.current.children)\n .filter((e) => !e.classList.contains('shuffle-sizer'))\n .filter((e) => !e.classList.contains('shuffle-item--hidden')) as HTMLButtonElement[];\n }, [shufflerElem]);\n\n const navigateItemPrevious = useCallback(\n (el: HTMLButtonElement) => {\n const v = getNavigableItems();\n const i = v.indexOf(el);\n const n = i === 0 ? v.length - 1 : i - 1;\n v[n].focus();\n },\n [getNavigableItems]\n );\n\n const navigateItemNext = useCallback(\n (el: HTMLButtonElement) => {\n const v = getNavigableItems();\n const i = v.indexOf(el);\n const n = i < v.length - 1 ? i + 1 : 0;\n v[n].focus();\n },\n [getNavigableItems]\n );\n\n const navigateItemAbove = useCallback(\n (el: HTMLButtonElement) => {\n const v = getNavigableItems().reverse();\n const { x: elemLeft, y: elemTop } = el.getBoundingClientRect();\n const n = v.find((t) => {\n const { x: tLeft, y: tTop } = t.getBoundingClientRect();\n return t !== el && tLeft === elemLeft && tTop < elemTop;\n });\n const e = n || el;\n e.focus();\n },\n [getNavigableItems]\n );\n\n const navigateItemBelow = useCallback(\n (el: HTMLButtonElement) => {\n const v = getNavigableItems();\n const { x: elemLeft, y: elemTop } = el.getBoundingClientRect();\n const n = v.find((t) => {\n const { x: tLeft, y: tTop } = t.getBoundingClientRect();\n return t !== el && tLeft === elemLeft && tTop > elemTop;\n });\n const e = n || el;\n e.focus();\n },\n [getNavigableItems]\n );\n\n const handleItemNavigation = useCallback(\n ({ key, currentTarget }: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (key) {\n case 'ArrowRight':\n return navigateItemNext(currentTarget);\n case 'ArrowLeft':\n return navigateItemPrevious(currentTarget);\n case 'ArrowUp':\n return navigateItemAbove(currentTarget);\n case 'ArrowDown':\n return navigateItemBelow(currentTarget);\n default:\n return false;\n }\n },\n [navigateItemAbove, navigateItemBelow, navigateItemNext, navigateItemPrevious]\n );\n\n const optionGroupClick = useCallback(\n ({ currentTarget }: React.MouseEvent<HTMLDivElement>, forceToggle?: boolean) => {\n const optionGroup = productOptionGroups.find(\n (g) => g.name === currentTarget.dataset.groupname\n );\n if (\n currentOptionGroup === optionGroup &&\n (forceToggle === undefined || forceToggle === false)\n ) {\n setCurrentOptionGroup(undefined);\n } else if (forceToggle === undefined || forceToggle === true) {\n setCurrentOptionGroup(optionGroup);\n }\n },\n [currentOptionGroup, productOptionGroups]\n );\n\n const optionClick = ({\n currentTarget: {\n dataset: { id: targetId },\n },\n }: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>) => {\n if (!currentOptionGroup) return;\n\n const option = currentOptionGroup.options.find((o) => o.id.toString() === targetId?.toString());\n const currentlySelectedOptions = new Map([...selectedOptions.entries()]);\n\n if (!option) return;\n\n currentlySelectedOptions.set(currentOptionGroup.name, option.id);\n\n const optionPair: OptionalPair<number, number> = [currentOptionGroup.id, option.id];\n const payload = { options: [optionPair] };\n\n dispatch(canvases.actions.changeActiveCanvasConfig.options(payload));\n setSelectedOptions(currentlySelectedOptions);\n // close the option group after selecting option\n setCurrentOptionGroup(undefined);\n };\n\n const categoryProducts = useMemo(() => {\n if (!staticFilterData) return [];\n\n const selectedCategories: string[] = [];\n const nonCats: string[] = [];\n const filterGroups: Record<string, string[]> = {};\n\n const { filters } = staticFilterData;\n\n // assign the filters to either the categories or non categories\n [...selectedFilters].forEach((filt) => {\n const [, t] = filt.split(':');\n (t === 'category' ? selectedCategories : nonCats).push(filt);\n });\n\n let selectedFilterProducts =\n selectedFilters.size > 0 && selectedCategories.length > 0 ? [] : [...allFilterableProducts];\n\n selectedCategories.forEach((filt) => {\n const [filterValue] = filt.split(':');\n selectedFilterProducts = selectedFilterProducts.concat(\n allFilterableProducts.filter(({ subcatalog }) => subcatalog === filterValue)\n );\n });\n\n nonCats.forEach((filt) => {\n const [filterValue, filterType] = filt.split(':');\n const metaFilter = /^meta--/.test(filterType);\n filterGroups[filterType] = filterGroups[filterType] || [];\n // find the group that matches the filter\n const { groupfilters: groupedFilters } =\n filters.find(({ groupname }) => groupname && groupname === filterType) || {};\n\n const { products: fProducts } =\n (!!groupedFilters && groupedFilters.find(({ name }) => name === filterValue)) || {};\n\n if (metaFilter) {\n const [, metaKey] = filterType.split('meta--') as [\n string,\n keyof ShufflerProduct['metaData']\n ];\n const mProducts = allFilterableProducts\n .filter((p) => p.metaData[metaKey].toString() === filterValue)\n .map((p) => p.uid);\n if (mProducts && mProducts.length) {\n filterGroups[filterType].push(...mProducts);\n }\n }\n if (fProducts && fProducts.length) {\n filterGroups[filterType].push(...fProducts);\n }\n });\n\n const groups = Object.values(filterGroups).sort(({ length: a }, { length: b }) => a - b);\n\n // product has to be in all groups so check the shortest\n // pull group with the fewest products and shorten `groups` array\n const shortestGroup = groups.shift();\n const productsInAllGroups = shortestGroup\n ? shortestGroup.filter((p) => {\n let res = true;\n if (groups.length > 0) {\n groups.forEach((group) => {\n res = res && group.includes(p);\n });\n }\n return res;\n })\n : [];\n\n const groupProducts =\n productsInAllGroups.length === 0\n ? []\n : productsInAllGroups.reduce((a: ShufflerProduct[], productUid) => {\n const found = selectedFilterProducts.find(({ uid }) => uid === productUid);\n if (found) {\n a.push(found);\n }\n return a;\n }, []);\n\n return [\n ...new Set(\n (nonCats.length === 0 ? [...selectedFilterProducts] : groupProducts).filter(notNull)\n ),\n ];\n }, [selectedFilters, allFilterableProducts, staticFilterData]);\n\n const filterSearch = useCallback(\n (target: HTMLInputElement) => {\n if (!staticFilterData) return;\n\n const searchterms = target.value.toLowerCase();\n const { searchParams } = staticFilterData;\n\n // if there are search terms in the search field,\n // search for products matching those terms.\n const productsMatchingSearchTerms =\n searchterms === ''\n ? categoryProducts\n : categoryProducts.filter((p) => {\n let ret = p.subcatalog.toLowerCase().includes(searchterms);\n if (!ret) {\n // searchParams are the specified fields to match against\n searchParams.forEach((s) => {\n ret =\n ret ||\n (propInShufflerProduct(s) &&\n !!p[s]?.toString().toLowerCase().includes(searchterms));\n });\n }\n return ret;\n });\n\n // if there are no search terms use the categoryProducts\n // if there are search terms\n const searchableFilterProducts = searchterms\n ? [\n ...reducedFilters\n .filter(({ name }) => name.toLowerCase().indexOf(searchterms) > -1)\n .reduce((a, { products }) => {\n products.forEach(a.add, a);\n return a;\n }, new Set()),\n ]\n .map((matchUid) =>\n categoryProducts.find(({ uid: productUid }) => productUid === matchUid)\n )\n .filter(notNull)\n : categoryProducts;\n\n const sortFunction = {\n default: defaultSort,\n photo_up: photoUpSort,\n photo_down: photoDownSort,\n size_up: sizeUpSort,\n size_down: sizeDownSort,\n }[sortBy];\n\n setVisibleItems(\n [...new Set(productsMatchingSearchTerms.concat(searchableFilterProducts))].sort(\n sortFunction\n )\n );\n },\n [categoryProducts, reducedFilters, defaultSort, staticFilterData, sortBy]\n );\n\n const showProductsInView = useCallback(() => {\n const { current } = elem;\n if (!current) return;\n\n const buttons = Array.from(current.querySelectorAll('button.catalog-item'));\n if (buttons.length > 0) {\n buttons.forEach((tile) => {\n const { top } = tile.getBoundingClientRect();\n const container = tile.querySelector('.item_container');\n if (container && top < window.innerHeight + 500) {\n tile.classList.remove('invisible');\n container.classList.add('animate__animated');\n }\n });\n setStatus('idle');\n } else if (init) {\n setStatus('idle');\n }\n }, [elem, init]);\n\n const tileKey = useMemo(() => `${[...selectedFilters].toString()}`, [selectedFilters]);\n\n useEffect(() => {\n if (!showWalkthrough) {\n setInit(true);\n showProductsInView();\n }\n }, [showWalkthrough, showProductsInView]);\n\n useEffect(() => {\n const { current } = elem;\n if (current) {\n const scrollListener = debounce(() => showProductsInView(), 100, { leading: true });\n const shufflerElement = shufflerElem.current;\n shufflerElement?.addEventListener('scroll', scrollListener);\n\n return () => {\n shufflerElement?.removeEventListener('scroll', scrollListener);\n };\n }\n }, [showProductsInView]);\n\n useEffect(() => {\n if (status === 'idle' && !init) {\n setInit(true);\n }\n }, [status, init]);\n\n useEffect(() => {\n setVisibleItems(allFilterableProducts);\n }, [allFilterableProducts]);\n\n useEffect(() => {\n showProductsInView();\n }, [visibleItems, showProductsInView]);\n\n useEffect(() => {\n if (allFilterableProducts.length) {\n // check to url for a flag to automatically launch product detail\n if (paramFilterDetail && activeProduct) {\n setProduct(allFilterableProducts.find((p) => p.id === activeProduct.id));\n setShowWalkthrough(false);\n }\n }\n }, [allFilterableProducts, activeProduct]);\n\n useEffect(() => {\n const input = document.querySelector<HTMLInputElement>('#filter-search-input');\n\n if (input) {\n filterSearch(input);\n }\n }, [filterSearch, selectedFilters]);\n\n useEffect(() => {\n if (product && product.relatedProducts) {\n setRelatedProducts(\n allFilterableProducts.filter((p) => product.relatedProducts?.includes(p.uid))\n );\n } else {\n setSelectedOptions(new Map());\n }\n }, [product, allFilterableProducts]);\n\n useEffect(() => {\n setProductOptionGroups(\n optionGroups.filter(({ name }) => catalogOptionGroups.indexOf(name) > -1)\n );\n }, [optionGroups, catalogOptionGroups]);\n\n useEffect(() => {\n const { length } = Object.values(productsById);\n if (length === 0) {\n setStatus('pending');\n } else if (length > 0) {\n setStatus('formatting');\n }\n }, [productsById]);\n\n useEffect(() => {\n if (!showAdvancedFilters) {\n setSelectedOptions(new Map());\n }\n }, [showAdvancedFilters]);\n\n useEffect(() => {\n showProductsInView();\n }, [numIcons, showProductsInView]);\n\n const handleZoom = (d: number) => {\n setNumIcons(d);\n };\n\n const toggleFiltersElem = (e: React.MouseEvent) => {\n e.preventDefault();\n const c = filtersElem.current?.classList;\n const m = mobileFooterElem.current?.classList;\n const s = shufflerElem.current?.classList;\n\n if (s && s.contains('freeze')) {\n s.remove('freeze');\n shufflerElem.current.style.position = 'relative';\n } else if (s) {\n s.add('freeze');\n shufflerElem.current.style.position = 'fixed';\n }\n\n if (m && m.contains('show')) {\n m.remove('show');\n } else if (m) {\n m.add('show');\n }\n\n if (c && c.contains('show')) {\n c.remove('show');\n } else if (c) {\n c.add('show');\n }\n };\n\n const shufflerContext = useMemo(() => {\n return {\n staticFilterData,\n byFilter,\n metalabels,\n catalogOptionGroups,\n activeCatalog,\n activeProduct,\n currentOptionGroup,\n itemClick,\n handleItemNavigation,\n optionGroupClick,\n optionClick,\n product,\n productOptionGroups,\n relatedProducts,\n showRelatedProducts,\n setShowRelatedProducts,\n selectedOptions,\n setCurrentOptionGroup,\n setProduct,\n FilterData,\n handleZoom,\n filterSearch,\n filterCollapse,\n numIcons,\n selectedFilters,\n setSelectedFilters,\n collapseFilters,\n shufflerElem,\n sortBy,\n setSortBy,\n showWalkthrough,\n setShowWalkthrough,\n };\n }, [\n staticFilterData,\n byFilter,\n catalogOptionGroups,\n collapseFilters,\n activeCatalog,\n currentOptionGroup,\n activeProduct,\n filterCollapse,\n filterSearch,\n handleItemNavigation,\n itemClick,\n numIcons,\n optionGroupClick,\n optionClick,\n product,\n productOptionGroups,\n relatedProducts,\n selectedFilters,\n selectedOptions,\n showRelatedProducts,\n sortBy,\n setSortBy,\n shufflerElem,\n showWalkthrough,\n setShowWalkthrough,\n ]);\n\n function filterGroupSort(a: ShufflerFilterItem, b: ShufflerFilterItem) {\n if (a.default) {\n if (b.default) {\n return 0;\n }\n return -1;\n }\n if (b.default) {\n if (a.default) {\n return 0;\n }\n return 1;\n }\n return 0;\n }\n\n const featuredProducts = useMemo(() => {\n return allFilterableProducts.length && staticFilterData?.featured\n ? staticFilterData.featured\n .map((uid) => allFilterableProducts.find((p) => p.uid === uid))\n .filter(notNull)\n : [];\n }, [staticFilterData, allFilterableProducts]);\n\n function handleShowAdvancedFilters(show: boolean) {\n dispatch(ui.actions.setShowAdvancedFilters(show));\n }\n\n return (\n <div className=\"shuffl\">\n <div\n ref={elem}\n className={`shuffleContainer ${\n !showAdvancedFilters || catalogFilters.length === 0 ? 'hidden' : ''\n }`}\n >\n <ShufflerContext.Provider value={shufflerContext}>\n {hasMobileNavigation ? (\n <MobileControls\n toggleFilters={toggleFiltersElem}\n handleShowAdvancedFilters={handleShowAdvancedFilters}\n />\n ) : (\n <StandardControls handleShowAdvancedFilters={handleShowAdvancedFilters} />\n )}\n <div className=\"shuffler_body\">\n <div className=\"filters styles\" ref={filtersElem}>\n <div>\n {catalogFilters.map((filtergroup) => (\n <ShufflerFilterGroup\n key={filtergroup.groupname}\n group={filtergroup.groupname}\n label={filtergroup.groupLabel}\n filters={filtergroup.groupfilters.sort(filterGroupSort)}\n />\n ))}\n\n {metadata &&\n Object.entries(metadata).map(([key, val]) => (\n <ShufflerFilterGroup\n key={key}\n group={`meta--${key}`}\n filters={val}\n type=\"meta\"\n metakey={key}\n />\n ))}\n </div>\n </div>\n <div className=\"mobile-filter-footer\" ref={mobileFooterElem}>\n <span>\n {[...selectedFilters].length > 0 && (\n <Button\n type=\"bare\"\n onClick={() => {\n setSelectedFilters(new Set());\n }}\n >\n Clear Filters\n </Button>\n )}\n </span>\n <span>\n <Button type=\"bare\" onClick={toggleFiltersElem}>\n Show {visibleItems.length} results\n </Button>\n </span>\n </div>\n {!paramFilterDetail && showWalkthrough && (\n <ShufflerWalkthrough\n filters={staticFilterData?.filters || []}\n items={visibleItems}\n featured={featuredProducts}\n handleShowAdvancedFilters={handleShowAdvancedFilters}\n setProduct={setProduct}\n selectedFilters={selectedFilters}\n setSelectedFilters={setSelectedFilters}\n setShowWalkthrough={setShowWalkthrough}\n />\n )}\n <div className=\"shuffler row shuffle\" style={{ margin: '0 auto' }} ref={shufflerElem}>\n {!showWalkthrough &&\n visibleItems.map((p) => {\n return (\n <ShufflerProductTile\n key={`${p.uid}_${tileKey}`}\n shufflerProduct={p}\n numIcons={numIcons}\n />\n );\n })}\n </div>\n <div className={`shuffler_status${init ? ' gohome' : ''}`}>\n {status === 'pending' && <div>Loading catalog...</div>}\n {status === 'formatting' && (\n <div>preparing {Object.values(productsById).length} products...</div>\n )}\n {status === 'filtering' && <div>filtering {categoryProducts.length} products...</div>}\n {status === 'idle' && <div>displaying {visibleItems.length} results</div>}\n </div>\n </div>\n\n {visibleItems.length === 0 && selectedFilters.size > 0 && init && !showWalkthrough && (\n <div className=\"no-results-message\">\n <div>No results found.</div>\n <div>Please try a different search or reduce the number of filters.</div>\n </div>\n )}\n {product && (\n <ShufflerProductDetail\n onClick={optionClick}\n handleShowAdvancedFilters={handleShowAdvancedFilters}\n />\n )}\n </ShufflerContext.Provider>\n </div>\n </div>\n );\n}\n\nexport default Shuffler;\n", "import { capitalize } from 'lodash';\nimport type { ProductTemplateAPIData } from 'types/catalog_types';\n\ntype ShufflerProductOrientation = 'vertical' | 'horizontal' | 'square';\n\ntype ShufflerProductSize = {\n orientation: ShufflerProductOrientation;\n width?: number;\n height?: number;\n};\n\nclass ShufflerProduct {\n id: number;\n uid: string;\n subcatalog: string;\n name: string;\n nameHtml: string;\n slug: string;\n filterGroup: string;\n imageUrl: string;\n numphotos: number;\n numtext: number;\n format?: string;\n relatedProducts?: string[];\n\n private productSize: ShufflerProductSize;\n\n constructor(subcatalog: string, productTemplate: ProductTemplateAPIData) {\n this.id = productTemplate.id;\n this.uid = productTemplate.uid;\n this.subcatalog = subcatalog;\n this.name = productTemplate.name;\n this.nameHtml = productTemplate.name_long;\n this.slug = productTemplate.slug;\n this.filterGroup = productTemplate.filter_group;\n this.imageUrl = productTemplate.image_url;\n this.relatedProducts = productTemplate.custom_options?.related?.split(',');\n\n this.productSize = makeSize(productTemplate.uid);\n\n const { nodes } = productTemplate;\n this.numtext = nodes.filter(({ node_type: type }) => type === 3).length;\n this.numphotos = nodes.filter(({ node_type: type }) => type === 1).length;\n }\n\n get size() {\n const { height, width } = this.productSize;\n return height && width ? `${Math.min(width, height)}x${Math.max(width, height)}` : '';\n }\n\n get orientation(): Capitalize<ShufflerProductOrientation> {\n const { height, width, orientation } = this.productSize;\n const o = (!!width && !!height && makeOrientation(width, height)) || orientation;\n return capitalize(o) as Capitalize<ShufflerProductOrientation>;\n }\n\n get metaData() {\n return { numphotos: this.numphotos, numtext: this.numtext, hascustomtext: this.numtext > 0 };\n }\n\n get hascustomtext() {\n return this.numtext > 0;\n }\n}\n\nfunction makeSize(u: string) {\n const ret: ShufflerProductSize = { orientation: 'vertical' };\n if (u.match(/_H$/) || u.match(/[h]{1}(-(\\d){2})*(_PopOut-[A-Za-z]+)*(_22)*$/)) {\n ret.orientation = 'horizontal';\n } else if (u.match(/_V$/) || u.match(/[v]{1}(-(\\d){2})*(_22)*$/)) {\n ret.orientation = 'vertical';\n }\n\n if (u.indexOf('57') > -1) {\n ret.width = ret.orientation === 'vertical' ? 5 : 7;\n ret.height = ret.orientation === 'vertical' ? 7 : 5;\n } else if (u.indexOf('455') > -1) {\n ret.width = ret.orientation === 'vertical' ? 4 : 5.5;\n ret.height = ret.orientation === 'vertical' ? 5.5 : 4;\n } else if (u.indexOf('48') > -1) {\n ret.width = ret.orientation === 'vertical' ? 4 : 8;\n ret.height = ret.orientation === 'vertical' ? 8 : 4;\n } else if (u.indexOf('55') > -1) {\n ret.orientation = 'square';\n ret.width = 5;\n ret.height = 5;\n }\n\n return ret;\n}\n\nfunction makeOrientation(x: number, y: number): false | ShufflerProductOrientation {\n return (x > y && 'horizontal') || (y > x && 'vertical') || (y === x && 'square');\n}\n\nexport function propInShufflerProduct(prop: string): prop is keyof ShufflerProduct {\n return prop in ShufflerProduct;\n}\n\nexport default ShufflerProduct;\n", "import React, { useContext, useRef } from 'react';\n\nimport { useAppSelector } from 'utils/hooks';\nimport { handleKeyEvents } from 'utils/handlers';\n\nimport ui from 'domains/ui';\n\nimport ShufflerProduct from './ShufflerProduct';\nimport { ShufflerContext } from './Shuffler';\n\nimport type { ShufflerContextType } from './Shuffler';\n\ntype ShufflerProductTileProps = {\n shufflerProduct: ShufflerProduct;\n numIcons: keyof typeof rowHeights;\n height?: number;\n click?: () => void;\n};\n\ntype RowHeight = { vh: number; min?: number };\n\nconst rowHeights: Record<number, RowHeight> = {\n 1: { vh: 57 },\n 2: { vh: 56, min: 533 },\n 3: { vh: 48, min: 427 },\n 4: { vh: 40, min: 352 },\n 5: { vh: 33, min: 297 },\n 6: { vh: 29, min: 260 },\n 7: { vh: 26, min: 233 },\n 8: { vh: 24, min: 214 },\n 9: { vh: 19 },\n 10: { vh: 18 },\n};\n\nfunction ShufflerProductTile(props: ShufflerProductTileProps) {\n const {\n shufflerProduct: { id, uid, filterGroup, subcatalog, name, metaData, size, imageUrl },\n numIcons,\n height,\n click,\n } = props;\n const tileElem = useRef<HTMLButtonElement>(null);\n const { itemClick, handleItemNavigation } = useContext(ShufflerContext) as ShufflerContextType;\n\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n\n const iconWidth = 100 / numIcons - 2;\n const { vh: rowHeight, min: rowMinHeight } = rowHeights[numIcons];\n\n const tileHeight = height || (!hasMobileNavigation ? rowHeight : '53');\n const tileMinHeight = !height && (!hasMobileNavigation ? rowMinHeight : '475');\n\n function handleDecoratedImageMouseEnter() {\n const imageElem = document.querySelector<HTMLImageElement>(`#shuffler-product-${id} img`);\n if (imageElem && imageElem.dataset.oldSrc) {\n const { oldSrc } = imageElem.dataset;\n imageElem.setAttribute('src', oldSrc);\n }\n }\n\n function handleDecoratedImageMouseLeave() {\n const imageElem = document.querySelector<HTMLImageElement>(`#shuffler-product-${id} img`);\n if (imageElem && imageElem.dataset.newSrc) {\n const { newSrc } = imageElem.dataset;\n imageElem.setAttribute('src', newSrc);\n }\n }\n\n function handleDecoratedImageLoad() {\n const imageElem = document.querySelector<HTMLImageElement>(`#shuffler-product-${id} img`);\n if (imageElem && imageElem.dataset.noRollover !== 'true') {\n imageElem.addEventListener('mouseenter', handleDecoratedImageMouseEnter);\n imageElem.addEventListener('mouseleave', handleDecoratedImageMouseLeave);\n }\n }\n\n // broken images (i.e. images where the src doesn't exist) will throw an error\n function handleDecoratedImageError() {\n const imageElem = document.querySelector<HTMLImageElement>(`#shuffler-product-${id} img`);\n if (imageElem) {\n // mark as no-rollover\n imageElem.setAttribute('data-no-rollover', 'true');\n // remove event listeners if any are already set\n imageElem.removeEventListener('mouseenter', handleDecoratedImageMouseEnter);\n imageElem.removeEventListener('mouseleave', handleDecoratedImageMouseLeave);\n }\n }\n\n // create an image element to load secondary image\n const rolloverImage = document.createElement('img');\n rolloverImage.addEventListener('load', handleDecoratedImageLoad, { once: true });\n rolloverImage.addEventListener('error', handleDecoratedImageError);\n const imageSrc = imageUrl.replace('.png', '_image.jpg');\n rolloverImage.setAttribute('src', imageUrl);\n\n return (\n <button\n id={`shuffler-product-${id}`}\n ref={tileElem}\n onClick={click || itemClick}\n onKeyDown={handleKeyEvents({ open: itemClick, navigate: handleItemNavigation })}\n className={`invisible catalog-item ${uid} ${filterGroup.split(',').map((styleFilter) => {\n return `style-${styleFilter.replace(/\\s+/g, '-')}`;\n })}`}\n key={id}\n data-id={id}\n data-catalog={subcatalog}\n data-groups={`[\"${subcatalog}\"]`}\n data-uid={uid}\n data-size={size}\n data-numphotos={metaData.numphotos}\n style={{\n width: `${!hasMobileNavigation ? iconWidth : '100'}%`,\n height: `${tileHeight}vh`,\n minHeight: `${tileMinHeight || '0'}px`,\n textOverflow: 'ellipsis',\n position: 'relative',\n margin: '0.5vw',\n }}\n >\n <div\n className=\"aspect\"\n style={{\n position: 'relative',\n width: '100%',\n height: '100%',\n paddingBottom: '100%',\n overflow: 'hidden',\n }}\n >\n <div className=\"aspect__inner\" style={{ cursor: 'pointer' }}>\n <div className=\"item_container animate__flipInX animate__animated\">\n <img src={imageSrc} data-new-src={imageSrc} data-old-src={imageUrl} alt={name} />\n <div className=\"item_details\">\n <div className=\"item_detail_container catalog\">\n <span>{subcatalog}</span>\n <span>{size}</span>\n </div>\n <div className=\"item_detail_container name\" title={name}>\n {name}\n </div>\n <div className=\"item_detail_container meta\">\n <span>\n {metaData.numphotos !== 1 ? 'Up to ' : ''}\n {metaData.numphotos} Photo{metaData.numphotos !== 1 ? 's' : ''}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </button>\n );\n}\n\nexport default ShufflerProductTile;\n", "import React, { useContext, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport ui from 'domains/ui';\nimport { ShufflerContext } from './Shuffler';\n\nimport type { ShufflerContextType } from './Shuffler';\nimport type { ShufflerFilterGroup, ShufflerFilterItem } from './data/filters.types';\nimport type { StrictUnion } from 'types/common_types';\n\ntype ShufflerFilterGroupProps = {\n group: string;\n label?: string;\n filters: StrictUnion<ShufflerFilterItem[] | number[] | boolean[]>;\n type?: string;\n metakey?: string;\n};\n\nfunction filterIsFilterItem(f: ShufflerFilterGroupProps['filters'][0]): f is ShufflerFilterItem {\n return typeof f !== 'boolean' && typeof f !== 'number';\n}\n\nfunction ShufflerFilterGroup(props: ShufflerFilterGroupProps) {\n const { group, label, filters, type, metakey } = props;\n const hasMobileNavigation = useSelector(ui.selectors.hasMobileNavigation);\n const { byFilter, metalabels, selectedFilters, filterCollapse, collapseFilters } = useContext(\n ShufflerContext\n ) as ShufflerContextType;\n\n // temporary\n const filterArray = useMemo(() => {\n if (filterIsFilterItem(filters[0])) {\n const typed = filters as ShufflerFilterItem[];\n return typed.map((f) => f.name);\n }\n\n return filters as number[] | boolean[];\n }, [filters]);\n\n const itemId = (name: string | number | boolean) => {\n const p = [name];\n if (metakey) {\n p.unshift(metakey);\n }\n if (type) {\n p.unshift(type);\n }\n return p.join('-');\n };\n\n const groupName = (name: string) => {\n const metalabel = name.split('--').pop();\n return type === 'meta' && metalabel ? metalabels[metalabel] : name;\n };\n\n const itemMeta = () => {\n return type === 'meta' ? group : undefined;\n };\n\n const itemGroup = () => {\n return group || undefined;\n };\n\n const itemName = (name: string | number | boolean) => {\n return name === true ? 'Yes!' : name.toString();\n };\n\n const iconClass = !collapseFilters.has(groupName(group).toLowerCase())\n ? 'chevron-down'\n : 'chevron-up';\n\n return (\n <React.Fragment>\n <strong>\n <FontAwesomeIcon\n icon={iconClass}\n data-groupname={groupName(group)}\n onClick={filterCollapse}\n />\n {label || groupName(group)}\n </strong>\n <div className=\"group_filters\">\n {!collapseFilters.has(groupName(group).toLowerCase()) &&\n filterArray.length > 0 &&\n filterArray.map((name) => (\n <React.Fragment key={itemId(name)}>\n {hasMobileNavigation && (\n <button\n id={itemId(name)}\n value={name.toString()}\n data-groupname={itemGroup()}\n data-meta={itemMeta()}\n onClick={(e) => byFilter(e.target)}\n >\n {itemName(name)}\n </button>\n )}\n {!hasMobileNavigation && (\n <div className=\"category_filter\">\n <input\n type=\"checkbox\"\n id={itemId(name)}\n value={name.toString()}\n data-groupname={itemGroup()}\n data-meta={itemMeta()}\n onChange={(e) => byFilter(e.target)}\n checked={[...selectedFilters].indexOf(`${name}:${itemGroup()}`) >= 0}\n />\n <label htmlFor={itemId(name)}>{itemName(name)}</label>\n </div>\n )}\n </React.Fragment>\n ))}\n </div>\n </React.Fragment>\n );\n}\n\nexport default ShufflerFilterGroup;\n", "import React, { useContext } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { handleKeyEvents } from 'utils/handlers';\nimport Button from 'components/shared/Button';\nimport Slider from 'components/shared/Slider';\nimport { ShufflerContext } from './Shuffler';\nimport ShufflerFilterButton from './ShufflerFilterButton';\n\nimport type { ShufflerContextType } from './Shuffler';\n\ntype ControlsProps = {\n handleShowAdvancedFilters: (show: boolean) => void;\n toggleFilters?: React.ReactEventHandler;\n};\n\nexport function MobileControls(props: Required<ControlsProps>) {\n const {\n setSelectedFilters,\n selectedFilters,\n filterSearch,\n catalogOptionGroups,\n showWalkthrough,\n staticFilterData,\n } = useContext(ShufflerContext) as ShufflerContextType;\n\n const { toggleFilters, handleShowAdvancedFilters } = props;\n\n return (\n <React.Fragment>\n <div className=\"filter_controls\">\n <div className=\"filter-search-container\">\n <div className=\"filter_search\">\n <input\n type=\"text\"\n id=\"filter-search-input\"\n placeholder={staticFilterData?.searchText || 'Loading...'}\n onKeyUp={(e) => filterSearch(e.currentTarget)}\n />\n </div>\n <Button\n type=\"bare\"\n className=\"filters_button\"\n onClick={() => handleShowAdvancedFilters(false)}\n >\n <FontAwesomeIcon icon=\"sliders-h\" size=\"lg\" />\n <span>Hide</span>\n </Button>\n </div>\n </div>\n\n <div className=\"selected-filter-buttons\">\n <div\n role=\"button\"\n className=\"show-filters-trigger\"\n onClick={(e) => toggleFilters(e)}\n onKeyDown={handleKeyEvents({ open: (e) => toggleFilters(e) })}\n >\n <span>Filters ({catalogOptionGroups.length})</span>\n <FontAwesomeIcon icon=\"chevron-down\" />\n </div>\n {[...selectedFilters].length === 0 && !showWalkthrough && (\n <Button className=\"launch-walkthrough-button\">Help me find a card</Button>\n )}\n {[...selectedFilters].map((filter) => (\n <ShufflerFilterButton key={filter} filter={filter} />\n ))}\n {[...selectedFilters].length > 0 && (\n <Button\n type=\"bare\"\n className=\"clear-filter-link\"\n onClick={() => setSelectedFilters(new Set())}\n >\n Clear All\n </Button>\n )}\n </div>\n </React.Fragment>\n );\n}\n\nexport function StandardControls(props: ControlsProps) {\n const { handleShowAdvancedFilters } = props;\n\n const {\n setSelectedFilters,\n selectedFilters,\n handleZoom,\n filterSearch,\n numIcons,\n sortBy,\n setSortBy,\n showWalkthrough,\n setShowWalkthrough,\n staticFilterData,\n } = useContext(ShufflerContext) as ShufflerContextType;\n\n const [zoomMin, zoomMax] = [2, 8];\n\n const sort = ({ target: { options, selectedIndex } }: React.ChangeEvent<HTMLSelectElement>) => {\n setSortBy(options[selectedIndex].value);\n };\n\n return (\n <React.Fragment>\n <div className=\"filter_controls\">\n <Button\n type=\"bare\"\n className=\"filters_button\"\n onClick={() => handleShowAdvancedFilters(false)}\n >\n Hide Filters <FontAwesomeIcon icon=\"sliders-h\" size=\"lg\" />\n </Button>\n\n <div className=\"controls_right\">\n <div className=\"shuffler-sort-list\">\n <label>\n Sort by\n <select onChange={sort} defaultValue={sortBy}>\n <option value=\"default\">Recommended</option>\n <option value=\"size_up\">Size (smallest)</option>\n <option value=\"size_down\">Size (largest)</option>\n <option value=\"photo_up\">Number of Photos (fewest)</option>\n <option value=\"photo_down\">Number of Photos (most)</option>\n </select>\n </label>\n </div>\n\n <div className=\"shuffler-icon-zoom\">\n <div\n role=\"button\"\n className=\"icon-zoom-small\"\n onClick={() => handleZoom(zoomMax)}\n onKeyDown={handleKeyEvents({ open: () => handleZoom(zoomMax) })}\n aria-label=\"Make Icons Smaller\"\n />\n <Slider\n id=\"zoom-shuffler-icons\"\n min={zoomMin}\n max={zoomMax}\n value={numIcons}\n step=\"1\"\n onChange={handleZoom}\n title=\"Change icon size\"\n />\n <div\n role=\"button\"\n className=\"icon-zoom-large\"\n onClick={() => handleZoom(zoomMin)}\n onKeyDown={handleKeyEvents({ open: () => handleZoom(zoomMin) })}\n aria-label=\"Make Icons Larger\"\n />\n </div>\n </div>\n </div>\n\n <div className=\"filter-search-container\">\n <div className=\"filter_search\">\n <input\n type=\"text\"\n id=\"filter-search-input\"\n placeholder={staticFilterData?.searchText || 'Loading...'}\n onKeyUp={(e) => filterSearch(e.currentTarget)}\n />\n </div>\n\n <div className=\"selected-filter-buttons\">\n {[...selectedFilters].map((filter) => (\n <ShufflerFilterButton key={filter} filter={filter} />\n ))}\n {[...selectedFilters].length === 0 && !showWalkthrough && (\n <Button className=\"launch-walkthrough-button\" onClick={() => setShowWalkthrough(true)}>\n Help me find the right card\n </Button>\n )}\n {[...selectedFilters].length > 0 && (\n <Button type=\"bare\" onClick={() => setSelectedFilters(new Set())}>\n Clear All\n </Button>\n )}\n </div>\n </div>\n </React.Fragment>\n );\n}\n", "import React, { useContext, useMemo } from 'react';\n\nimport Button from 'components/shared/Button';\nimport { ShufflerContext } from './Shuffler';\n\nimport type { ShufflerContextType } from './Shuffler';\nimport { capitalize } from 'lodash';\n\ntype ShufflerFilterButtonProps = {\n filter: string;\n};\n\nfunction ShufflerFilterButton(props: ShufflerFilterButtonProps) {\n const { filter } = props;\n const { byFilter, metalabels } = useContext(ShufflerContext) as ShufflerContextType;\n\n const [value, label] = filter.split(':');\n\n const metalabel = useMemo(() => {\n let lbl;\n\n if (label.indexOf('meta--') === 0) {\n lbl = label\n .replace(/^meta--/, '')\n .split(':')\n .shift();\n }\n\n return lbl;\n }, [label]);\n\n const showLabel = useMemo(() => {\n const show = metalabel && metalabel in metalabels ? metalabels[metalabel] : label;\n return capitalize(show);\n }, [label, metalabel, metalabels]);\n\n const showValue = value !== 'true' ? ` : ${value}` : '';\n\n const dataset = useMemo(() => {\n const ret: Record<string, string> = {\n groupname: label,\n value,\n };\n\n if (metalabel) {\n ret.meta = metalabel;\n }\n\n return ret;\n }, [label, metalabel, value]);\n\n return (\n <div className=\"shuffler-filter-button\">\n {showLabel}\n {showValue}\n <Button\n type=\"icon\"\n icon=\"times\"\n appearance=\"primary\"\n a11yText=\"Remove Filter\"\n className=\"shuffler-filter-remove\"\n onClick={(e) => byFilter(e.currentTarget)}\n dataset={dataset}\n />\n </div>\n );\n}\n\nexport default ShufflerFilterButton;\n", "import React, { useContext, useMemo } from 'react';\n\nimport ui from 'domains/ui';\nimport { useAppSelector } from 'utils/hooks';\n\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\nimport { ShufflerContext } from './Shuffler';\nimport StandardProductDetail from './StandardProductDetail';\nimport MobileProductDetail from './MobileProductDetail';\n\nimport type { ShufflerContextType } from './Shuffler';\n\ntype LoadProductButtonProps = {\n text: string;\n onClick: React.MouseEventHandler;\n};\n\nfunction LoadProductButton({ text, onClick }: LoadProductButtonProps) {\n return (\n <Button type=\"outline\" onClick={onClick}>\n {text}\n </Button>\n );\n}\n\ntype ShufflerProductDetailProps = {\n handleShowAdvancedFilters: (show: boolean) => void;\n onClick: (e: React.MouseEvent | React.KeyboardEvent) => void;\n};\n\nfunction ShufflerProductDetail(props: ShufflerProductDetailProps) {\n const { product, setProduct, staticFilterData } = useContext(\n ShufflerContext\n ) as ShufflerContextType;\n const { onClick, handleShowAdvancedFilters } = props;\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n\n if (!product) return null;\n\n const buttonText = useMemo(\n () => (product.metaData.numtext > 0 ? 'Add Your Images & Text Now' : 'Add Your Images Now'),\n [product]\n );\n\n return (\n <Modal\n title={product.name}\n labelledBy=\"shuffler-product-detail\"\n modalClass={['shuffler-modal']}\n primaryFooterGroup={\n hasMobileNavigation ? (\n <span />\n ) : (\n <LoadProductButton\n text={buttonText}\n onClick={() => {\n handleShowAdvancedFilters(false);\n setProduct(undefined);\n }}\n />\n )\n }\n onClose={() => setProduct(undefined)}\n lastFocusedElementId={`shuffler-product-${product.id}`}\n >\n <div className={`productDetail${staticFilterData?.detailContrast ? ' contrast' : ''}`}>\n {hasMobileNavigation && (\n <MobileProductDetail handleShowAdvancedFilters={handleShowAdvancedFilters} />\n )}\n {!hasMobileNavigation && <StandardProductDetail onClick={onClick} />}\n </div>\n </Modal>\n );\n}\n\nexport default ShufflerProductDetail;\n", "import React, { useCallback, useContext } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { handleKeyEvents } from 'utils/handlers';\nimport { useAppSelector } from 'utils/hooks';\nimport activeEditor from 'domains/active_editor';\n\nimport { ShufflerContext } from './Shuffler';\n\nimport ShufflerProduct from './ShufflerProduct';\nimport type { ShufflerContextType } from './Shuffler';\nimport type { OptionAPIData } from 'domains/option_groups';\n\nfunction navigatePrevious(el: HTMLElement) {\n const parent = el.parentElement;\n if (!parent) return;\n\n const v = Array.from(parent.children) as HTMLElement[];\n const i = v.indexOf(el);\n const n = i === 0 ? v.length - 1 : i - 1;\n v[n].focus();\n}\n\nfunction navigateNext(el: HTMLElement) {\n const parent = el.parentElement;\n if (!parent) return;\n\n const v = Array.from(parent.children) as HTMLElement[];\n const i = v.indexOf(el);\n const n = i < v.length - 1 ? i + 1 : 0;\n v[n].focus();\n}\n\nfunction navigateAbove(el: HTMLElement) {\n const parent = el.parentElement;\n if (!parent) return;\n\n const v = Array.from(parent.children).reverse() as HTMLElement[];\n\n const { x: elemLeft, y: elemTop } = el.getBoundingClientRect();\n // if user arrows up from the top row, focus on the row title element\n const n =\n v.find((o) => {\n const { x: optionLeft, y: optionTop } = o.getBoundingClientRect();\n return o !== el && optionLeft === elemLeft && optionTop < elemTop;\n }) || el.parentElement.previousElementSibling;\n\n if (n instanceof HTMLElement) {\n n.focus();\n }\n}\n\nfunction navigateBelow(el: HTMLElement) {\n const parent = el.parentElement;\n if (!parent) return;\n\n const v = Array.from(parent.children) as HTMLElement[];\n\n const { x: elemLeft, y: elemTop } = el.getBoundingClientRect();\n const n =\n v.find((o) => {\n const { x: optionLeft, y: optionTop } = o.getBoundingClientRect();\n return o !== el && optionLeft === elemLeft && optionTop > elemTop;\n }) || el;\n n.focus();\n}\n\nfunction handleNavigation({ key, currentTarget }: React.KeyboardEvent) {\n if (currentTarget instanceof HTMLElement) {\n switch (key) {\n case 'ArrowRight':\n return navigateNext(currentTarget);\n case 'ArrowLeft':\n return navigatePrevious(currentTarget);\n case 'ArrowUp':\n return navigateAbove(currentTarget);\n case 'ArrowDown':\n return navigateBelow(currentTarget);\n default:\n return false;\n }\n }\n}\n\nfunction RelatedProductButton(props: { relatedProduct: ShufflerProduct }) {\n const {\n relatedProduct: { id, uid, subcatalog, name, imageUrl, size, /*format,*/ orientation },\n } = props;\n const { product, setProduct, itemClick } = useContext(ShufflerContext) as ShufflerContextType;\n\n const handleRelatedProductButtonClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n itemClick(e);\n },\n [itemClick]\n );\n\n return (\n <div\n key={uid}\n role=\"button\"\n tabIndex={0}\n className={`related ${uid === product?.uid ? 'active' : ''}`}\n data-id={id}\n data-catalog={subcatalog}\n onClick={handleRelatedProductButtonClick}\n onKeyDown={handleKeyEvents({\n open: itemClick,\n navigate: handleNavigation,\n close: () => setProduct(undefined),\n })}\n >\n <img\n alt={name}\n src={imageUrl}\n // title={`${name}\\n${size} ${format}\\n${orientation}`}\n title={`${name}\\n${size} \\n${orientation}`}\n />\n </div>\n );\n}\n\ntype OptionButtonProps = {\n option?: OptionAPIData;\n onClick: (e: React.MouseEvent | React.KeyboardEvent) => void;\n isSelected: boolean;\n};\n\nfunction OptionButton(props: OptionButtonProps) {\n const { option, onClick, isSelected } = props;\n const { setProduct, currentOptionGroup } = useContext(ShufflerContext) as ShufflerContextType;\n\n if (!option) return null;\n\n const { id: optionId, uid, name: optionName, image_url: imageUrl } = option;\n\n return (\n <div\n key={optionId}\n role=\"button\"\n tabIndex={0}\n className={`option ${isSelected ? 'active selected' : ''}`}\n data-id={optionId}\n data-uid={uid}\n data-groupname={currentOptionGroup?.name}\n onClick={onClick}\n onKeyDown={handleKeyEvents({\n open: onClick,\n navigate: handleNavigation,\n close: () => setProduct(undefined),\n })}\n title={optionName}\n >\n <img src={imageUrl} alt={optionName} />\n <div className=\"option_text\">{optionName}</div>\n </div>\n );\n}\n\ntype StandardProductDetailProps = {\n onClick: (e: React.MouseEvent | React.KeyboardEvent) => void;\n};\n\nfunction StandardProductDetail(props: StandardProductDetailProps) {\n const { onClick } = props;\n\n const {\n staticFilterData,\n product,\n catalogOptionGroups,\n productOptionGroups,\n currentOptionGroup,\n relatedProducts,\n optionGroupClick,\n setProduct,\n showRelatedProducts,\n } = useContext(ShufflerContext) as ShufflerContextType;\n\n const activeOptions = useAppSelector(activeEditor.selectors.selectedOptions);\n\n function getSelectedOption(groupId: number) {\n return activeOptions.find((o) => o.parent_id === groupId);\n }\n\n const excludeDetails = ['Format', 'Orientation'];\n\n if (!product) return null;\n\n return (\n <React.Fragment>\n <div className=\"left-side\">\n <div className=\"product_detail\">\n <img\n id=\"product_detail_image\"\n src={product.imageUrl}\n alt={product.name}\n className=\"fadein\"\n />\n </div>\n\n {showRelatedProducts && (\n <div className=\"content_box\">\n <div className=\"related_products\">\n {relatedProducts.map(\n (other, i, others) =>\n others.length > 1 && (\n <RelatedProductButton key={other.id} relatedProduct={other} />\n )\n )}\n </div>\n </div>\n )}\n </div>\n\n <div className=\"right-side\">\n <div className=\"product_specifications\">\n <div className=\"product_subcatalog\">{product.subcatalog}</div>\n {staticFilterData?.detailFilters\n .filter((t) => excludeDetails.indexOf(t) === -1)\n .map((df) => (\n <div\n key={df}\n title={product[df.toLowerCase() as keyof ShufflerProduct]?.toString()}\n className=\"product_spec\"\n >\n <span className=\"spec_name\">{df}:</span>{' '}\n <span className=\"spec_value\">\n {product[df.toLowerCase() as keyof ShufflerProduct]?.toString()}\n </span>\n </div>\n ))}\n <div className=\"product_spec\">\n <span className=\"spec_name\">Number of images:</span>{' '}\n <span className=\"spec_value\">{product.metaData.numphotos}</span>\n </div>\n </div>\n\n <div className=\"content_box\">\n {catalogOptionGroups.length > 0 && (\n <div className=\"option_groups_list\">\n <div className=\"option_groups_button_container\">\n {productOptionGroups.length === 0 && '...Loading product options'}\n {productOptionGroups.length > 0 &&\n productOptionGroups.map(\n ({ id: groupId, name: groupName, options: groupOptions }) => (\n <div key={groupId} className=\"options_collapsible\">\n <div\n role=\"link\"\n tabIndex={0}\n className=\"options_collapsible_title\"\n data-groupname={groupName}\n onClick={optionGroupClick}\n // onKeyDown={handleKeyEvents(\n // {\n // open: optionGroupClick,\n // alwaysOpen: (e) => optionGroupClick(e, true),\n // alwaysClose: (e) => optionGroupClick(e, false),\n // close: () => setProduct(undefined),\n // }\n // )}\n >\n <div className=\"option-title\">\n <span className=\"option-title-name\">{groupName}</span>\n {(activeOptions.find((o) => o.parent_id === groupId) ||\n groupOptions.length) && (\n <div className=\"option-title-details\">\n <img\n className=\"selected-option-thumb\"\n src={getSelectedOption(groupId)?.image_url}\n alt={`Current selection : ${\n activeOptions.find((o) => o.parent_id === groupId)?.id ||\n groupOptions[0]\n }`}\n />\n <div>\n <strong>{getSelectedOption(groupId)?.name || ''}</strong>\n <span>{getSelectedOption(groupId)?.service.price || ''}</span>\n </div>\n </div>\n )}\n </div>\n <FontAwesomeIcon\n icon={\n currentOptionGroup && currentOptionGroup.name === groupName\n ? 'chevron-up'\n : 'chevron-down'\n }\n />\n </div>\n {currentOptionGroup && currentOptionGroup.name === groupName && (\n <div className=\"options_collapsible_content current_options\">\n {currentOptionGroup.options.map((curOpt) => (\n <OptionButton\n key={curOpt.id}\n data-id={curOpt.id}\n option={curOpt}\n onClick={onClick}\n isSelected={\n curOpt.id ===\n activeOptions.find(\n ({ parent_id: activeGroupId }) => activeGroupId === groupId\n )?.id\n }\n />\n ))}\n </div>\n )}\n </div>\n )\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n </React.Fragment>\n );\n}\n\nexport default StandardProductDetail;\n", "import React, { useContext, useEffect, useMemo } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { handleKeyEvents } from 'utils/handlers';\nimport { useAppSelector } from 'utils/hooks';\nimport { ShufflerContext } from './Shuffler';\nimport ShufflerProduct from './ShufflerProduct';\n\nimport type { ShufflerContextType } from './Shuffler';\nimport { notNull } from 'utils/type_guards';\n\ntype MobileProductDetailProps = {\n handleShowAdvancedFilters: (show: boolean) => void;\n};\n\nfunction MobileProductDetail(props: MobileProductDetailProps) {\n const { handleShowAdvancedFilters } = props;\n const {\n product,\n catalogOptionGroups,\n productOptionGroups,\n currentOptionGroup,\n relatedProducts,\n itemClick,\n optionGroupClick,\n optionClick,\n setCurrentOptionGroup,\n showRelatedProducts,\n setShowRelatedProducts,\n staticFilterData,\n } = useContext(ShufflerContext) as ShufflerContextType;\n\n function showMobileMetaSpecification(spec: keyof ShufflerProduct['metaData']) {\n let str;\n switch (spec) {\n case 'numphotos':\n str = `${product?.metaData[spec]} Images`;\n break;\n case 'hascustomtext':\n str = product?.metaData[spec] ? 'Custom text' : '';\n break;\n default:\n str = product?.metaData[spec].toString();\n }\n return str;\n }\n\n useEffect(() => {\n if (showRelatedProducts) {\n setCurrentOptionGroup(undefined);\n }\n }, [showRelatedProducts]);\n\n useEffect(() => {\n setShowRelatedProducts(currentOptionGroup === undefined);\n }, [currentOptionGroup]);\n\n const optionButtons = useMemo(() => {\n if (!currentOptionGroup || !product) return null;\n\n return (\n <div className=\"options_collapsible_content current_options\">\n {currentOptionGroup.options.map((option) => (\n <div\n role=\"button\"\n tabIndex={0}\n key={option.id}\n className={`option`}\n data-id={option.id}\n data-groupname={currentOptionGroup.name}\n onClick={optionClick}\n onKeyDown={handleKeyEvents({ open: optionClick })}\n title={option.name}\n >\n <img\n src={option.image_url}\n alt={`${currentOptionGroup.name} - ${option.name}`}\n title={`${currentOptionGroup.name} - ${option.name}`}\n />\n <div className=\"option_text\">{option.name}</div>\n </div>\n ))}\n </div>\n );\n }, [currentOptionGroup]);\n\n if (!product) return null;\n\n return (\n <React.Fragment>\n <div className=\"left-side\">\n <div className=\"mobile_product_detail_container\">\n <div className=\"product_detail\">\n <img\n id=\"product_detail_image\"\n src={product.imageUrl}\n className=\"fadein\"\n title={product.name}\n alt={product.name}\n />\n </div>\n\n <div className=\"product_specifications\">\n <div className=\"product_subcatalog\">{product.subcatalog}</div>\n {staticFilterData?.detailFilters.map((df) => (\n <div\n key={df}\n title={product[df.toLowerCase() as keyof ShufflerProduct]?.toString()}\n className=\"product_spec\"\n >\n <span className=\"spec_value\">\n {product[df.toLowerCase() as keyof ShufflerProduct]?.toString()}\n </span>\n </div>\n ))}\n <div className=\"product_spec\">\n <span className=\"spec_value\">{showMobileMetaSpecification('numphotos')}</span>\n </div>\n <div className=\"product_spec\">\n <span className=\"spec_value\">{showMobileMetaSpecification('hascustomtext')}</span>\n </div>\n\n {productOptionGroups.length > 0 && (\n <div className=\"selected_options\">\n {productOptionGroups.map((optionGroup) => (\n <div key={optionGroup.uid} className=\"product_spec\">\n <span className=\"spec_name\">{optionGroup.name}:</span>\n <span className=\"spec_value option_text\">\n {/* {selectedOptions.get(optionGroup.name)\n ? selectedOptions.get(optionGroup.name).name\n : ''} */}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n\n <div>\n <div className=\"button_container\">\n <button\n onClick={() => handleShowAdvancedFilters(false)}\n data-id={product.id}\n title=\"Customize by adding your photos to this product\"\n >\n Add Images & Text\n </button>\n </div>\n </div>\n </div>\n\n <div className=\"right-side\">\n <div className=\"content_box\">\n <div className=\"related_products options_collapsible\">\n <button\n className=\"options_collapsible_title\"\n onClick={() => {\n setShowRelatedProducts(!showRelatedProducts);\n }}\n >\n <h2>Size & Format</h2>\n <FontAwesomeIcon icon={showRelatedProducts ? 'chevron-up' : 'chevron-down'} />\n </button>\n {showRelatedProducts && (\n <div className=\"options_collapsible_content\">\n {relatedProducts.map(\n (other, i, others) =>\n others.length > 1 && (\n <div\n role=\"button\"\n tabIndex={0}\n key={other.uid}\n className={`related ${other.uid === product.uid ? 'active' : ''}`}\n data-id={other.id}\n data-catalog={other.subcatalog}\n onClick={itemClick}\n onKeyDown={handleKeyEvents({ open: itemClick })}\n >\n <img\n src={other.imageUrl}\n alt={`${other.name}\\n${other.size}}\\n${other.orientation}`}\n title={`${other.name}\\n${other.size}\\n${other.orientation}`}\n />\n </div>\n )\n )}\n </div>\n )}\n </div>\n\n {catalogOptionGroups.length > 0 && (\n <div className=\"option_groups_list\">\n <div className=\"option_groups_button_container\">\n {productOptionGroups.length === 0 && '...Loading product options'}\n {productOptionGroups.length > 0 &&\n productOptionGroups.map((optionGroup) => (\n <div key={optionGroup.id} className=\"options_collapsible\">\n <div\n role=\"button\"\n tabIndex={0}\n className=\"options_collapsible_title\"\n data-groupname={optionGroup.name}\n onClick={optionGroupClick}\n onKeyDown={handleKeyEvents({ open: optionGroupClick })}\n >\n <h2>{optionGroup.name}</h2>\n\n <FontAwesomeIcon\n icon={\n currentOptionGroup && currentOptionGroup.name === optionGroup.name\n ? 'chevron-up'\n : 'chevron-down'\n }\n />\n </div>\n {currentOptionGroup &&\n currentOptionGroup.name === optionGroup.name &&\n optionButtons}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n </React.Fragment>\n );\n}\n\nexport default MobileProductDetail;\n", "import React, { useCallback, useEffect, useState } from 'react';\n\nimport { IS_PRODUCTION } from 'utils/globals';\n\nimport Button from 'components/shared/Button';\nimport { useExperiment, emitter, experimentDebugger } from '@marvelapp/react-ab-test';\nimport ShufflerProductTile from './ShufflerProductTile';\nimport ShufflerProduct, { propInShufflerProduct } from './ShufflerProduct';\n\nimport { type ShufflerFilterGroup, type ShufflerFilterItem } from './data/filters.types';\n\nemitter.defineVariants('Placeholder vs Sample', ['Show Placeholder', 'Show Sample']);\nexperimentDebugger.setDebuggerAvailable(!IS_PRODUCTION);\nexperimentDebugger.enable();\n\ntype ShufflerWalkthroughProps = {\n items: ShufflerProduct[];\n filters?: ShufflerFilterGroup[];\n featured: ShufflerProduct[];\n handleShowAdvancedFilters: (show: boolean) => void;\n setProduct: (product?: ShufflerProduct) => void;\n selectedFilters: Set<string>;\n setSelectedFilters: (selected: Set<string>) => void;\n setShowWalkthrough: (set: boolean) => void;\n};\n\ntype ExampleCard = {\n src?: string;\n format: string;\n orientation: string;\n};\n\nfunction ShufflerWalkthrough(props: ShufflerWalkthroughProps) {\n const {\n items: visibleItems,\n filters,\n featured: featuredProducts,\n handleShowAdvancedFilters,\n setProduct,\n selectedFilters,\n setSelectedFilters,\n setShowWalkthrough,\n } = props;\n\n const hasFlat = !!visibleItems.find((c) => c.format === 'Flat');\n const hasSingleFold = !!visibleItems.find((c) => c.format === 'Single Fold');\n const hasMultiFold = !!visibleItems.find((c) => c.format === 'Multi Fold');\n const hasVertical = !!visibleItems.find((c) => c.orientation === 'Vertical');\n const hasHorizontal = !!visibleItems.find((c) => c.orientation === 'Horizontal');\n const hasSquare = !!visibleItems.find((c) => c.orientation === 'Square');\n\n const [occasion, setOccasion] = useState<string | undefined>(undefined);\n const [format, setFormat] = useState<string | undefined>(undefined);\n const [orientation, setOrientation] = useState<string | undefined>(undefined);\n\n const foundFilter = filters?.find((f) => {\n return f.groupname === 'collections';\n }) as ShufflerFilterGroup | undefined;\n\n if (!foundFilter) return null;\n\n const { groupfilters: occasions } = foundFilter;\n\n const selectOccasion = useCallback(\n ({ target }: React.ChangeEvent<HTMLSelectElement>) => {\n const { options, selectedIndex } = target;\n const { value } = options[selectedIndex];\n const resetFilters = new Set(\n [...selectedFilters].filter((f) => f.split(':').pop()?.toLowerCase() !== 'collections')\n );\n setSelectedFilters(resetFilters.add(`${value}:collections`));\n setOccasion(value);\n },\n [selectedFilters, setSelectedFilters]\n );\n\n const unsetOccasion = useCallback(() => {\n setSelectedFilters(\n new Set([...selectedFilters].filter((f) => f.split(':').pop()?.toLowerCase() !== 'collections'))\n );\n setOccasion(undefined);\n }, [selectedFilters, setSelectedFilters]);\n\n const selectFormat = useCallback(\n (value: string) => {\n if (value !== 'None') {\n setSelectedFilters(new Set([...selectedFilters.add(`${value}:format`)]));\n }\n setFormat(value);\n },\n [selectedFilters, setSelectedFilters]\n );\n\n const unsetFormat = useCallback(() => {\n setSelectedFilters(\n new Set([...selectedFilters].filter((f) => f.split(':').pop()?.toLowerCase() !== 'format'))\n );\n setFormat(undefined);\n }, [selectedFilters, setSelectedFilters]);\n\n const selectOrientation = useCallback(\n (value: string) => {\n if (value !== 'None') {\n setSelectedFilters(new Set([...selectedFilters.add(`${value}:orientation`)]));\n }\n setOrientation(value);\n },\n [selectedFilters, setSelectedFilters]\n );\n\n const checkOccasionSelected = useCallback(() => {\n if (occasion && !selectedFilters.has(`${occasion}:collections`)) {\n unsetOccasion();\n }\n }, [occasion, selectedFilters, unsetOccasion]);\n\n const checkFormatSelected = useCallback(() => {\n if (format && !selectedFilters.has(`${format}:format`)) {\n unsetFormat();\n }\n }, [format, selectedFilters, unsetFormat]);\n\n useEffect(() => {\n checkOccasionSelected();\n checkFormatSelected();\n }, [checkFormatSelected, checkOccasionSelected, selectedFilters]);\n\n useEffect(() => {\n if (occasion && format && orientation) {\n setShowWalkthrough(false);\n }\n }, [occasion, format, orientation, setShowWalkthrough]);\n\n const getRandomItem = useCallback(\n (f: Partial<ExampleCard>) => {\n function passFilters(item: ShufflerProduct) {\n return [...Object.entries(f)].every(\n ([key, val]) => propInShufflerProduct(key) && item[key] === val\n );\n }\n const a = visibleItems.filter(passFilters);\n const r = Math.floor(Math.random() * a.length);\n\n return a[r];\n },\n [visibleItems]\n );\n\n function getPlaceHolder(f: Partial<ExampleCard>) {\n const pdata: ExampleCard[] = [\n {\n src: 'http://dl.bayphoto.com/wos_assets/icon_P57Ph.png',\n format: 'Flat',\n orientation: 'Horizontal',\n },\n {\n src: 'http://dl.bayphoto.com/wos_assets/icon_P57Pv.png',\n format: 'Flat',\n orientation: 'Vertical',\n },\n {\n src: 'http://dl.bayphoto.com/wos_assets/icon_P57Fh.png',\n format: 'Single Fold',\n orientation: 'Horizontal',\n },\n {\n src: 'http://dl.bayphoto.com/wos_assets/icon_P57Fv.png',\n format: 'Single Fold',\n orientation: 'Vertical',\n },\n {\n src: 'http://dl.bayphoto.com/wos_assets/icon_P455Av.png',\n format: 'Multi Fold',\n orientation: 'Vertical',\n },\n {\n src: 'http://dl.bayphoto.com/wos_assets/icon_P55T_SideFold.png',\n format: 'Multi Fold',\n orientation: 'Square',\n },\n ];\n\n const found =\n pdata.find(\n (p) =>\n (!f.format || f.format === p.format) &&\n (!f.orientation || f.orientation === p.orientation)\n ) ||\n pdata.find((p) => f.orientation === p.orientation) ||\n pdata.find((p) => f.format === p.format);\n\n return found || { src: '' };\n }\n const { selectVariant } = useExperiment('Placeholder vs Sample');\n const variant = selectVariant({ 'Show Placeholder': true, 'Show Sample': false });\n\n const getExampleCard = useCallback(\n (f: Partial<ExampleCard>) => {\n const alwaysShowPlaceholder = variant;\n const r = !alwaysShowPlaceholder && getRandomItem(f);\n return r ? r.imageUrl : getPlaceHolder(f).src;\n },\n [getRandomItem, variant]\n );\n\n return (\n <div className=\"cards-walkthrough-wrapper\">\n <div className=\"cards-walkthrough-container\">\n <Button\n a11yText=\"Close Card Wizard\"\n className=\"close\"\n type=\"icon\"\n icon=\"times\"\n onClick={() => setShowWalkthrough(false)}\n />\n {!occasion && (\n <React.Fragment>\n <div className=\"walkthrough-header\">\n <h1>Create the Perfect Card!</h1>\n </div>\n <div className=\"cards-walkthrough-occasion\">\n <span>Start with a blank size below, or </span>\n <div className=\"cards-walkthrough-select-container\">\n <select onChange={selectOccasion}>\n <option>Choose an occasion</option>\n {occasions.map(({ name, description, products }) => (\n <option\n key={name}\n value={name}\n data-desc={description}\n data-count={products.length}\n >\n {name}\n </option>\n ))}\n </select>\n </div>\n </div>\n <div className=\"cards-walkthrough-suggested\">\n {featuredProducts.map((featuredProduct) => (\n <ShufflerProductTile\n key={`${featuredProduct.uid}`}\n shufflerProduct={featuredProduct}\n numIcons={5}\n height={22}\n click={() => {\n setShowWalkthrough(false);\n handleShowAdvancedFilters(false);\n setProduct(undefined);\n }}\n />\n ))}\n </div>\n </React.Fragment>\n )}\n {occasion && !format && (\n <React.Fragment>\n <div className=\"walkthrough-header\">\n <strong>{`Let's find a card for ${occasion}`}</strong>\n <h1>Select the format that works best for you.</h1>\n </div>\n <div className=\"cards-walkthrough-format\">\n <div className=\"cards-walkthrough-panel-container\">\n <div className={`cards-walkthrough-panel ${hasFlat ? 'active' : 'inactive'}`}>\n <div className=\"panel-header\">\n <strong>Flat</strong>\n <span>Easy to mail. Simple and classic</span>\n </div>\n <Button type=\"link\" onClick={() => selectFormat('Flat')} disabled={!hasFlat}>\n <img\n src={getExampleCard({\n format: 'Flat',\n orientation: orientation || 'Vertical',\n })}\n alt=\"Flat cards\"\n />\n </Button>\n <Button onClick={() => selectFormat('Flat')} disabled={!hasFlat}>\n Flat Card\n </Button>\n </div>\n <div className={`cards-walkthrough-panel ${hasSingleFold ? 'active' : 'inactive'}`}>\n <div className=\"panel-header\">\n <strong>Single Fold</strong>\n <span>Very popular. Ideal for small number of photos</span>\n </div>\n <Button\n type=\"link\"\n onClick={() => selectFormat('Single Fold')}\n disabled={!hasSingleFold}\n >\n <img\n src={getExampleCard({\n format: 'Single Fold',\n orientation: orientation || 'Vertical',\n })}\n alt=\"Single fold cards\"\n />\n </Button>\n <Button onClick={() => selectFormat('Single Fold')} disabled={!hasSingleFold}>\n Single Fold Card\n </Button>\n </div>\n <div className={`cards-walkthrough-panel ${hasMultiFold ? 'active' : 'inactive'}`}>\n <div className=\"panel-header\">\n <strong>Multi Fold</strong>\n <span>Say something extra. Great for more photos</span>\n </div>\n <Button\n type=\"link\"\n onClick={() => selectFormat('Multi Fold')}\n disabled={!hasMultiFold}\n >\n <img\n src={getExampleCard({\n format: 'Multi Fold',\n orientation: orientation || 'Vertical',\n })}\n alt=\"Multi fold cards\"\n />\n </Button>\n <Button onClick={() => selectFormat('Multi Fold')} disabled={!hasMultiFold}>\n Multi Fold Card\n </Button>\n </div>\n </div>\n </div>\n <div className=\"button-footer\">\n <Button type=\"bare\" onClick={() => unsetOccasion()}>\n Go Back and Select Another Occasion\n </Button>\n </div>\n </React.Fragment>\n )}\n {occasion && format && !orientation && (\n <React.Fragment>\n <strong>\n Finding a {format} card for {occasion}\n </strong>\n <h1>Choose card orientation.</h1>\n <div className=\"cards-walkthrough-orientation\">\n <div className=\"cards-walkthrough-panel-container\">\n <div className={`cards-walkthrough-panel ${hasVertical ? 'active' : 'inactive'}`}>\n <strong>Vertical</strong>\n <span>Portrait</span>\n <Button\n type=\"link\"\n onClick={() => selectOrientation('Vertical')}\n disabled={!hasVertical}\n >\n <img\n src={getExampleCard({ format, orientation: 'Vertical' })}\n alt=\"Vertical cards\"\n />\n </Button>\n <Button onClick={() => selectOrientation('Vertical')} disabled={!hasVertical}>\n Vertical Card\n </Button>\n </div>\n <div className={`cards-walkthrough-panel ${hasHorizontal ? 'active' : 'inactive'}`}>\n <strong>Horizontal</strong>\n <span>Landscape</span>\n <Button\n type=\"link\"\n onClick={() => selectOrientation('Horizontal')}\n disabled={!hasHorizontal}\n >\n <img\n src={getExampleCard({ format, orientation: 'Horizontal' })}\n alt=\"Horizontal cards\"\n />\n </Button>\n <Button onClick={() => selectOrientation('Horizontal')} disabled={!hasHorizontal}>\n Horizontal Card\n </Button>\n </div>\n <div className={`cards-walkthrough-panel ${hasSquare ? 'active' : 'inactive'}`}>\n <strong>Square</strong>\n <span>Fun and stylish</span>\n <Button\n type=\"link\"\n onClick={() => selectOrientation('Square')}\n disabled={!hasSquare}\n >\n <img src={getExampleCard({ orientation: 'Square' })} alt=\"Square cards\" />\n </Button>\n <Button onClick={() => selectOrientation('Square')} disabled={!hasSquare}>\n Square\n </Button>\n </div>\n </div>\n </div>\n {visibleItems.length > 0 && (\n <div className=\"button-container\">\n <small>No preference?</small>\n <Button type=\"confirm\" onClick={() => selectOrientation('None')}>\n Show me all of them!\n </Button>\n </div>\n )}\n <div className=\"button-footer\">\n <Button\n type=\"bare\"\n onClick={() => {\n setSelectedFilters(\n new Set([...selectedFilters].filter((f) => !f.match(':format')))\n );\n setFormat(undefined);\n }}\n >\n Go Back and Select Another Format\n </Button>\n </div>\n </React.Fragment>\n )}\n </div>\n </div>\n );\n}\n\nexport default ShufflerWalkthrough;\n", "import EditorSidebar from './EditorSidebar';\n\nexport default EditorSidebar;\n", "import React, { useMemo, useEffect, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport SpecialContentSidebar from 'components/shared/SpecialContentSidebar';\n\nimport ChooseRoomModal from 'components/features/WallPreview/ChooseRoomModal';\nimport EditRoomUploadsModal from 'components/features/WallPreview/EditRoomUploadsModal';\nimport WallPreviewTools from 'components/features/WallPreview/WallPreviewTools';\nimport ManageWallPreviewsModal from 'components/features/WallPreview/ManageWallPreviewsModal';\nimport ManageArrangementsModal from 'components/features/Arrangements/ManageArrangementsModal';\nimport CustomArrangementsTools from 'components/features/Arrangements/CustomArrangementsTools';\nimport UnavailableArrangementModal from 'components/features/Arrangements/UnavailableArrangementModal';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { imageFilters } from 'utils/image_util';\nimport { renderModal } from 'utils/modal_util';\n\nimport { prepareRestoreArrangement } from 'thunks/arrangement_thunks';\n\nimport crops from 'domains/crops';\nimport session from 'domains/session';\nimport ui from 'domains/ui';\nimport wallPreviewModule from 'domains/wall_previews';\nimport roomsModule from 'domains/wall_preview_rooms';\nimport activeEditor from 'domains/active_editor';\nimport savedArrangements from 'domains/saved_arrangements';\n\nimport SettingsMenu from './SettingsMenu';\n\nimport type { PickerResponse } from 'filestack-js';\nimport type { WosIconProp } from 'types/common_types';\nimport type { WallPreviewRoom, WallPreviewUserRoom } from 'domains/wall_preview_rooms';\n\nfunction EditorSidebar() {\n const dispatch = useAppDispatch();\n const isLoggedIn = useAppSelector(session.selectors.isLoggedIn);\n const allSavedArrangements = useAppSelector(savedArrangements.selectors.selectAll);\n const activeArrangementId = useAppSelector(savedArrangements.selectors.activeId);\n const wallPreviews = useAppSelector(wallPreviewModule.selectors.selectAll);\n const rooms = useAppSelector(roomsModule.selectors.selectAll);\n const whichWallPreview = useAppSelector(roomsModule.selectors.whichWallPreview);\n const activeSubcatalog = useAppSelector(activeEditor.selectors.subcatalog);\n const activePhoto = useAppSelector(crops.selectors.activeNodePhoto);\n const activeCrop = useAppSelector(crops.selectors.activeCrop);\n const activeSpecialContentSidebarMenu = useAppSelector(ui.selectors.activeSidebarMenu);\n const unavailableArrangement = useAppSelector(savedArrangements.selectors.unavailable);\n const unavailableArrangementIds = useAppSelector(savedArrangements.selectors.unavailableIds);\n const hasMobileNavigation = useAppSelector(ui.selectors.hasMobileNavigation);\n\n const [showChooseRoomModal, setShowChooseRoomModal] = useState(false);\n const [showEditRoomModal, setShowEditRoomModal] = useState(false);\n const [showManageWallPreviewsModal, setShowManageWallPreviewsModal] = useState(false);\n\n const [showUnavailableArrangementModal, setShowUnavailableArrangementModal] = useState(false);\n const [showManageArrangementsModal, setShowManageArrangementsModal] = useState(false);\n\n useEffect(() => {\n if (unavailableArrangement) {\n setShowUnavailableArrangementModal(true);\n }\n }, [unavailableArrangement]);\n\n function loadWallPreviews() {\n dispatch(wallPreviewModule.actions.getAll.pending());\n }\n\n function loadUserRooms() {\n if (isLoggedIn) {\n dispatch(roomsModule.actions.fetchUserRooms.pending());\n }\n }\n\n function loadArrangements() {\n if (isLoggedIn) {\n dispatch(savedArrangements.actions.getAll.pending());\n }\n }\n\n function handleSelectPreview(room: WallPreviewRoom) {\n dispatch(roomsModule.actions.setWhichWallPreview(room));\n setShowChooseRoomModal(false);\n }\n\n function handleManageArrangements() {\n setShowManageArrangementsModal(true);\n }\n\n function handleManageWallPreviews() {\n setShowManageWallPreviewsModal(true);\n }\n\n function handleChangeRoom() {\n setShowChooseRoomModal(true);\n }\n\n function closeEditRoomModal() {\n setShowEditRoomModal(false);\n dispatch(roomsModule.actions.resetEditDrafts());\n }\n\n function handleEditRoom(room: WallPreviewUserRoom) {\n dispatch(roomsModule.actions.createRoomEditDraft(room.id));\n setShowEditRoomModal(true);\n }\n\n function handleFilestackUploadDone(blobs: PickerResponse) {\n const roomUploads = blobs.filesUploaded.map(({ url, filename }) => {\n return { url, filename, wall_size: 120 };\n });\n\n dispatch(roomsModule.actions.createUserRooms.pending(roomUploads));\n setShowEditRoomModal(true);\n }\n\n const arrangementsItems = useMemo(() => {\n return allSavedArrangements.map((arrangement) => {\n const { id, preview_url: previewURL, name } = arrangement;\n const label = unavailableArrangementIds.find((unavailable) => unavailable === id) ? (\n <span>\n {name} <br />\n <span className=\"error-message\">\n <FontAwesomeIcon icon=\"exclamation-circle\" /> Unavailable\n </span>\n </span>\n ) : (\n name\n );\n return {\n id,\n label,\n image: previewURL,\n pendingImage: previewURL === '',\n selected: activeArrangementId === arrangement.id,\n handleSelectItem() {\n dispatch(prepareRestoreArrangement(arrangement));\n },\n };\n });\n }, [dispatch, allSavedArrangements, activeArrangementId, unavailableArrangementIds]);\n\n const roomItems = useMemo(() => {\n return rooms.map((room) => {\n const { id, description, previewSrc } = room;\n return {\n id,\n label: description,\n image: previewSrc,\n selected: whichWallPreview?.id === room.id,\n handleSelectItem() {\n dispatch(roomsModule.actions.setWhichWallPreview(room));\n },\n };\n });\n }, [dispatch, rooms, whichWallPreview]);\n\n const wallPreviewsItems = useMemo(() => {\n return wallPreviews.map((preview) => {\n const { id, url, name } = preview;\n return {\n id,\n image: url || '',\n pendingImage: !url,\n label: name,\n handleSelectItem() {\n window.open(url, '_blank');\n },\n };\n });\n }, [wallPreviews]);\n\n const imageFiltersItems = useMemo(() => {\n if (!activeCrop || !activePhoto) return [];\n\n return imageFilters.map((filter) => {\n const { id: photoId } = activePhoto;\n const { filter: selectedFilter } = activeCrop;\n const { filterType, title, filePathThumb } = filter;\n\n return {\n id: `${photoId}-${filterType}`,\n label: title,\n image: activePhoto[filePathThumb],\n selected: selectedFilter === filterType,\n handleSelectItem() {\n dispatch(crops.actions.filterCrop({ filter, crop: activeCrop }));\n },\n };\n });\n }, [activeCrop, activePhoto, dispatch]);\n\n const topMenuGroup = [\n {\n id: 'arrangements',\n primaryGroup: [\n {\n id: 'arrangements',\n triggerIcon: 'arrangements' as WosIconProp,\n disabled: !isLoggedIn,\n index: 0,\n onOpen: loadArrangements,\n menuProps: {\n title: 'Saved Arrangements',\n items: arrangementsItems,\n handleDone: () => {},\n handleViewManage: () => {\n handleManageArrangements();\n },\n },\n },\n ],\n secondaryGroup: !hasMobileNavigation ? <CustomArrangementsTools /> : null,\n },\n {\n id: 'wall-previews',\n primaryGroup: [\n {\n id: 'rooms',\n triggerIcon: 'wallPreview' as WosIconProp,\n disabled: !!activeSubcatalog && !activeSubcatalog.wall_display,\n onOpen: loadUserRooms,\n index: 0,\n menuProps: {\n title: 'Walls',\n items: roomItems,\n handleDone: () => {},\n handleViewManage: () => {\n handleChangeRoom();\n },\n },\n },\n {\n id: 'saved-wall-previews',\n triggerIcon: 'wallPreviewSaved' as WosIconProp,\n disabled: !isLoggedIn,\n onOpen: loadWallPreviews,\n index: 1,\n menuProps: {\n title: 'Saved Wall Previews',\n items: wallPreviewsItems,\n handleDone: () => {},\n handleViewManage: () => {\n handleManageWallPreviews();\n },\n },\n },\n ],\n secondaryGroup: <WallPreviewTools />,\n },\n {\n id: 'image-filters',\n primaryGroup: [\n {\n id: 'image-filters',\n triggerIcon: 'wand-magic-sparkles' as WosIconProp,\n disabled: !activeCrop,\n onOpen: () => {},\n index: 0,\n menuProps: {\n title: 'Image Filters',\n items: imageFiltersItems,\n handleDone: () => {},\n },\n },\n ],\n },\n ];\n\n const bottomMenuItems = useMemo(() => {\n return [\n {\n id: 'settings-menu',\n el: <SettingsMenu />,\n },\n ];\n }, []);\n\n return (\n <React.Fragment>\n <div className=\"editor-sidebar\">\n <SpecialContentSidebar\n activeMenu={activeSpecialContentSidebarMenu}\n setActiveMenu={(menu) => {\n dispatch(ui.actions.setActiveContentSidebarMenu(menu));\n }}\n containerPadding={hasMobileNavigation ? 0 : 30}\n topMenuGroup={topMenuGroup}\n bottomMenuItems={bottomMenuItems}\n />\n </div>\n\n {showChooseRoomModal &&\n renderModal(\n <ChooseRoomModal\n lastFocusedElementId=\"content-menu-trigger-rooms\"\n onClose={() => setShowChooseRoomModal(false)}\n onSelectPreview={handleSelectPreview}\n onFilestackUploadDone={handleFilestackUploadDone}\n onEditRoom={handleEditRoom}\n />\n )}\n\n {showEditRoomModal &&\n renderModal(\n <EditRoomUploadsModal\n handleChangeRoom={handleChangeRoom}\n lastFocusedElementId=\"content-menu-trigger-rooms\"\n onClose={closeEditRoomModal}\n />\n )}\n\n {showManageWallPreviewsModal &&\n renderModal(\n <ManageWallPreviewsModal onClose={() => setShowManageWallPreviewsModal(false)} />\n )}\n\n {showUnavailableArrangementModal &&\n !!unavailableArrangement &&\n renderModal(\n <UnavailableArrangementModal\n id={unavailableArrangement.id}\n items={unavailableArrangement.items}\n onClose={() => setShowUnavailableArrangementModal(false)}\n />\n )}\n\n {showManageArrangementsModal &&\n renderModal(\n <ManageArrangementsModal onClose={() => setShowManageArrangementsModal(false)} />\n )}\n </React.Fragment>\n );\n}\n\nexport default EditorSidebar;\n", "import SpecialContentSidebar from './SpecialContentSidebar';\n\nexport default SpecialContentSidebar;\n", "import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { keyBy } from 'lodash';\n\nimport Button from 'components/shared/Button';\n\nimport SpecialContentMenu, { SpecialContentMenuProps } from './SpecialContentMenu';\n\nimport type { WosIconProp } from 'types/common_types';\n\nexport type SidebarPrimaryGroup = {\n id: string;\n triggerIcon: WosIconProp;\n disabled: boolean;\n menuProps: Pick<SpecialContentMenuProps, 'title' | 'items' | 'handleDone' | 'handleViewManage'>;\n index: number;\n onOpen: () => void;\n};\n\ntype SidebarGroup = {\n id: string;\n primaryGroup: SidebarPrimaryGroup[];\n secondaryGroup?: React.ReactNode;\n};\n\nexport type SpecialContentSidebarProps = {\n topMenuGroup: SidebarGroup[];\n bottomMenuItems: { id: string; el: React.ReactNode }[];\n activeMenu: string | null;\n setActiveMenu: (id: string | null) => void;\n containerPadding?: number;\n};\n\nlet sidebarAnimationStart: number | null;\nlet openAnimationFrame: number;\nlet closeAnimationFrame: number;\n\nfunction SpecialContentSidebar({\n topMenuGroup,\n bottomMenuItems,\n activeMenu: propActiveMenu,\n setActiveMenu: setPropActiveMenu,\n containerPadding = 0,\n}: SpecialContentSidebarProps) {\n const [activeMenu, setActiveMenu] = useState<string | null>(null);\n const [menuAnimatingIn, setMenuAnimatingIn] = useState(false);\n\n const specialContentMenusById = useMemo(() => {\n const primaryGroups = topMenuGroup.flatMap((group) => group.primaryGroup);\n\n return keyBy([...primaryGroups, ...bottomMenuItems], 'id');\n }, [topMenuGroup, bottomMenuItems]);\n\n const activeSpecialContentMenu = useMemo(() => {\n if (!activeMenu) return null;\n\n const activeGroupIndex = topMenuGroup.findIndex((group) => {\n return group.primaryGroup.some((item) => item.id === activeMenu);\n });\n\n const previousGroupIds = topMenuGroup\n .slice(0, activeGroupIndex)\n .map(({ id }) => `content-menu-group-${id}`);\n\n const item = specialContentMenusById[activeMenu] as SidebarPrimaryGroup;\n\n return (\n <SpecialContentMenu\n {...item.menuProps}\n previousItemIds={previousGroupIds}\n itemIndex={item.index}\n handleCloseMenu={handleCloseMenu}\n containerPadding={containerPadding}\n />\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeMenu, specialContentMenusById, topMenuGroup, containerPadding]);\n\n const manageSidebarOpenAnimation = useCallback((timestamp: number) => {\n if (!sidebarAnimationStart) {\n sidebarAnimationStart = timestamp;\n openAnimationFrame = window.requestAnimationFrame(manageSidebarOpenAnimation);\n } else {\n setMenuAnimatingIn(true);\n sidebarAnimationStart = null;\n }\n }, []);\n\n const handleOpenMenu = useCallback(\n (id: string) => {\n setActiveMenu(id);\n\n if (propActiveMenu !== id) {\n setPropActiveMenu(id);\n }\n\n openAnimationFrame = window.requestAnimationFrame(manageSidebarOpenAnimation);\n },\n [manageSidebarOpenAnimation, propActiveMenu, setPropActiveMenu]\n );\n\n function manageSidebarCloseAnimation(timestamp: number) {\n if (!sidebarAnimationStart) {\n sidebarAnimationStart = timestamp;\n }\n\n const elapsed = timestamp - sidebarAnimationStart;\n\n // Slightly less than the CSS animation\n if (elapsed < 150) {\n closeAnimationFrame = window.requestAnimationFrame(manageSidebarCloseAnimation);\n } else {\n setActiveMenu(null);\n sidebarAnimationStart = null;\n }\n }\n\n function handleCloseMenu() {\n setMenuAnimatingIn(false);\n setPropActiveMenu(null);\n closeAnimationFrame = window.requestAnimationFrame(manageSidebarCloseAnimation);\n }\n\n function buildSidebarGroup(group: SidebarGroup) {\n const { primaryGroup, secondaryGroup, id } = group;\n const primaryItems = primaryGroup.map((primaryItem) => {\n const active = primaryItem.id === activeMenu;\n return (\n <Button\n key={primaryItem.id}\n type=\"icon\"\n size=\"xl\"\n icon={primaryItem.triggerIcon}\n id={`content-menu-trigger-${primaryItem.id}`}\n disabled={primaryItem.disabled}\n a11yText={primaryItem.menuProps.title}\n className={`special-content-menu-trigger ${active ? 'active' : ''}`}\n onClick={() => handleToggleMenu(primaryItem)}\n tooltipProps={{ placement: 'left' }}\n />\n );\n });\n\n return (\n <li key={id} id={`content-menu-group-${id}`}>\n {primaryItems}\n {secondaryGroup && secondaryGroup}\n </li>\n );\n }\n\n function handleToggleMenu(item: SidebarPrimaryGroup) {\n const { id, onOpen } = item;\n\n if (activeMenu === id) {\n handleCloseMenu();\n } else {\n onOpen();\n handleOpenMenu(id);\n }\n }\n\n useEffect(() => {\n function handleOffMenuClick(e: MouseEvent) {\n const sidebar = document.querySelector('.special-content-sidebar');\n const menu = document.querySelector('.special-content-menu');\n const clickedEl = e.target as HTMLElement;\n\n const shouldCloseMenu =\n sidebar && menu && !sidebar.contains(clickedEl) && !menu.contains(clickedEl);\n\n if (shouldCloseMenu) {\n handleCloseMenu();\n }\n }\n\n document.addEventListener('click', handleOffMenuClick);\n\n return function cleanup() {\n document.removeEventListener('click', handleOffMenuClick);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (propActiveMenu && propActiveMenu !== activeMenu) {\n handleOpenMenu(propActiveMenu);\n }\n }, [activeMenu, propActiveMenu, handleOpenMenu]);\n\n // Cancel the animation handling if component is unmounted\n useEffect(() => {\n return function cleanup() {\n window.cancelAnimationFrame(closeAnimationFrame);\n window.cancelAnimationFrame(openAnimationFrame);\n };\n }, []);\n\n return (\n <div\n className={`special-content-sidebar ${menuAnimatingIn ? 'in' : ''}`}\n style={{ paddingTop: containerPadding }}\n >\n <ul className=\"top-items\">{topMenuGroup.map(buildSidebarGroup)}</ul>\n <ul className=\"bottom-items\">\n {bottomMenuItems.map((item) => (\n <li key={item.id}>{item.el}</li>\n ))}\n </ul>\n {activeMenu && activeSpecialContentMenu}\n </div>\n );\n}\n\nexport default SpecialContentSidebar;\n", "import React, { useMemo } from 'react';\n\nimport Button from 'components/shared/Button';\nimport SpecialContentMenuItem from './SpecialContentMenuItem';\n\nimport slug from 'utils/slug';\n\nimport type { SpecialContentMenuItemData } from './SpecialContentMenuItem';\n\nexport type SpecialContentMenuProps = {\n items: SpecialContentMenuItemData[];\n title: string;\n previousItemIds: string[];\n itemIndex: number;\n containerPadding: number;\n handleDone: () => void;\n handleCloseMenu: () => void;\n handleViewManage?: () => void;\n};\n\nfunction SpecialContentMenu({\n previousItemIds,\n itemIndex,\n title,\n containerPadding,\n items,\n handleDone,\n handleCloseMenu,\n handleViewManage,\n}: SpecialContentMenuProps) {\n // Get the sum height of all the previous list items above this one\n // so we can correctly position the menu.\n // Add 44 * itemIndex for the amount of primary buttons above it: special_content_sidebar.scss\n // Add 10 more for the padding on this list item: special_content_sidebar.scss\n // Add amount from props for padding on the whole sidebar: EditorSidebar.js\n const menuStyle = useMemo(() => {\n const previousItems = previousItemIds.map((id) => document.getElementById(id) as HTMLElement);\n\n const previousGroupsOffset = previousItems.reduce((acc, el) => {\n const { height } = el.getBoundingClientRect();\n return acc + height;\n }, 0);\n\n const menuOffset = previousGroupsOffset + itemIndex * 44 + 10 + containerPadding;\n\n return {\n top: `${menuOffset}px`,\n height: `calc(100% - ${menuOffset}px)`,\n };\n }, [previousItemIds, itemIndex, containerPadding]);\n\n const menuItems = useMemo(\n () =>\n items.map((item) => (\n <SpecialContentMenuItem\n key={item.id}\n {...item}\n parent={slug(title)}\n handleCloseMenu={handleCloseMenu}\n />\n )),\n [items, handleCloseMenu]\n );\n\n function onDone() {\n handleCloseMenu();\n handleDone();\n }\n\n function onViewManage() {\n handleCloseMenu();\n handleViewManage && handleViewManage();\n }\n\n return (\n <div className=\"special-content-menu\" style={menuStyle}>\n <div className=\"menu-header\">\n <Button\n className=\"close\"\n type=\"icon\"\n icon=\"times\"\n a11yText=\"Close menu\"\n onClick={handleCloseMenu}\n />\n <h2>{title}</h2>\n </div>\n <div className=\"menu-body\">\n {menuItems.length === 0 && <p>You have no {title.toLowerCase()}</p>}\n {menuItems.length > 0 && <ul aria-label={`list of ${title}`}>{menuItems}</ul>}\n </div>\n <div className=\"menu-footer\">\n <Button onClick={onDone}>DONE</Button>\n {handleViewManage && (\n <Button type=\"bare\" onClick={onViewManage}>\n View / Manage\n </Button>\n )}\n </div>\n </div>\n );\n}\n\nexport default SpecialContentMenu;\n", "import React from 'react';\n\nimport Spinner from 'components/shared/Spinner';\n\nexport type SpecialContentMenuItemData = {\n id: string | number;\n image: string;\n pendingImage?: boolean;\n label: React.ReactNode;\n handleSelectItem: (id: string | number) => void;\n selected?: boolean;\n};\n\nexport type SpecialContentMenuItemProps = SpecialContentMenuItemData & {\n parent: string;\n handleCloseMenu: () => void;\n};\n\nfunction SpecialContentMenuItem({\n id,\n handleCloseMenu,\n parent,\n image,\n pendingImage = false,\n label,\n selected = false,\n handleSelectItem,\n}: SpecialContentMenuItemProps) {\n function onSelectItem() {\n handleCloseMenu();\n handleSelectItem(id);\n }\n\n const labelId = `${parent}-label-${id}`;\n\n return (\n <li className={`special-content-menu-item ${selected ? 'selected' : ''}`}>\n <button\n aria-labelledby={labelId}\n onClick={onSelectItem}\n id={`special-content-menu-item-${id}`}\n >\n {pendingImage && <Spinner size=\"50\" color=\"#252525\" />}\n {!pendingImage && image && <img src={image} alt=\"\" />}\n </button>\n <p id={labelId} className=\"item-label\">\n {label}\n </p>\n </li>\n );\n}\n\nexport default SpecialContentMenuItem;\n", "import React, { useState, useEffect } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { FILESTACK_API_KEY } from 'utils/globals';\nimport { roomIsUserRoom } from 'utils/type_guards';\nimport { renderModal } from 'utils/modal_util';\n\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\nimport NavigationTile from 'components/shared/NavigationTile';\nimport FSPicker from 'components/shared/FSPicker';\n\nimport roomsModule, {\n WallPreviewUserRoom,\n WallPreviewSampleRoom,\n} from 'domains/wall_preview_rooms';\n\nimport session from 'domains/session';\n\nimport type { PickerResponse } from 'filestack-js';\n\ntype ChooseRoomModalProps = {\n lastFocusedElementId: string;\n onFilestackUploadDone: (result: PickerResponse) => void;\n onSelectPreview: (room: WallPreviewUserRoom | WallPreviewSampleRoom) => void;\n onEditRoom: (room: WallPreviewUserRoom) => void;\n onClose: () => void;\n};\n\nconst options = {\n maxFiles: 50,\n maxSize: 1024 * 1024 * 1024, // 1GB\n accept: ['image/jpeg', 'image/png', 'image/tiff'],\n fromSources: ['local_file_system', 'facebook', 'instagram', 'googledrive', 'dropbox'],\n concurrency: 3, // <number> - Max number of concurrent parts uploading (chunks of files, not whole files).\n};\n\nfunction ChooseRoomModal(props: ChooseRoomModalProps) {\n const { lastFocusedElementId, onFilestackUploadDone, onSelectPreview, onEditRoom, onClose } =\n props;\n\n const [showUploadDialog, setShowUploadDialog] = useState(false);\n\n const dispatch = useAppDispatch();\n const isLoggedIn = useAppSelector(session.selectors.isLoggedIn);\n const allRoomData = useAppSelector(roomsModule.selectors.selectAll);\n const userRoomUploads = useAppSelector(roomsModule.selectors.userRooms);\n\n const [roomsFilter, setRoomsFilter] = useState(() => {\n if (userRoomUploads.length > 0) {\n return 'user';\n }\n return 'sample';\n });\n\n function handleDeleteRoom(id: number) {\n dispatch(roomsModule.actions.deleteUserRoom.pending(id));\n }\n\n function handleFilestackUploadDone(blobs: PickerResponse) {\n setShowUploadDialog(false);\n onFilestackUploadDone(blobs);\n }\n\n useEffect(() => {\n if (!isLoggedIn) {\n setRoomsFilter('sample');\n }\n }, [isLoggedIn]);\n\n const roomThumbnails = allRoomData\n .filter((room) => room.type === roomsFilter)\n .map((room) => {\n const menuItems = roomIsUserRoom(room)\n ? [\n {\n label: 'Edit',\n icon: <FontAwesomeIcon icon=\"edit\" />,\n click: () => onEditRoom(room),\n },\n {\n label: 'Delete',\n icon: <FontAwesomeIcon icon=\"trash-alt\" />,\n click: () => handleDeleteRoom(room.id),\n },\n ]\n : [];\n\n return (\n <li key={room.previewSrc}>\n <NavigationTile\n image={room.previewSrc}\n details={`Wall approximately ${room.displaySize}`}\n item={room}\n menuItems={menuItems}\n name={room.description}\n clickHandler={() => onSelectPreview(room)}\n />\n </li>\n );\n });\n\n const primaryButtons = roomsFilter === 'user' && (\n <Button\n type=\"outline\"\n onClick={() => setShowUploadDialog(true)}\n className=\"add-room-button\"\n disabled={!isLoggedIn}\n >\n <FontAwesomeIcon icon=\"cloud-upload-alt\" size=\"lg\" />\n Upload your room\n </Button>\n );\n\n const secondaryButtons = (\n <React.Fragment>\n <Button\n type=\"bare\"\n onClick={() => setRoomsFilter('user')}\n className={roomsFilter === 'user' ? 'active' : ''}\n >\n Your Rooms\n </Button>\n <Button\n type=\"bare\"\n onClick={() => setRoomsFilter('sample')}\n className={`unbutton ${roomsFilter === 'sample' ? 'active' : ''}`}\n >\n Sample Rooms\n </Button>\n </React.Fragment>\n );\n\n return (\n <React.Fragment>\n <Modal\n title=\"Choose Your Room\"\n labelledBy=\"select-wall-preview-modal\"\n modalClass={['choose-room-modal']}\n lastFocusedElementId={lastFocusedElementId}\n onClose={onClose}\n primaryFooterGroup={primaryButtons || null}\n secondaryFooterGroup={secondaryButtons}\n >\n <React.Fragment>\n {!isLoggedIn && roomsFilter === 'user' && (\n <p className=\"modal-message\">Log in to upload photos of your own room</p>\n )}\n </React.Fragment>\n <React.Fragment>\n {roomThumbnails.length === 0 && isLoggedIn && (\n <p className=\"modal-message\">\n Upload a photo of your room or choose a sample room to get started!\n </p>\n )}\n </React.Fragment>\n <ul className=\"modal-list-items\">{roomThumbnails}</ul>\n </Modal>\n\n {showUploadDialog &&\n renderModal(\n <Modal\n onClose={() => setShowUploadDialog(false)}\n lastFocusedElementId=\"upload-photos-trigger\"\n labelledBy=\"upload photos\"\n title=\"Upload Photos\"\n modalClass={['upload-photo-picker']}\n >\n <FSPicker\n apikey={FILESTACK_API_KEY}\n pickerOptions={options}\n onUploadDone={handleFilestackUploadDone}\n />\n </Modal>\n )}\n </React.Fragment>\n );\n}\n\nexport default ChooseRoomModal;\n", "import FSPicker from './FSPicker';\n\nexport default FSPicker;\n", "import React, { useEffect } from 'react';\nimport * as filestack from 'filestack-js';\n\nexport type FSPickerProps = {\n apikey: string;\n pickerOptions: filestack.PickerOptions;\n onUploadDone: (result: filestack.PickerResponse) => void;\n};\n\nfunction FSPicker(props: FSPickerProps) {\n const { apikey, pickerOptions, onUploadDone } = props;\n\n useEffect(() => {\n const client = filestack.init(apikey);\n const picker = client.picker({\n displayMode: filestack.PickerDisplayMode.inline,\n container: '#fs-picker',\n onUploadDone,\n ...pickerOptions,\n });\n\n picker.open();\n\n return () => {\n if (picker) {\n picker.close();\n }\n };\n }, [apikey, pickerOptions, onUploadDone]);\n\n return <div style={{ height: 500 }} id=\"fs-picker\" />;\n}\n\nexport default FSPicker;\n", " \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 52);\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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 __exportStar(m, exports) {\r\n for (var p in m) if (!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", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 { Session } from '../client';\nimport { Hosts } from './../../config';\nimport { ExtensionsMap } from './extensions';\nimport fileType from 'file-type';\nimport * as isutf8 from 'isutf8';\n\n/**\n * Resolve cdn url based on handle type\n *\n * @private\n * @param session session object\n * @param handle file handle (hash, src://alias, url)\n */\nexport const resolveCdnUrl = (session: Session, handle: string): string => {\n const cdnURL = session.urls.cdnUrl;\n\n if (handle && (handle.indexOf('src:') === 0 || handle.indexOf('http') === 0)) {\n if (!session.apikey) {\n throw new Error('Api key is required when storage alias is provided');\n }\n\n // apikey is required for alias or external sources call\n return `${cdnURL}/${session.apikey}`;\n }\n\n return cdnURL;\n};\n\n/**\n * Resolve all urls with provided cnames\n *\n * @private\n * @param urls\n * @param cname\n */\nexport const resolveHost = (urls: Hosts, cname: string): Hosts => {\n if (!cname) {\n return urls;\n }\n\n const hosts = /filestackapi.com|filestackcontent.com/i;\n\n Object.keys(urls).forEach(key => {\n urls[key] = urls[key].replace(hosts, cname);\n });\n\n return urls;\n};\n\n/**\n * Removes empty options from object\n *\n * @private\n * @param obj\n */\nexport const removeEmpty = (obj: any) => {\n const newObj = { ...obj };\n Object.keys(newObj).forEach(k => !newObj[k] && typeof newObj[k] !== 'boolean' && delete newObj[k]);\n return newObj;\n};\n\n/**\n * Returns unique time\n */\nlet last;\nexport const uniqueTime = () => {\n const time = Date.now();\n last = time === last ? time + 1 : time;\n return last;\n};\n\n/**\n * Generates random string with provided length\n *\n * @param len\n */\nexport const uniqueId = (len: number = 10): string => {\n return new Array(len).join().replace(/(.|$)/g, () => ((Math.random() * 36) | 0).toString(36)[Math.random() < 0.5 ? 'toString' : 'toUpperCase']());\n};\n\n/**\n * Check if input is a svg\n *\n * @param {Uint8Array | Buffer} file\n * @returns {string} - mimetype\n */\nexport const getMimetype = (file: Uint8Array | Buffer, name?: string): string => {\n let type = fileType(file);\n\n const excludedMimetypes = ['text/plain', 'application/octet-stream', 'application/x-ms', 'application/x-msi', 'application/zip'];\n\n if (type && excludedMimetypes.indexOf(type.mime) === -1) {\n return type.mime;\n }\n\n if (name && name.indexOf('.') > -1) {\n const mime = extensionToMime(name);\n\n if (mime) {\n return mime;\n }\n }\n\n try {\n if (isutf8(file)) {\n return 'text/plain';\n }\n } catch (e) {\n /* istanbul ignore next */\n console.warn('Additional mimetype checks (text/plain) are currently not supported for browsers');\n }\n // this is only fallback, omit it in coverage\n /* istanbul ignore next */\n\n // if we cant find types by extensions and we have magic bytes fallback to it\n if (type) {\n return type.mime;\n }\n\n return 'application/octet-stream';\n};\n\n/**\n * Change extension to according mimetype using ext=>mimetype map\n *\n * @param ext - string\n * @return string|boolean\n */\nexport const extensionToMime = (ext: string) => {\n if (!ext || ext.length === 0) {\n return;\n }\n\n if (ext.split('/').length === 2) {\n return ext;\n }\n\n if (ext.indexOf('.') > -1) {\n ext = ext.split('.').pop();\n }\n\n ext = ext.toLocaleLowerCase();\n\n const keys = Object.keys(ExtensionsMap);\n const mapLen = keys.length;\n\n for (let i = 0; i < mapLen; i++) {\n if (ExtensionsMap[keys[i]].indexOf(ext) > -1) {\n return keys[i];\n }\n }\n\n return;\n};\n\n/**\n * Sanitizer Options\n */\nexport type SanitizeOptions =\n | boolean\n | {\n exclude?: string[];\n replacement?: string;\n };\n\n/**\n * Sanitize file name\n *\n * @param name\n * @param {bool} options - enable,disable sanitizer, default enabled\n * @param {string} options.replacement - replacement for sanitized chars defaults to \"-\"\n * @param {string[]} options.exclude - array with excluded chars default - ['\\', '{', '}','|', '%', '`', '\"', \"'\", '~', '[', ']', '#', '|', '^', '<', '>']\n */\nexport const sanitizeName = (name: string, options: SanitizeOptions = true): string => {\n if (typeof options === 'boolean' && !options) {\n return name;\n }\n\n let ext;\n\n const replacement = typeof options !== 'boolean' && options.replacement ? options.replacement : '-';\n const exclude = typeof options !== 'boolean' && options.exclude ? options.exclude : ['\\\\', '{', '}', '|', '%', '`', '\"', \"'\", '~', '[', ']', '#', '|', '^', '<', '>'];\n\n if (!name || name.length === 0) {\n return 'undefined';\n }\n\n const fileParts = name.split('.');\n\n if (fileParts.length > 1) {\n ext = fileParts.pop();\n }\n\n return `${fileParts\n .join('.')\n .split('')\n .map(char => (exclude.indexOf(char) > -1 ? replacement : char))\n .join('')}${ext ? '.' + ext : ''}`;\n};\n\n/**\n * Filter object to given fields\n *\n * @param toFilter\n * @param requiredFields\n */\nexport const filterObject = (toFilter, requiredFields: string[]) => {\n if (!requiredFields || requiredFields.length === 0) {\n return toFilter;\n }\n\n if (Object.keys(toFilter).length === 0) {\n return toFilter;\n }\n\n return Object.keys(toFilter)\n .filter(f => requiredFields.indexOf(f) > -1)\n .reduce((obj, key) => ({ ...obj, [key]: toFilter[key] }), {});\n};\n\n/**\n * Deep cleanup object from functions\n *\n * @param obj\n */\nexport const cleanUpCallbacks = (obj: any) => {\n if (!obj || Object.keys(obj).length === 0) {\n return obj;\n }\n\n Object.keys(obj).forEach(k => {\n if (typeof obj[k] === 'function') {\n obj[k] = undefined;\n }\n\n if (obj[k] === Object(obj[k])) {\n obj[k] = cleanUpCallbacks(obj[k]);\n }\n });\n\n return obj;\n};\n\nexport * from './index.node';\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 const ExtensionsMap = {\n 'application/andrew-inset': ['ez'],\n 'application/applixware': ['aw'],\n 'application/atom+xml': ['atom'],\n 'application/atomcat+xml': ['atomcat'],\n 'application/atomsvc+xml': ['atomsvc'],\n 'application/bdoc': ['bdoc'],\n 'application/ccxml+xml': ['ccxml'],\n 'application/cdmi-capability': ['cdmia'],\n 'application/cdmi-container': ['cdmic'],\n 'application/cdmi-domain': ['cdmid'],\n 'application/cdmi-object': ['cdmio'],\n 'application/cdmi-queue': ['cdmiq'],\n 'application/cu-seeme': ['cu'],\n 'application/dash+xml': ['mpd'],\n 'application/davmount+xml': ['davmount'],\n 'application/docbook+xml': ['dbk'],\n 'application/dssc+der': ['dssc'],\n 'application/dssc+xml': ['xdssc'],\n 'application/ecmascript': ['ecma', 'es'],\n 'application/emma+xml': ['emma'],\n 'application/epub+zip': ['epub'],\n 'application/exi': ['exi'],\n 'application/font-tdpfr': ['pfr'],\n 'application/geo+json': ['geojson'],\n 'application/gml+xml': ['gml'],\n 'application/gpx+xml': ['gpx'],\n 'application/gxf': ['gxf'],\n 'application/gzip': ['gz'],\n 'application/hjson': ['hjson'],\n 'application/hyperstudio': ['stk'],\n 'application/inkml+xml': ['ink', 'inkml'],\n 'application/ipfix': ['ipfix'],\n 'application/java-archive': ['jar', 'war', 'ear'],\n 'application/java-serialized-object': ['ser'],\n 'application/java-vm': ['class'],\n 'application/javascript': ['js', 'mjs'],\n 'application/json': ['json', 'map'],\n 'application/json5': ['json5'],\n 'application/jsonml+json': ['jsonml'],\n 'application/ld+json': ['jsonld'],\n 'application/lost+xml': ['lostxml'],\n 'application/mac-binhex40': ['hqx'],\n 'application/mac-compactpro': ['cpt'],\n 'application/mads+xml': ['mads'],\n 'application/manifest+json': ['webmanifest'],\n 'application/marc': ['mrc'],\n 'application/marcxml+xml': ['mrcx'],\n 'application/mathematica': ['ma', 'nb', 'mb'],\n 'application/mathml+xml': ['mathml'],\n 'application/mbox': ['mbox'],\n 'application/mediaservercontrol+xml': ['mscml'],\n 'application/metalink+xml': ['metalink'],\n 'application/metalink4+xml': ['meta4'],\n 'application/mets+xml': ['mets'],\n 'application/mods+xml': ['mods'],\n 'application/mp21': ['m21', 'mp21'],\n 'application/mp4': ['mp4s', 'm4p'],\n 'application/msword': ['doc', 'dot'],\n 'application/mxf': ['mxf'],\n 'application/n-quads': ['nq'],\n 'application/n-triples': ['nt'],\n 'application/octet-stream': [\n 'bin',\n 'dms',\n 'lrf',\n 'mar',\n 'so',\n 'dist',\n 'distz',\n 'pkg',\n 'bpk',\n 'dump',\n 'elc',\n 'deploy',\n 'exe',\n 'dll',\n 'deb',\n 'dmg',\n 'iso',\n 'msp',\n 'buffer',\n ],\n 'application/oda': ['oda'],\n 'application/oebps-package+xml': ['opf'],\n 'application/ogg': ['ogx'],\n 'application/omdoc+xml': ['omdoc'],\n 'application/onenote': ['onetoc', 'onetoc2', 'onetmp', 'onepkg'],\n 'application/oxps': ['oxps'],\n 'application/patch-ops-error+xml': ['xer'],\n 'application/pdf': ['pdf'],\n 'application/pgp-encrypted': ['pgp'],\n 'application/pgp-signature': ['asc', 'sig'],\n 'application/pics-rules': ['prf'],\n 'application/pkcs10': ['p10'],\n 'application/pkcs7-mime': ['p7m', 'p7c'],\n 'application/pkcs7-signature': ['p7s'],\n 'application/pkcs8': ['p8'],\n 'application/pkix-attr-cert': ['ac'],\n 'application/pkix-cert': ['cer'],\n 'application/pkix-crl': ['crl'],\n 'application/pkix-pkipath': ['pkipath'],\n 'application/pkixcmp': ['pki'],\n 'application/pls+xml': ['pls'],\n 'application/postscript': ['ai', 'eps', 'ps'],\n 'application/pskc+xml': ['pskcxml'],\n 'application/raml+yaml': ['raml'],\n 'application/rdf+xml': ['rdf', 'owl'],\n 'application/reginfo+xml': ['rif'],\n 'application/relax-ng-compact-syntax': ['rnc'],\n 'application/resource-lists+xml': ['rl'],\n 'application/resource-lists-diff+xml': ['rld'],\n 'application/rls-services+xml': ['rs'],\n 'application/rpki-ghostbusters': ['gbr'],\n 'application/rpki-manifest': ['mft'],\n 'application/rpki-roa': ['roa'],\n 'application/rsd+xml': ['rsd'],\n 'application/rss+xml': ['rss'],\n 'application/rtf': ['rtf'],\n 'application/sbml+xml': ['sbml'],\n 'application/scvp-cv-request': ['scq'],\n 'application/scvp-cv-response': ['scs'],\n 'application/scvp-vp-request': ['spq'],\n 'application/scvp-vp-response': ['spp'],\n 'application/sdp': ['sdp'],\n 'application/set-payment-initiation': ['setpay'],\n 'application/set-registration-initiation': ['setreg'],\n 'application/shf+xml': ['shf'],\n 'application/sieve': ['siv', 'sieve'],\n 'application/smil+xml': ['smi', 'smil'],\n 'application/sparql-query': ['rq'],\n 'application/sparql-results+xml': ['srx'],\n 'application/srgs': ['gram'],\n 'application/srgs+xml': ['grxml'],\n 'application/sru+xml': ['sru'],\n 'application/ssdl+xml': ['ssdl'],\n 'application/ssml+xml': ['ssml'],\n 'application/tei+xml': ['tei', 'teicorpus'],\n 'application/thraud+xml': ['tfi'],\n 'application/timestamped-data': ['tsd'],\n 'application/voicexml+xml': ['vxml'],\n 'application/wasm': ['wasm'],\n 'application/widget': ['wgt'],\n 'application/winhlp': ['hlp'],\n 'application/wsdl+xml': ['wsdl'],\n 'application/wspolicy+xml': ['wspolicy'],\n 'application/xaml+xml': ['xaml'],\n 'application/xcap-diff+xml': ['xdf'],\n 'application/xenc+xml': ['xenc'],\n 'application/xhtml+xml': ['xhtml', 'xht'],\n 'application/xml': ['xml', 'xsl', 'xsd', 'rng'],\n 'application/xml-dtd': ['dtd'],\n 'application/xop+xml': ['xop'],\n 'application/xproc+xml': ['xpl'],\n 'application/xslt+xml': ['xslt'],\n 'application/xspf+xml': ['xspf'],\n 'application/xv+xml': ['mxml', 'xhvml', 'xvml', 'xvm'],\n 'application/yang': ['yang'],\n 'application/yin+xml': ['yin'],\n 'application/zip': ['zip'],\n 'audio/3gpp': ['*3gpp'],\n 'audio/adpcm': ['adp'],\n 'audio/basic': ['au', 'snd'],\n 'audio/midi': ['mid', 'midi', 'kar', 'rmi'],\n 'audio/mp3': ['*mp3'],\n 'audio/mp4': ['m4a', 'mp4a'],\n 'audio/mpeg': ['mpga', 'mp2', 'mp2a', 'mp3', 'm2a', 'm3a'],\n 'audio/ogg': ['oga', 'ogg', 'spx'],\n 'audio/s3m': ['s3m'],\n 'audio/silk': ['sil'],\n 'audio/wav': ['wav'],\n 'audio/wave': ['*wav'],\n 'audio/webm': ['weba'],\n 'audio/xm': ['xm'],\n 'font/collection': ['ttc'],\n 'font/otf': ['otf'],\n 'font/ttf': ['ttf'],\n 'font/woff': ['woff'],\n 'font/woff2': ['woff2'],\n 'image/aces': ['exr'],\n 'image/apng': ['apng'],\n 'image/bmp': ['bmp'],\n 'image/cgm': ['cgm'],\n 'image/dicom-rle': ['drle'],\n 'image/emf': ['emf'],\n 'image/fits': ['fits'],\n 'image/g3fax': ['g3'],\n 'image/gif': ['gif'],\n 'image/heic': ['heic'],\n 'image/heic-sequence': ['heics'],\n 'image/heif': ['heif'],\n 'image/heif-sequence': ['heifs'],\n 'image/ief': ['ief'],\n 'image/jls': ['jls'],\n 'image/jp2': ['jp2', 'jpg2'],\n 'image/jpeg': ['jpeg', 'jpg', 'jpe'],\n 'image/jpm': ['jpm'],\n 'image/jpx': ['jpx', 'jpf'],\n 'image/jxr': ['jxr'],\n 'image/ktx': ['ktx'],\n 'image/png': ['png'],\n 'image/sgi': ['sgi'],\n 'image/svg+xml': ['svg', 'svgz'],\n 'image/t38': ['t38'],\n 'image/tiff': ['tif', 'tiff'],\n 'image/tiff-fx': ['tfx'],\n 'image/webp': ['webp'],\n 'image/wmf': ['wmf'],\n 'message/disposition-notification': ['disposition-notification'],\n 'message/global': ['u8msg'],\n 'message/global-delivery-status': ['u8dsn'],\n 'message/global-disposition-notification': ['u8mdn'],\n 'message/global-headers': ['u8hdr'],\n 'message/rfc822': ['eml', 'mime'],\n 'model/3mf': ['3mf'],\n 'model/gltf+json': ['gltf'],\n 'model/gltf-binary': ['glb'],\n 'model/iges': ['igs', 'iges'],\n 'model/mesh': ['msh', 'mesh', 'silo'],\n 'model/stl': ['stl'],\n 'model/vrml': ['wrl', 'vrml'],\n 'model/x3d+binary': ['*x3db', 'x3dbz'],\n 'model/x3d+fastinfoset': ['x3db'],\n 'model/x3d+vrml': ['*x3dv', 'x3dvz'],\n 'model/x3d+xml': ['x3d', 'x3dz'],\n 'model/x3d-vrml': ['x3dv'],\n 'text/cache-manifest': ['appcache', 'manifest'],\n 'text/calendar': ['ics', 'ifb'],\n 'text/coffeescript': ['coffee', 'litcoffee'],\n 'text/css': ['css'],\n 'text/csv': ['csv'],\n 'text/html': ['html', 'htm', 'shtml'],\n 'text/jade': ['jade'],\n 'text/jsx': ['jsx'],\n 'text/less': ['less'],\n 'text/markdown': ['markdown', 'md'],\n 'text/mathml': ['mml'],\n 'text/mdx': ['mdx'],\n 'text/n3': ['n3'],\n 'text/plain': ['txt', 'text', 'conf', 'def', 'list', 'log', 'in', 'ini'],\n 'text/richtext': ['rtx'],\n 'application/font-ttf': 'ttf',\n 'application/vnd.ms-fontobject': 'eot',\n 'application/font-otf': 'otf',\n 'text/rtf': ['*rtf'],\n 'text/sgml': ['sgml', 'sgm'],\n 'text/shex': ['shex'],\n 'text/slim': ['slim', 'slm'],\n 'text/stylus': ['stylus', 'styl'],\n 'text/tab-separated-values': ['tsv'],\n 'text/troff': ['t', 'tr', 'roff', 'man', 'me', 'ms'],\n 'text/turtle': ['ttl'],\n 'text/uri-list': ['uri', 'uris', 'urls'],\n 'text/vcard': ['vcard', 'vcr'],\n 'text/vtt': ['vtt'],\n 'text/xml': ['*xml'],\n 'text/yaml': ['yaml', 'yml'],\n 'video/3gpp': ['3gp', '3gpp'],\n 'video/3gpp2': ['3g2'],\n 'video/h261': ['h261'],\n 'video/h263': ['h263'],\n 'video/h264': ['h264'],\n 'video/jpeg': ['jpgv'],\n 'video/jpm': ['*jpm', 'jpgm'],\n 'video/mj2': ['mj2', 'mjp2'],\n 'video/mp2t': ['ts'],\n 'video/mp4': ['mp4', 'mp4v', 'mpg4'],\n 'video/mpeg': ['mpeg', 'mpg', 'mpe', 'm1v', 'm2v'],\n 'video/ogg': ['ogv'],\n 'video/quicktime': ['qt', 'mov'],\n 'video/webm': ['webm'],\n 'application/prs.cww': ['cww'],\n 'application/vnd.3gpp.pic-bw-large': ['plb'],\n 'application/vnd.3gpp.pic-bw-small': ['psb'],\n 'application/vnd.3gpp.pic-bw-var': ['pvb'],\n 'application/vnd.3gpp2.tcap': ['tcap'],\n 'application/vnd.3m.post-it-notes': ['pwn'],\n 'application/vnd.accpac.simply.aso': ['aso'],\n 'application/vnd.accpac.simply.imp': ['imp'],\n 'application/vnd.acucobol': ['acu'],\n 'application/vnd.acucorp': ['atc', 'acutc'],\n 'application/vnd.adobe.air-application-installer-package+zip': ['air'],\n 'application/vnd.adobe.formscentral.fcdt': ['fcdt'],\n 'application/vnd.adobe.fxp': ['fxp', 'fxpl'],\n 'application/vnd.adobe.xdp+xml': ['xdp'],\n 'application/vnd.adobe.xfdf': ['xfdf'],\n 'application/vnd.ahead.space': ['ahead'],\n 'application/vnd.airzip.filesecure.azf': ['azf'],\n 'application/vnd.airzip.filesecure.azs': ['azs'],\n 'application/vnd.amazon.ebook': ['azw'],\n 'application/vnd.americandynamics.acc': ['acc'],\n 'application/vnd.amiga.ami': ['ami'],\n 'application/vnd.android.package-archive': ['apk'],\n 'application/vnd.anser-web-certificate-issue-initiation': ['cii'],\n 'application/vnd.anser-web-funds-transfer-initiation': ['fti'],\n 'application/vnd.antix.game-component': ['atx'],\n 'application/vnd.apple.installer+xml': ['mpkg'],\n 'application/vnd.apple.keynote': ['keynote', 'key'],\n 'application/vnd.apple.mpegurl': ['m3u8'],\n 'application/vnd.apple.numbers': ['numbers'],\n 'application/vnd.apple.pages': ['pages'],\n 'application/vnd.apple.key': ['key'],\n 'application/vnd.apple.pkpass': ['pkpass'],\n 'application/vnd.aristanetworks.swi': ['swi'],\n 'application/vnd.astraea-software.iota': ['iota'],\n 'application/vnd.audiograph': ['aep'],\n 'application/vnd.blueice.multipass': ['mpm'],\n 'application/vnd.bmi': ['bmi'],\n 'application/vnd.businessobjects': ['rep'],\n 'application/vnd.chemdraw+xml': ['cdxml'],\n 'application/vnd.chipnuts.karaoke-mmd': ['mmd'],\n 'application/vnd.cinderella': ['cdy'],\n 'application/vnd.citationstyles.style+xml': ['csl'],\n 'application/vnd.claymore': ['cla'],\n 'application/vnd.cloanto.rp9': ['rp9'],\n 'application/vnd.clonk.c4group': ['c4g', 'c4d', 'c4f', 'c4p', 'c4u'],\n 'application/vnd.cluetrust.cartomobile-config': ['c11amc'],\n 'application/vnd.cluetrust.cartomobile-config-pkg': ['c11amz'],\n 'application/vnd.commonspace': ['csp'],\n 'application/vnd.contact.cmsg': ['cdbcmsg'],\n 'application/vnd.cosmocaller': ['cmc'],\n 'application/vnd.crick.clicker': ['clkx'],\n 'application/vnd.crick.clicker.keyboard': ['clkk'],\n 'application/vnd.crick.clicker.palette': ['clkp'],\n 'application/vnd.crick.clicker.template': ['clkt'],\n 'application/vnd.crick.clicker.wordbank': ['clkw'],\n 'application/vnd.criticaltools.wbs+xml': ['wbs'],\n 'application/vnd.ctc-posml': ['pml'],\n 'application/vnd.cups-ppd': ['ppd'],\n 'application/vnd.curl.car': ['car'],\n 'application/vnd.curl.pcurl': ['pcurl'],\n 'application/vnd.dart': ['dart'],\n 'application/vnd.data-vision.rdz': ['rdz'],\n 'application/vnd.dece.data': ['uvf', 'uvvf', 'uvd', 'uvvd'],\n 'application/vnd.dece.ttml+xml': ['uvt', 'uvvt'],\n 'application/vnd.dece.unspecified': ['uvx', 'uvvx'],\n 'application/vnd.dece.zip': ['uvz', 'uvvz'],\n 'application/vnd.denovo.fcselayout-link': ['fe_launch'],\n 'application/vnd.dna': ['dna'],\n 'application/vnd.dolby.mlp': ['mlp'],\n 'application/vnd.dpgraph': ['dpg'],\n 'application/vnd.dreamfactory': ['dfac'],\n 'application/vnd.ds-keypoint': ['kpxx'],\n 'application/vnd.dvb.ait': ['ait'],\n 'application/vnd.dvb.service': ['svc'],\n 'application/vnd.dynageo': ['geo'],\n 'application/vnd.ecowin.chart': ['mag'],\n 'application/vnd.enliven': ['nml'],\n 'application/vnd.epson.esf': ['esf'],\n 'application/vnd.epson.msf': ['msf'],\n 'application/vnd.epson.quickanime': ['qam'],\n 'application/vnd.epson.salt': ['slt'],\n 'application/vnd.epson.ssf': ['ssf'],\n 'application/vnd.eszigno3+xml': ['es3', 'et3'],\n 'application/vnd.ezpix-album': ['ez2'],\n 'application/vnd.ezpix-package': ['ez3'],\n 'application/vnd.fdf': ['fdf'],\n 'application/vnd.fdsn.mseed': ['mseed'],\n 'application/vnd.fdsn.seed': ['seed', 'dataless'],\n 'application/vnd.flographit': ['gph'],\n 'application/vnd.fluxtime.clip': ['ftc'],\n 'application/vnd.framemaker': ['fm', 'frame', 'maker', 'book'],\n 'application/vnd.frogans.fnc': ['fnc'],\n 'application/vnd.frogans.ltf': ['ltf'],\n 'application/vnd.fsc.weblaunch': ['fsc'],\n 'application/vnd.fujitsu.oasys': ['oas'],\n 'application/vnd.fujitsu.oasys2': ['oa2'],\n 'application/vnd.fujitsu.oasys3': ['oa3'],\n 'application/vnd.fujitsu.oasysgp': ['fg5'],\n 'application/vnd.fujitsu.oasysprs': ['bh2'],\n 'application/vnd.fujixerox.ddd': ['ddd'],\n 'application/vnd.fujixerox.docuworks': ['xdw'],\n 'application/vnd.fujixerox.docuworks.binder': ['xbd'],\n 'application/vnd.fuzzysheet': ['fzs'],\n 'application/vnd.genomatix.tuxedo': ['txd'],\n 'application/vnd.geogebra.file': ['ggb'],\n 'application/vnd.geogebra.tool': ['ggt'],\n 'application/vnd.geometry-explorer': ['gex', 'gre'],\n 'application/vnd.geonext': ['gxt'],\n 'application/vnd.geoplan': ['g2w'],\n 'application/vnd.geospace': ['g3w'],\n 'application/vnd.gmx': ['gmx'],\n 'application/vnd.google-apps.document': ['gdoc'],\n 'application/vnd.google-apps.presentation': ['gslides'],\n 'application/vnd.google-apps.spreadsheet': ['gsheet'],\n 'application/vnd.google-earth.kml+xml': ['kml'],\n 'application/vnd.google-earth.kmz': ['kmz'],\n 'application/vnd.grafeq': ['gqf', 'gqs'],\n 'application/vnd.groove-account': ['gac'],\n 'application/vnd.groove-help': ['ghf'],\n 'application/vnd.groove-identity-message': ['gim'],\n 'application/vnd.groove-injector': ['grv'],\n 'application/vnd.groove-tool-message': ['gtm'],\n 'application/vnd.groove-tool-template': ['tpl'],\n 'application/vnd.groove-vcard': ['vcg'],\n 'application/vnd.hal+xml': ['hal'],\n 'application/vnd.handheld-entertainment+xml': ['zmm'],\n 'application/vnd.hbci': ['hbci'],\n 'application/vnd.hhe.lesson-player': ['les'],\n 'application/vnd.hp-hpgl': ['hpgl'],\n 'application/vnd.hp-hpid': ['hpid'],\n 'application/vnd.hp-hps': ['hps'],\n 'application/vnd.hp-jlyt': ['jlt'],\n 'application/vnd.hp-pcl': ['pcl'],\n 'application/vnd.hp-pclxl': ['pclxl'],\n 'application/vnd.hydrostatix.sof-data': ['sfd-hdstx'],\n 'application/vnd.ibm.minipay': ['mpy'],\n 'application/vnd.ibm.modcap': ['afp', 'listafp', 'list3820'],\n 'application/vnd.ibm.rights-management': ['irm'],\n 'application/vnd.ibm.secure-container': ['sc'],\n 'application/vnd.iccprofile': ['icc', 'icm'],\n 'application/vnd.igloader': ['igl'],\n 'application/vnd.immervision-ivp': ['ivp'],\n 'application/vnd.immervision-ivu': ['ivu'],\n 'application/vnd.insors.igm': ['igm'],\n 'application/vnd.intercon.formnet': ['xpw', 'xpx'],\n 'application/vnd.intergeo': ['i2g'],\n 'application/vnd.intu.qbo': ['qbo'],\n 'application/vnd.intu.qfx': ['qfx'],\n 'application/vnd.ipunplugged.rcprofile': ['rcprofile'],\n 'application/vnd.irepository.package+xml': ['irp'],\n 'application/vnd.is-xpr': ['xpr'],\n 'application/vnd.isac.fcs': ['fcs'],\n 'application/vnd.jam': ['jam'],\n 'application/vnd.jcp.javame.midlet-rms': ['rms'],\n 'application/vnd.jisp': ['jisp'],\n 'application/vnd.joost.joda-archive': ['joda'],\n 'application/vnd.kahootz': ['ktz', 'ktr'],\n 'application/vnd.kde.karbon': ['karbon'],\n 'application/vnd.kde.kchart': ['chrt'],\n 'application/vnd.kde.kformula': ['kfo'],\n 'application/vnd.kde.kivio': ['flw'],\n 'application/vnd.kde.kontour': ['kon'],\n 'application/vnd.kde.kpresenter': ['kpr', 'kpt'],\n 'application/vnd.kde.kspread': ['ksp'],\n 'application/vnd.kde.kword': ['kwd', 'kwt'],\n 'application/vnd.kenameaapp': ['htke'],\n 'application/vnd.kidspiration': ['kia'],\n 'application/vnd.kinar': ['kne', 'knp'],\n 'application/vnd.koan': ['skp', 'skd', 'skt', 'skm'],\n 'application/vnd.kodak-descriptor': ['sse'],\n 'application/vnd.las.las+xml': ['lasxml'],\n 'application/vnd.llamagraphics.life-balance.desktop': ['lbd'],\n 'application/vnd.llamagraphics.life-balance.exchange+xml': ['lbe'],\n 'application/vnd.lotus-1-2-3': ['123'],\n 'application/vnd.lotus-approach': ['apr'],\n 'application/vnd.lotus-freelance': ['pre'],\n 'application/vnd.lotus-notes': ['nsf'],\n 'application/vnd.lotus-organizer': ['org'],\n 'application/vnd.lotus-screencam': ['scm'],\n 'application/vnd.lotus-wordpro': ['lwp'],\n 'application/vnd.macports.portpkg': ['portpkg'],\n 'application/vnd.mcd': ['mcd'],\n 'application/vnd.medcalcdata': ['mc1'],\n 'application/vnd.mediastation.cdkey': ['cdkey'],\n 'application/vnd.mfer': ['mwf'],\n 'application/vnd.mfmp': ['mfm'],\n 'application/vnd.micrografx.flo': ['flo'],\n 'application/vnd.micrografx.igx': ['igx'],\n 'application/vnd.mif': ['mif'],\n 'application/vnd.mobius.daf': ['daf'],\n 'application/vnd.mobius.dis': ['dis'],\n 'application/vnd.mobius.mbk': ['mbk'],\n 'application/vnd.mobius.mqy': ['mqy'],\n 'application/vnd.mobius.msl': ['msl'],\n 'application/vnd.mobius.plc': ['plc'],\n 'application/vnd.mobius.txf': ['txf'],\n 'application/vnd.mophun.application': ['mpn'],\n 'application/vnd.mophun.certificate': ['mpc'],\n 'application/vnd.mozilla.xul+xml': ['xul'],\n 'application/vnd.ms-artgalry': ['cil'],\n 'application/vnd.ms-cab-compressed': ['cab'],\n 'application/vnd.ms-excel': ['xls', 'xlm', 'xla', 'xlc', 'xlt', 'xlw'],\n 'application/vnd.ms-excel.addin.macroenabled.12': ['xlam'],\n 'application/vnd.ms-excel.sheet.binary.macroenabled.12': ['xlsb'],\n 'application/vnd.ms-excel.sheet.macroenabled.12': ['xlsm'],\n 'application/vnd.ms-excel.template.macroenabled.12': ['xltm'],\n 'application/vnd.ms-htmlhelp': ['chm'],\n 'application/vnd.ms-ims': ['ims'],\n 'application/vnd.ms-lrm': ['lrm'],\n 'application/vnd.ms-officetheme': ['thmx'],\n 'application/vnd.ms-outlook': ['msg'],\n 'application/vnd.ms-pki.seccat': ['cat'],\n 'application/vnd.ms-pki.stl': ['*stl'],\n 'application/vnd.ms-powerpoint': ['ppt', 'pps', 'pot'],\n 'application/vnd.ms-powerpoint.addin.macroenabled.12': ['ppam'],\n 'application/vnd.ms-powerpoint.presentation.macroenabled.12': ['pptm'],\n 'application/vnd.ms-powerpoint.slide.macroenabled.12': ['sldm'],\n 'application/vnd.ms-powerpoint.slideshow.macroenabled.12': ['ppsm'],\n 'application/vnd.ms-powerpoint.template.macroenabled.12': ['potm'],\n 'application/vnd.ms-project': ['mpp', 'mpt'],\n 'application/vnd.ms-word.document.macroenabled.12': ['docm'],\n 'application/vnd.ms-word.template.macroenabled.12': ['dotm'],\n 'application/vnd.ms-works': ['wps', 'wks', 'wcm', 'wdb'],\n 'application/vnd.ms-wpl': ['wpl'],\n 'application/vnd.ms-xpsdocument': ['xps'],\n 'application/vnd.mseq': ['mseq'],\n 'application/vnd.musician': ['mus'],\n 'application/vnd.muvee.style': ['msty'],\n 'application/vnd.mynfc': ['taglet'],\n 'application/vnd.neurolanguage.nlu': ['nlu'],\n 'application/vnd.nitf': ['ntf', 'nitf'],\n 'application/vnd.noblenet-directory': ['nnd'],\n 'application/vnd.noblenet-sealer': ['nns'],\n 'application/vnd.noblenet-web': ['nnw'],\n 'application/vnd.nokia.n-gage.data': ['ngdat'],\n 'application/vnd.nokia.n-gage.symbian.install': ['n-gage'],\n 'application/vnd.nokia.radio-preset': ['rpst'],\n 'application/vnd.nokia.radio-presets': ['rpss'],\n 'application/vnd.novadigm.edm': ['edm'],\n 'application/vnd.novadigm.edx': ['edx'],\n 'application/vnd.novadigm.ext': ['ext'],\n 'application/vnd.oasis.opendocument.chart': ['odc'],\n 'application/vnd.oasis.opendocument.chart-template': ['otc'],\n 'application/vnd.oasis.opendocument.database': ['odb'],\n 'application/vnd.oasis.opendocument.formula': ['odf'],\n 'application/vnd.oasis.opendocument.formula-template': ['odft'],\n 'application/vnd.oasis.opendocument.graphics': ['odg'],\n 'application/vnd.oasis.opendocument.graphics-template': ['otg'],\n 'application/vnd.oasis.opendocument.image': ['odi'],\n 'application/vnd.oasis.opendocument.image-template': ['oti'],\n 'application/vnd.oasis.opendocument.presentation': ['odp'],\n 'application/vnd.oasis.opendocument.presentation-template': ['otp'],\n 'application/vnd.oasis.opendocument.spreadsheet': ['ods'],\n 'application/vnd.oasis.opendocument.spreadsheet-template': ['ots'],\n 'application/vnd.oasis.opendocument.text': ['odt'],\n 'application/vnd.oasis.opendocument.text-master': ['odm'],\n 'application/vnd.oasis.opendocument.text-template': ['ott'],\n 'application/vnd.oasis.opendocument.text-web': ['oth'],\n 'application/vnd.olpc-sugar': ['xo'],\n 'application/vnd.oma.dd2+xml': ['dd2'],\n 'application/vnd.openofficeorg.extension': ['oxt'],\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': ['pptx'],\n 'application/vnd.openxmlformats-officedocument.presentationml.slide': ['sldx'],\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': ['ppsx'],\n 'application/vnd.openxmlformats-officedocument.presentationml.template': ['potx'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['xlsx'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template': ['xltx'],\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['docx'],\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': ['dotx'],\n 'application/vnd.osgeo.mapguide.package': ['mgp'],\n 'application/vnd.osgi.dp': ['dp'],\n 'application/vnd.osgi.subsystem': ['esa'],\n 'application/vnd.palm': ['pdb', 'pqa', 'oprc'],\n 'application/vnd.pawaafile': ['paw'],\n 'application/vnd.pg.format': ['str'],\n 'application/vnd.pg.osasli': ['ei6'],\n 'application/vnd.picsel': ['efif'],\n 'application/vnd.pmi.widget': ['wg'],\n 'application/vnd.pocketlearn': ['plf'],\n 'application/vnd.powerbuilder6': ['pbd'],\n 'application/vnd.previewsystems.box': ['box'],\n 'application/vnd.proteus.magazine': ['mgz'],\n 'application/vnd.publishare-delta-tree': ['qps'],\n 'application/vnd.pvi.ptid1': ['ptid'],\n 'application/vnd.quark.quarkxpress': ['qxd', 'qxt', 'qwd', 'qwt', 'qxl', 'qxb'],\n 'application/vnd.realvnc.bed': ['bed'],\n 'application/vnd.recordare.musicxml': ['mxl'],\n 'application/vnd.recordare.musicxml+xml': ['musicxml'],\n 'application/vnd.rig.cryptonote': ['cryptonote'],\n 'application/vnd.rim.cod': ['cod'],\n 'application/vnd.rn-realmedia': ['rm'],\n 'application/vnd.rn-realmedia-vbr': ['rmvb'],\n 'application/vnd.route66.link66+xml': ['link66'],\n 'application/vnd.sailingtracker.track': ['st'],\n 'application/vnd.seemail': ['see'],\n 'application/vnd.sema': ['sema'],\n 'application/vnd.semd': ['semd'],\n 'application/vnd.semf': ['semf'],\n 'application/vnd.shana.informed.formdata': ['ifm'],\n 'application/vnd.shana.informed.formtemplate': ['itp'],\n 'application/vnd.shana.informed.interchange': ['iif'],\n 'application/vnd.shana.informed.package': ['ipk'],\n 'application/vnd.simtech-mindmapper': ['twd', 'twds'],\n 'application/vnd.smaf': ['mmf'],\n 'application/vnd.smart.teacher': ['teacher'],\n 'application/vnd.solent.sdkm+xml': ['sdkm', 'sdkd'],\n 'application/vnd.spotfire.dxp': ['dxp'],\n 'application/vnd.spotfire.sfs': ['sfs'],\n 'application/vnd.stardivision.calc': ['sdc'],\n 'application/vnd.stardivision.draw': ['sda'],\n 'application/vnd.stardivision.impress': ['sdd'],\n 'application/vnd.stardivision.math': ['smf'],\n 'application/vnd.stardivision.writer': ['sdw', 'vor'],\n 'application/vnd.stardivision.writer-global': ['sgl'],\n 'application/vnd.stepmania.package': ['smzip'],\n 'application/vnd.stepmania.stepchart': ['sm'],\n 'application/vnd.sun.wadl+xml': ['wadl'],\n 'application/vnd.sun.xml.calc': ['sxc'],\n 'application/vnd.sun.xml.calc.template': ['stc'],\n 'application/vnd.sun.xml.draw': ['sxd'],\n 'application/vnd.sun.xml.draw.template': ['std'],\n 'application/vnd.sun.xml.impress': ['sxi'],\n 'application/vnd.sun.xml.impress.template': ['sti'],\n 'application/vnd.sun.xml.math': ['sxm'],\n 'application/vnd.sun.xml.writer': ['sxw'],\n 'application/vnd.sun.xml.writer.global': ['sxg'],\n 'application/vnd.sun.xml.writer.template': ['stw'],\n 'application/vnd.sus-calendar': ['sus', 'susp'],\n 'application/vnd.svd': ['svd'],\n 'application/vnd.symbian.install': ['sis', 'sisx'],\n 'application/vnd.syncml+xml': ['xsm'],\n 'application/vnd.syncml.dm+wbxml': ['bdm'],\n 'application/vnd.syncml.dm+xml': ['xdm'],\n 'application/vnd.tao.intent-module-archive': ['tao'],\n 'application/vnd.tcpdump.pcap': ['pcap', 'cap', 'dmp'],\n 'application/vnd.tmobile-livetv': ['tmo'],\n 'application/vnd.trid.tpt': ['tpt'],\n 'application/vnd.triscape.mxs': ['mxs'],\n 'application/vnd.trueapp': ['tra'],\n 'application/vnd.ufdl': ['ufd', 'ufdl'],\n 'application/vnd.uiq.theme': ['utz'],\n 'application/vnd.umajin': ['umj'],\n 'application/vnd.unity': ['unityweb'],\n 'application/vnd.uoml+xml': ['uoml'],\n 'application/vnd.vcx': ['vcx'],\n 'application/vnd.visio': ['vsd', 'vst', 'vss', 'vsw'],\n 'application/vnd.visionary': ['vis'],\n 'application/vnd.vsf': ['vsf'],\n 'application/vnd.wap.wbxml': ['wbxml'],\n 'application/vnd.wap.wmlc': ['wmlc'],\n 'application/vnd.wap.wmlscriptc': ['wmlsc'],\n 'application/vnd.webturbo': ['wtb'],\n 'application/vnd.wolfram.player': ['nbp'],\n 'application/vnd.wordperfect': ['wpd'],\n 'application/vnd.wqd': ['wqd'],\n 'application/vnd.wt.stf': ['stf'],\n 'application/vnd.xara': ['xar'],\n 'application/vnd.xfdl': ['xfdl'],\n 'application/vnd.yamaha.hv-dic': ['hvd'],\n 'application/vnd.yamaha.hv-script': ['hvs'],\n 'application/vnd.yamaha.hv-voice': ['hvp'],\n 'application/vnd.yamaha.openscoreformat': ['osf'],\n 'application/vnd.yamaha.openscoreformat.osfpvg+xml': ['osfpvg'],\n 'application/vnd.yamaha.smaf-audio': ['saf'],\n 'application/vnd.yamaha.smaf-phrase': ['spf'],\n 'application/vnd.yellowriver-custom-menu': ['cmp'],\n 'application/vnd.zul': ['zir', 'zirz'],\n 'application/vnd.zzazz.deck+xml': ['zaz'],\n 'application/x-7z-compressed': ['7z'],\n 'application/x-abiword': ['abw'],\n 'application/x-ace-compressed': ['ace'],\n 'application/x-apple-diskimage': ['*dmg'],\n 'application/x-arj': ['arj'],\n 'application/x-authorware-bin': ['aab', 'x32', 'u32', 'vox'],\n 'application/x-authorware-map': ['aam'],\n 'application/x-authorware-seg': ['aas'],\n 'application/x-bcpio': ['bcpio'],\n 'application/x-bdoc': ['*bdoc'],\n 'application/x-bittorrent': ['torrent'],\n 'application/x-blorb': ['blb', 'blorb'],\n 'application/x-bzip': ['bz'],\n 'application/x-bzip2': ['bz2', 'boz'],\n 'application/x-cbr': ['cbr', 'cba', 'cbt', 'cbz', 'cb7'],\n 'application/x-cdlink': ['vcd'],\n 'application/x-cfs-compressed': ['cfs'],\n 'application/x-chat': ['chat'],\n 'application/x-chess-pgn': ['pgn'],\n 'application/x-chrome-extension': ['crx'],\n 'application/x-cocoa': ['cco'],\n 'application/x-conference': ['nsc'],\n 'application/x-cpio': ['cpio'],\n 'application/x-csh': ['csh'],\n 'application/x-debian-package': ['*deb', 'udeb'],\n 'application/x-dgc-compressed': ['dgc'],\n 'application/x-director': ['dir', 'dcr', 'dxr', 'cst', 'cct', 'cxt', 'w3d', 'fgd', 'swa'],\n 'application/x-doom': ['wad'],\n 'application/x-dtbncx+xml': ['ncx'],\n 'application/x-dtbook+xml': ['dtb'],\n 'application/x-dtbresource+xml': ['res'],\n 'application/x-dvi': ['dvi'],\n 'application/x-envoy': ['evy'],\n 'application/x-eva': ['eva'],\n 'application/x-font-bdf': ['bdf'],\n 'application/x-font-ghostscript': ['gsf'],\n 'application/x-font-linux-psf': ['psf'],\n 'application/x-font-pcf': ['pcf'],\n 'application/x-font-snf': ['snf'],\n 'application/x-font-type1': ['pfa', 'pfb', 'pfm', 'afm'],\n 'application/x-freearc': ['arc'],\n 'application/x-futuresplash': ['spl'],\n 'application/x-gca-compressed': ['gca'],\n 'application/x-glulx': ['ulx'],\n 'application/x-gnumeric': ['gnumeric'],\n 'application/x-gramps-xml': ['gramps'],\n 'application/x-gtar': ['gtar'],\n 'application/x-hdf': ['hdf'],\n 'application/x-httpd-php': ['php'],\n 'application/x-install-instructions': ['install'],\n 'application/x-iso9660-image': ['*iso'],\n 'application/x-java-archive-diff': ['jardiff'],\n 'application/x-java-jnlp-file': ['jnlp'],\n 'application/x-latex': ['latex'],\n 'application/x-lua-bytecode': ['luac'],\n 'application/x-lzh-compressed': ['lzh', 'lha'],\n 'application/x-makeself': ['run'],\n 'application/x-mie': ['mie'],\n 'application/x-mobipocket-ebook': ['prc', 'mobi'],\n 'application/x-ms-application': ['application'],\n 'application/x-ms-shortcut': ['lnk'],\n 'application/x-ms-wmd': ['wmd'],\n 'application/x-ms-wmz': ['wmz'],\n 'application/x-ms-xbap': ['xbap'],\n 'application/x-msaccess': ['mdb'],\n 'application/x-msbinder': ['obd'],\n 'application/x-mscardfile': ['crd'],\n 'application/x-msclip': ['clp'],\n 'application/x-msdos-program': ['*exe'],\n 'application/x-msdownload': ['*exe', '*dll', 'com', 'bat', '*msi'],\n 'application/x-msmediaview': ['mvb', 'm13', 'm14'],\n 'application/x-msmetafile': ['*wmf', '*wmz', '*emf', 'emz'],\n 'application/x-msmoney': ['mny'],\n 'application/x-mspublisher': ['pub'],\n 'application/x-msschedule': ['scd'],\n 'application/x-msterminal': ['trm'],\n 'application/x-mswrite': ['wri'],\n 'application/x-netcdf': ['nc', 'cdf'],\n 'application/x-ns-proxy-autoconfig': ['pac'],\n 'application/x-nzb': ['nzb'],\n 'application/x-perl': ['pl', 'pm'],\n 'application/x-pilot': ['*prc', '*pdb'],\n 'application/x-pkcs12': ['p12', 'pfx'],\n 'application/x-pkcs7-certificates': ['p7b', 'spc'],\n 'application/x-pkcs7-certreqresp': ['p7r'],\n 'application/x-rar-compressed': ['rar'],\n 'application/x-redhat-package-manager': ['rpm'],\n 'application/x-research-info-systems': ['ris'],\n 'application/x-sea': ['sea'],\n 'application/x-sh': ['sh'],\n 'application/x-shar': ['shar'],\n 'application/x-shockwave-flash': ['swf'],\n 'application/x-silverlight-app': ['xap'],\n 'application/x-sql': ['sql'],\n 'application/x-stuffit': ['sit'],\n 'application/x-stuffitx': ['sitx'],\n 'application/x-subrip': ['srt'],\n 'application/x-sv4cpio': ['sv4cpio'],\n 'application/x-sv4crc': ['sv4crc'],\n 'application/x-t3vm-image': ['t3'],\n 'application/x-tads': ['gam'],\n 'application/x-tar': ['tar'],\n 'application/x-tcl': ['tcl', 'tk'],\n 'application/x-tex': ['tex'],\n 'application/x-tex-tfm': ['tfm'],\n 'application/x-texinfo': ['texinfo', 'texi'],\n 'application/x-tgif': ['obj'],\n 'application/x-ustar': ['ustar'],\n 'application/x-virtualbox-hdd': ['hdd'],\n 'application/x-virtualbox-ova': ['ova'],\n 'application/x-virtualbox-ovf': ['ovf'],\n 'application/x-virtualbox-vbox': ['vbox'],\n 'application/x-virtualbox-vbox-extpack': ['vbox-extpack'],\n 'application/x-virtualbox-vdi': ['vdi'],\n 'application/x-virtualbox-vhd': ['vhd'],\n 'application/x-virtualbox-vmdk': ['vmdk'],\n 'application/x-wais-source': ['src'],\n 'application/x-web-app-manifest+json': ['webapp'],\n 'application/x-x509-ca-cert': ['der', 'crt', 'pem'],\n 'application/x-xfig': ['fig'],\n 'application/x-xliff+xml': ['xlf'],\n 'application/x-xpinstall': ['xpi'],\n 'application/x-xz': ['xz'],\n 'application/x-zmachine': ['z1', 'z2', 'z3', 'z4', 'z5', 'z6', 'z7', 'z8'],\n 'audio/vnd.dece.audio': ['uva', 'uvva'],\n 'audio/vnd.digital-winds': ['eol'],\n 'audio/vnd.dra': ['dra'],\n 'audio/vnd.dts': ['dts'],\n 'audio/vnd.dts.hd': ['dtshd'],\n 'audio/vnd.lucent.voice': ['lvp'],\n 'audio/vnd.ms-playready.media.pya': ['pya'],\n 'audio/vnd.nuera.ecelp4800': ['ecelp4800'],\n 'audio/vnd.nuera.ecelp7470': ['ecelp7470'],\n 'audio/vnd.nuera.ecelp9600': ['ecelp9600'],\n 'audio/vnd.rip': ['rip'],\n 'audio/x-aac': ['aac'],\n 'audio/x-aiff': ['aif', 'aiff', 'aifc'],\n 'audio/x-caf': ['caf'],\n 'audio/x-flac': ['flac'],\n 'audio/x-m4a': ['*m4a'],\n 'audio/x-matroska': ['mka'],\n 'audio/x-mpegurl': ['m3u'],\n 'audio/x-ms-wax': ['wax'],\n 'audio/x-ms-wma': ['wma'],\n 'audio/x-pn-realaudio': ['ram', 'ra'],\n 'audio/x-pn-realaudio-plugin': ['rmp'],\n 'audio/x-realaudio': ['*ra'],\n 'audio/x-wav': ['*wav'],\n 'chemical/x-cdx': ['cdx'],\n 'chemical/x-cif': ['cif'],\n 'chemical/x-cmdf': ['cmdf'],\n 'chemical/x-cml': ['cml'],\n 'chemical/x-csml': ['csml'],\n 'chemical/x-xyz': ['xyz'],\n 'image/prs.btif': ['btif'],\n 'image/prs.pti': ['pti'],\n 'image/vnd.adobe.photoshop': ['psd'],\n 'image/vnd.airzip.accelerator.azv': ['azv'],\n 'image/vnd.dece.graphic': ['uvi', 'uvvi', 'uvg', 'uvvg'],\n 'image/vnd.djvu': ['djvu', 'djv'],\n 'image/vnd.dvb.subtitle': ['*sub'],\n 'image/vnd.dwg': ['dwg'],\n 'image/vnd.dxf': ['dxf'],\n 'image/vnd.fastbidsheet': ['fbs'],\n 'image/vnd.fpx': ['fpx'],\n 'image/vnd.fst': ['fst'],\n 'image/vnd.fujixerox.edmics-mmr': ['mmr'],\n 'image/vnd.fujixerox.edmics-rlc': ['rlc'],\n 'image/vnd.microsoft.icon': ['ico'],\n 'image/vnd.ms-modi': ['mdi'],\n 'image/vnd.ms-photo': ['wdp'],\n 'image/vnd.net-fpx': ['npx'],\n 'image/vnd.tencent.tap': ['tap'],\n 'image/vnd.valve.source.texture': ['vtf'],\n 'image/vnd.wap.wbmp': ['wbmp'],\n 'image/vnd.xiff': ['xif'],\n 'image/vnd.zbrush.pcx': ['pcx'],\n 'image/x-3ds': ['3ds'],\n 'image/x-cmu-raster': ['ras'],\n 'image/x-cmx': ['cmx'],\n 'image/x-freehand': ['fh', 'fhc', 'fh4', 'fh5', 'fh7'],\n 'image/x-icon': ['*ico'],\n 'image/x-jng': ['jng'],\n 'image/x-mrsid-image': ['sid'],\n 'image/x-ms-bmp': ['*bmp'],\n 'image/x-pcx': ['*pcx'],\n 'image/x-pict': ['pic', 'pct'],\n 'image/x-portable-anymap': ['pnm'],\n 'image/x-portable-bitmap': ['pbm'],\n 'image/x-portable-graymap': ['pgm'],\n 'image/x-portable-pixmap': ['ppm'],\n 'image/x-rgb': ['rgb'],\n 'image/x-tga': ['tga'],\n 'image/x-xbitmap': ['xbm'],\n 'image/x-xpixmap': ['xpm'],\n 'image/x-xwindowdump': ['xwd'],\n 'message/vnd.wfa.wsc': ['wsc'],\n 'model/vnd.collada+xml': ['dae'],\n 'model/vnd.dwf': ['dwf'],\n 'model/vnd.gdl': ['gdl'],\n 'model/vnd.gtw': ['gtw'],\n 'model/vnd.mts': ['mts'],\n 'model/vnd.opengex': ['ogex'],\n 'model/vnd.parasolid.transmit.binary': ['x_b'],\n 'model/vnd.parasolid.transmit.text': ['x_t'],\n 'model/vnd.usdz+zip': ['usdz'],\n 'model/vnd.valve.source.compiled-map': ['bsp'],\n 'model/vnd.vtu': ['vtu'],\n 'text/prs.lines.tag': ['dsc'],\n 'text/vnd.curl': ['curl'],\n 'text/vnd.curl.dcurl': ['dcurl'],\n 'text/vnd.curl.mcurl': ['mcurl'],\n 'text/vnd.curl.scurl': ['scurl'],\n 'text/vnd.dvb.subtitle': ['sub'],\n 'text/vnd.fly': ['fly'],\n 'text/vnd.fmi.flexstor': ['flx'],\n 'text/vnd.graphviz': ['gv'],\n 'text/vnd.in3d.3dml': ['3dml'],\n 'text/vnd.in3d.spot': ['spot'],\n 'text/vnd.sun.j2me.app-descriptor': ['jad'],\n 'text/vnd.wap.wml': ['wml'],\n 'text/vnd.wap.wmlscript': ['wmls'],\n 'text/x-asm': ['s', 'asm'],\n 'text/x-c': ['c', 'cc', 'cxx', 'cpp', 'h', 'hh', 'dic'],\n 'text/x-component': ['htc'],\n 'text/x-fortran': ['f', 'for', 'f77', 'f90'],\n 'text/x-handlebars-template': ['hbs'],\n 'text/x-java-source': ['java'],\n 'text/x-lua': ['lua'],\n 'text/x-markdown': ['mkd'],\n 'text/x-nfo': ['nfo'],\n 'text/x-opml': ['opml'],\n 'text/x-org': ['*org'],\n 'text/x-pascal': ['p', 'pas'],\n 'text/x-processing': ['pde'],\n 'text/x-sass': ['sass'],\n 'text/x-scss': ['scss'],\n 'text/x-setext': ['etx'],\n 'text/x-sfv': ['sfv'],\n 'text/x-suse-ymp': ['ymp'],\n 'text/x-uuencode': ['uu'],\n 'text/x-vcalendar': ['vcs'],\n 'text/x-vcard': ['vcf'],\n 'video/vnd.dece.hd': ['uvh', 'uvvh'],\n 'video/vnd.dece.mobile': ['uvm', 'uvvm'],\n 'video/vnd.dece.pd': ['uvp', 'uvvp'],\n 'video/vnd.dece.sd': ['uvs', 'uvvs'],\n 'video/vnd.dece.video': ['uvv', 'uvvv'],\n 'video/vnd.dvb.file': ['dvb'],\n 'video/vnd.fvt': ['fvt'],\n 'video/vnd.mpegurl': ['mxu', 'm4u'],\n 'video/vnd.ms-playready.media.pyv': ['pyv'],\n 'video/vnd.uvvu.mp4': ['uvu', 'uvvu'],\n 'video/vnd.vivo': ['viv'],\n 'video/x-f4v': ['f4v'],\n 'video/x-fli': ['fli'],\n 'video/x-flv': ['flv'],\n 'video/x-m4v': ['m4v'],\n 'video/x-matroska': ['mkv', 'mk3d', 'mks'],\n 'video/x-mng': ['mng'],\n 'video/x-ms-asf': ['asf', 'asx'],\n 'video/x-ms-vob': ['vob'],\n 'video/x-ms-wm': ['wm'],\n 'video/x-ms-wmv': ['wmv'],\n 'video/x-ms-wmx': ['wmx'],\n 'video/x-ms-wvx': ['wvx'],\n 'video/x-msvideo': ['avi'],\n 'video/x-sgi-movie': ['movie'],\n 'video/x-smv': ['smv'],\n 'x-conference/x-cooltalk': ['ice'],\n 'application/x-msi': 'msi',\n 'application/x-ms': 'ms',\n 'application/vnd.geo+json': 'geojson',\n 'application/vnd.debian.binary-package': 'deb',\n 'application/font-woff': 'woff',\n 'application/font-woff2': 'woff2',\n 'application/x-font-ttf': ['ttc', 'ttf'],\n 'font/opentype': 'otf',\n 'application/x-bb-appworld': 'bbaw',\n 'application/x-cd-image': 'iso',\n 'application/x-opera-extension': 'oex',\n 'application/x-ms-dos-executable': 'exe',\n 'text/vnd.rim.location.xloc': 'xloc',\n 'application/x-desktop': 'desktop',\n 'application/x-typescript': 'ts',\n 'application/x-java-archive': 'jar',\n 'application/x-sharedlib': 'so',\n};\n", "/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport * as SparkMD5 from 'spark-md5';\nvar mobileRegexp = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;\n/**\n * Calculates a MD5 checksum for passed buffer\n * @private\n * @param data Data to be hashed\n * @returns base64 encoded MD5 hash\n */\nexport var md5 = function (data) {\n /* istanbul ignore next */\n return btoa(SparkMD5.ArrayBuffer.hash(data, true));\n};\n/**\n * return based string\n *\n * @param data\n */\nexport var b64 = function (data, safeUrl) {\n if (safeUrl === void 0) { safeUrl = false; }\n var b64 = btoa(data);\n if (safeUrl) {\n return b64.replace(/\\//g, '_').replace(/\\+/g, '-');\n }\n return b64;\n};\n/**\n * Return currently used filestack-js sdk version\n */\nexport var getVersion = function () {\n return 'JS-3.26.1';\n};\n/**\n * Returns if browser is a mobile device (if node env always return false)\n */\n/* istanbul ignore next */\nexport var isMobile = function () { return navigator && navigator.userAgent && mobileRegexp.test(navigator.userAgent); };\n/**\n * Check if application is runned in facebook browser\n */\nexport var isFacebook = function () { return navigator && navigator.userAgent && /\\[FB.*;/i.test(navigator.userAgent); };\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMvaW5kZXguYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxJQUFNLFlBQVksR0FBRyw0VkFBNFYsQ0FBQztBQUVsWDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxJQUFNLEdBQUcsR0FBRyxVQUFDLElBQVM7SUFDM0IsMEJBQTBCO0lBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsSUFBTSxHQUFHLEdBQUcsVUFBQyxJQUFZLEVBQUUsT0FBd0I7SUFBeEIsd0JBQUEsRUFBQSxlQUF3QjtJQUN4RCxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdkIsSUFBSSxPQUFPLEVBQUU7UUFDWCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLElBQU0sVUFBVSxHQUFHO0lBQ3hCLE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxJQUFNLFFBQVEsR0FBRyxjQUFNLE9BQUEsU0FBUyxJQUFJLFNBQVMsQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQTFFLENBQTBFLENBQUM7QUFFekc7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxVQUFVLEdBQUcsY0FBTSxPQUFBLFNBQVMsSUFBSSxTQUFTLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUF4RSxDQUF3RSxDQUFDIiwiZmlsZSI6ImxpYi91dGlscy9pbmRleC5icm93c2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOSBieSBGaWxlc3RhY2suXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCAqIGFzIFNwYXJrTUQ1IGZyb20gJ3NwYXJrLW1kNSc7XG5cbmNvbnN0IG1vYmlsZVJlZ2V4cCA9IC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllc1s0Nl0wfHN5bWJpYW58dHJlb3x1cFxcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vfGFuZHJvaWR8aXBhZHxwbGF5Ym9va3xzaWxrL2k7XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBhIE1ENSBjaGVja3N1bSBmb3IgcGFzc2VkIGJ1ZmZlclxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBkYXRhICBEYXRhIHRvIGJlIGhhc2hlZFxuICogQHJldHVybnMgICAgIGJhc2U2NCBlbmNvZGVkIE1ENSBoYXNoXG4gKi9cbmV4cG9ydCBjb25zdCBtZDUgPSAoZGF0YTogYW55KTogc3RyaW5nID0+IHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGJ0b2EoU3BhcmtNRDUuQXJyYXlCdWZmZXIuaGFzaChkYXRhLCB0cnVlKSk7XG59O1xuXG4vKipcbiAqIHJldHVybiBiYXNlZCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gZGF0YVxuICovXG5leHBvcnQgY29uc3QgYjY0ID0gKGRhdGE6IHN0cmluZywgc2FmZVVybDogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nID0+IHtcbiAgY29uc3QgYjY0ID0gYnRvYShkYXRhKTtcblxuICBpZiAoc2FmZVVybCkge1xuICAgIHJldHVybiBiNjQucmVwbGFjZSgvXFwvL2csICdfJykucmVwbGFjZSgvXFwrL2csICctJyk7XG4gIH1cblxuICByZXR1cm4gYjY0O1xufTtcblxuLyoqXG4gKiBSZXR1cm4gY3VycmVudGx5IHVzZWQgZmlsZXN0YWNrLWpzIHNkayB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9uID0gKCkgPT4ge1xuICByZXR1cm4gJ0pTLUB7VkVSU0lPTn0nO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGlmIGJyb3dzZXIgaXMgYSBtb2JpbGUgZGV2aWNlIChpZiBub2RlIGVudiBhbHdheXMgcmV0dXJuIGZhbHNlKVxuICovXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0IGNvbnN0IGlzTW9iaWxlID0gKCkgPT4gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbW9iaWxlUmVnZXhwLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYXBwbGljYXRpb24gaXMgcnVubmVkIGluIGZhY2Vib29rIGJyb3dzZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRmFjZWJvb2sgPSAoKSA9PiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiAvXFxbRkIuKjsvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuIl19\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport { FsRequestOptions, FsResponse } from './types';\n\n/**\n * Filestack error codes (common for browser and node)\n *\n * @export\n * @enum {number}\n */\nexport enum FsRequestErrorCode {\n ABORTED = 'ABORTED',\n NETWORK = 'NETWORK',\n TIMEOUT = 'TIMEDOUT',\n SERVER = 'SERVER',\n REQUEST = 'REQUEST',\n OTHER = 'OTHER',\n REDIRECT = 'REDIRECT',\n}\n\n/**\n * Custom Filestack Request error class\n *\n * @export\n * @class FsRequestError\n * @extends {Error}\n */\nexport class FsRequestError extends Error {\n /**\n * Error details, ie validation errors\n *\n * @type {*}\n * @memberof FilestackError\n */\n public readonly config: FsRequestOptions;\n public readonly response: FsResponse;\n public readonly code: FsRequestErrorCode;\n\n /**\n * Creates an instance of FsRequestError.\n *\n * @param {string} message\n * @param {*} config\n * @param {FsResponse} [response]\n * @param {FsRequestErrorCode} [code]\n * @memberof FsRequestError\n */\n constructor(message: string, config: any, response?: FsResponse, code?: FsRequestErrorCode) {\n /* istanbul ignore next */\n super(message);\n\n this.config = config;\n this.response = response;\n this.code = code;\n\n // const captureStackTrace: Function = (Error as any).captureStackTrace;\n // captureStackTrace && captureStackTrace(this);\n fixProto(this, new.target.prototype);\n }\n}\n\nfunction fixProto(target: Error, prototype: {}) {\n const setPrototypeOf: Function = (Object as any).setPrototypeOf;\n /* istanbul ignore next */\n setPrototypeOf ? setPrototypeOf(target, prototype) : ((target as any).__proto__ = prototype);\n}\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\nfunction log(...args) {\n\t// This hackery is required for IE8/9, where\n\t// the `console.log` function doesn't have 'apply'\n\treturn typeof console === 'object' &&\n\t\tconsole.log &&\n\t\tconsole.log(...args);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { Primitive } from '@sentry/types';\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: any): boolean {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object 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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object 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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object 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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n\n/**\n * Checks whether given value's 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: any): 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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object 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: any): 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: any): 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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object 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): boolean {\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: any): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\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", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 * 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 */\nexport var isBuffer = function () { return false; };\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 */\nexport var isStream = function () { return false; };\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC91dGlscy5icm93c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVIOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLElBQU0sUUFBUSxHQUFHLGNBQU0sT0FBQSxLQUFLLEVBQUwsQ0FBSyxDQUFDO0FBRXBDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLElBQU0sUUFBUSxHQUFHLGNBQU0sT0FBQSxLQUFLLEVBQUwsQ0FBSyxDQUFDIiwiZmlsZSI6ImxpYi9yZXF1ZXN0L3V0aWxzLmJyb3dzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4IGJ5IEZpbGVzdGFja1xuICogU29tZSByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBjb25zdCBpc0J1ZmZlciA9ICgpID0+IGZhbHNlO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyZWFtXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJlYW0sIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgY29uc3QgaXNTdHJlYW0gPSAoKSA9PiBmYWxzZTtcbiJdfQ==\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 * 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 */\nexport const isArray = (val: any[]) => Object.prototype.toString.call(val) === '[object Array]';\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 */\nexport const isArrayBuffer = (val: ArrayBuffer) => Object.prototype.toString.call(val) === '[object ArrayBuffer]';\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 */\nexport const isArrayBufferView = (val: ArrayBufferView) => {\n let 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\n return result;\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 */\nexport const isObject = (val: any) => val !== null && typeof val === 'object';\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 */\nexport const isString = (val: any) => typeof val === 'string' || val instanceof String;\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 */\nexport const isFile = (val: File) => Object.prototype.toString.call(val) === '[object File]';\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 */\nexport const isBlob = (val: Blob) => Object.prototype.toString.call(val) === '[object Blob]';\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 */\nexport const isURLSearchParams = (val: URLSearchParams) => typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n\n/**\n * Determine if value is form data\n *\n * @param val\n */\nexport const isFormData = val => typeof FormData !== 'undefined' && val instanceof FormData;\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 */\nexport const trim = str => str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n\nexport * from './utils.node';\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 */\nimport { FsCancelToken } from './token';\n\nexport enum FsHttpMethod {\n GET = 'GET',\n DELETE = 'DELETE',\n HEAD = 'HEAD',\n PURGE = 'PURGE',\n OPTIONS = 'OPTIONS',\n POST = 'POST',\n PUT = 'PUT',\n PATH = 'PATH',\n}\n\nexport interface FsRetryConfig {\n retry: number;\n onRetry?: (requestConfig: any) => void;\n retryMaxTime?: number;\n retryFactor?: number;\n}\n\nexport interface FsAuthConfig {\n username: string;\n password: string;\n}\n\nexport interface FsRequestHeaders {\n [name: string]: string;\n}\n\nexport interface FsRequestParams {\n [name: string]: string | number;\n}\n\n/**\n * Request runtime data like retryCount etc\n */\nexport interface FsRequestRuntime {\n retryCount?: number;\n [name: string]: any;\n}\n\nexport interface FsRequestOptions {\n url?: string;\n data?: any;\n method?: FsHttpMethod;\n mode?: RequestMode;\n cache?: RequestCache;\n redirect?: RequestRedirect;\n params?: FsRequestParams;\n filestackHeaders?: boolean;\n headers?: FsRequestHeaders;\n blobResponse?: boolean; // blob response only for browsers\n timeout?: number;\n cancelToken?: FsCancelToken;\n retry?: FsRetryConfig;\n onProgress?: (pr: ProgressEvent) => any;\n auth?: FsAuthConfig;\n runtime?: FsRequestRuntime;\n}\n\nexport interface FsResponse {\n status: number;\n statusText: string;\n headers: any;\n data: any;\n config: FsRequestOptions;\n}\n", "'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if(arrayMode === 'strict'){\n target[keys[i]] = [ a[keys[i]] ];\n }else{\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.buildOptions = function(options, defaultOptions, props) {\n var newOptions = {};\n if (!options) {\n return defaultOptions; //if there are not options\n }\n\n for (let i = 0; i < props.length; i++) {\n if (options[props[i]] !== undefined) {\n newOptions[props[i]] = options[props[i]];\n } else {\n newOptions[props[i]] = defaultOptions[props[i]];\n }\n }\n return newOptions;\n};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n", "'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", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Integration, StackFrame, WrappedFunction } from '@sentry/types';\n\nimport { isNodeEnv } from './node';\nimport { snipLine } from './string';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject<T>(): T & SentryGlobal {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject) as T & SentryGlobal;\n}\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(\n url: string,\n): {\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\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 if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n const exception = event.exception.values[0];\n\n if (exception.type && exception.value) {\n return `${exception.type}: ${exception.value}`;\n }\n return exception.type || exception.value || event.event_id || '<unknown>';\n }\n return event.event_id || '<unknown>';\n}\n\n/** JSDoc */\ninterface ExtensibleConsole extends Console {\n [key: string]: any;\n}\n\n/** JSDoc */\nexport function consoleSandbox(callback: () => any): any {\n const global = getGlobalObject<Window>();\n const levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n\n if (!('console' in global)) {\n return callback();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const originalConsole = (global as any).console as ExtensibleConsole;\n const wrappedLevels: { [key: string]: any } = {};\n\n // Restore all wrapped console methods\n levels.forEach(level => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (level in (global as any).console && (originalConsole[level] as WrappedFunction).__sentry_original__) {\n wrappedLevels[level] = originalConsole[level] as WrappedFunction;\n originalConsole[level] = (originalConsole[level] as WrappedFunction).__sentry_original__;\n }\n });\n\n // Perform callback manipulations\n const result = callback();\n\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level];\n });\n\n return result;\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 event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(\n event: Event,\n mechanism: {\n [key: string]: any;\n } = {},\n): void {\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore Type 'Mechanism | {}' is not assignable to type 'Mechanism | undefined'\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values![0].mechanism = event.exception!.values![0].mechanism || {};\n Object.keys(mechanism).forEach(key => {\n // @ts-ignore Mechanism has no index signature\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values![0].mechanism[key] = mechanism[key];\n });\n } catch (_oO) {\n // no-empty\n }\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP = /^(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\nconst defaultRetryAfter = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now: number, header?: string | number | null): number {\n if (!header) {\n return defaultRetryAfter;\n }\n\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 defaultRetryAfter;\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", "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 ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n // eslint-disable-next-line no-param-reassign\n colno = ll;\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, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\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 < ll) {\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 as RegExp).test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 * Save cookie in browser\n *\n * @param name\n * @param value\n * @param expires\n * @param path\n * @param domain\n * @param secure\n */\nexport const write = (name: string, value: string, expires?: number, path?: string, domain?: string, secure?: boolean) => {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (expires) {\n cookie.push('expires=' + new Date(expires).toUTCString());\n }\n\n if (path) {\n cookie.push('path=' + path);\n }\n\n if (domain) {\n cookie.push('domain=' + domain);\n }\n\n if (secure) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n};\n\n/**\n * Read cookie from browser with given name\n *\n * @param name\n */\nexport const read = (name: string) => {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n};\n\n/**\n * Clear cookie by name\n *\n * @param name\n */\nexport const remove = (name) => {\n write(name, '', Date.now() - 86400000);\n};\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 */\nimport { trim } from './../utils';\nimport { FsRequestHeaders } from './../types';\n\nconst ignoreDuplicates = [\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n];\n\n/**\n * Parse response raw header (xhr)\n *\n * @param {string} headers - raw headers string\n */\nexport const parse = headers => {\n let parsed = {};\n let key;\n let val;\n let i;\n\n if (!headers) {\n return parsed;\n }\n\n headers.split('\\n').forEach(line => {\n i = line.indexOf(':');\n key = trim(line.substr(0, i)).toLowerCase();\n val = trim(line.substr(i + 1));\n\n if (!key) {\n return;\n }\n\n if (parsed[key] && ignoreDuplicates.indexOf(key) >= 0) {\n return;\n }\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 return parsed;\n};\n\n/**\n * Normalize input headers\n *\n * @param headers\n */\nexport const normalizeHeaders = (headers: FsRequestHeaders): FsRequestHeaders => {\n if (!headers) {\n return {};\n }\n\n const toReturn = {};\n\n for (let i in headers) {\n toReturn[normalizeName(i)] = headers[i];\n }\n\n return toReturn;\n};\n\n// expect(set({}, 'set-cookies', 'value')).toEqual({ 'Set-Cookies': 'value' });\n/**\n * Set request headers\n *\n * @param headers - object containing headers\n * @param name - header name\n * @param value - header value\n * @param setIFExists - determine if we should change header value if exists\n */\nexport const set = (headers: FsRequestHeaders, name: string, value: string, setIFExists = false) => {\n const normalizedName = normalizeName(name);\n\n if (!headers) {\n headers = {};\n }\n\n // cleanup headers from undefined vals\n headers = JSON.parse(JSON.stringify(headers));\n if (headers[name] === undefined && headers[normalizedName] === undefined) {\n headers[normalizedName] = value;\n } else if (setIFExists) {\n delete headers[name];\n headers[normalizedName] = value;\n }\n\n return headers;\n};\n\n/**\n * Normalize header names according to rfc spec\n *\n * @param {string} name - header name\n */\nexport const normalizeName = (name: string) => {\n // the exceptions\n let result = {\n 'content-md5': 'Content-MD5',\n dnt: 'DNT',\n etag: 'ETag',\n 'last-event-id': 'Last-Event-ID',\n tcn: 'TCN',\n te: 'TE',\n 'www-authenticate': 'WWW-Authenticate',\n 'x-dnsprefetch-control': 'X-DNSPrefetch-Control',\n }[name.toLowerCase()];\n\n if (result) {\n return result;\n }\n\n // the default\n return name\n .split('-')\n .map(function(text) {\n return text.charAt(0).toUpperCase() + text.substr(1).toLowerCase();\n })\n .join('-');\n};\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 */\nimport { isURLSearchParams, isObject, isStream, isFormData, isArrayBuffer, isFile, isBlob, isBuffer } from './../utils';\nimport { getVersion, uniqueId } from './../../utils';\nimport { FsRequestOptions, FsResponse } from './../types';\nimport { set } from './headers';\nimport * as parser from 'fast-xml-parser';\nimport Debug from 'debug';\n\nconst debug = Debug('fs:request:data');\n\n/**\n * Prepare request and set content-type header based on data\n *\n * @param headers\n * @param data\n */\nexport const prepareData = (config: FsRequestOptions) => {\n // set filestack debug headers first\n config = filestackHeaders(config);\n\n if (isFormData(config.data) || isBuffer(config.data) || isStream(config.data) || isFile(config.data) || isBlob(config.data)) {\n return config;\n }\n\n // @todo convert it to ArrayBufferView for browser\n if (isArrayBuffer(config.data)) {\n return config;\n }\n\n if (isURLSearchParams(config.data)) {\n config.headers = set(config.headers, 'content-type', 'application/x-www-form-urlencoded;charset=utf-8');\n config.data = config.data.toString();\n } else if (isObject(config.data)) {\n config.headers = set(config.headers, 'content-type', 'application/json', true);\n config.data = JSON.stringify(config.data);\n }\n\n return config;\n};\n\n/**\n * Add filestack debug headers to request\n *\n * @param config\n */\nexport const filestackHeaders = (config: FsRequestOptions) => {\n if (!config.filestackHeaders) {\n return config;\n }\n\n config.headers = set(config.headers, 'filestack-source', getVersion());\n config.headers = set(config.headers, 'filestack-trace-id', `${Math.floor(Date.now() / 1000)}-${uniqueId()}`);\n config.headers = set(config.headers, 'filestack-trace-span', `jssdk-${uniqueId()}`);\n\n return config;\n};\n\n/**\n * Prepare response data based on content type\n *\n * @param response\n */\nexport const parseResponse = async (response: FsResponse): Promise<FsResponse> => {\n if (!response.headers || !response.headers['content-type']) {\n return Promise.resolve(response);\n }\n\n const contentType = response.headers['content-type'];\n\n if (/application\\/json/.test(contentType)) {\n try {\n response.data = JSON.parse(response.data);\n } catch (e) {\n debug('Cannot parse response %O - %O', response.data, response.headers);\n }\n } else if (/text\\/(plain|html)/.test(contentType)) {\n if (isBuffer(response.data)) {\n response.data = bufferToString(response.data);\n }\n } else if (/application\\/xml/.test(contentType)) {\n let data = response.data;\n\n if (isBuffer(response.data)) {\n data = bufferToString(response.data);\n }\n\n if (parser.validate(data) === true) {\n response.data = parser.parse(data, {\n ignoreAttributes : true,\n trimValues: true,\n });\n }\n }\n\n return Promise.resolve(response);\n};\n\nfunction bufferToString(buffer) {\n const bufView = new Uint16Array(buffer);\n const length = bufView.length;\n\n let result = '';\n let addition = Math.pow(2, 16) - 1;\n\n for (let i = 0; i < length; i += addition) {\n if (i + addition > length) {\n addition = length - i;\n }\n result += String.fromCharCode.apply(null, bufView.subarray(i, i + addition));\n }\n\n return result;\n}\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 * Combine url with qs parameters\n *\n * @param {String} url base url\n * @param {Object} params Query string params object\n */\nexport const combineURL = (url, params) => {\n if (!params) {\n return url;\n }\n\n const serialized = urlfy(params);\n const hashIndex = url.indexOf('#');\n\n if (hashIndex !== -1) {\n url = url.slice(0, hashIndex);\n }\n\n return url + (url.indexOf('?') === -1 ? '?' : '&') + serialized;\n};\n\n/**\n * Change request json params to url search ones\n *\n * @param {Object} obj Object to transform\n */\nexport const urlfy = val =>\n Object.keys(val)\n .filter(k => k && typeof val[k] !== 'undefined')\n .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(val[k])}`)\n .join('&');\n", "'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, propertyPath, name, argument) {\n if (propertyPath) {\n this.property = propertyPath;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n if (schema.id) {\n this.schema = schema.id;\n } else {\n this.schema = schema;\n }\n }\n if (instance) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n this.disableFormat = options && options.disableFormat === true;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.propertyPath);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.propertyPath, detail.name, detail.argument);\n }\n\n if (this.throwError) {\n throw err;\n }\n this.errors.push(err);\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n Array.prototype.push.apply(this.errors, res.errors);\n }\n};\n\nfunction stringizer (v,i){\n return i+': '+v.toString()+'\\n';\n}\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(stringizer).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n { constructor: {value: SchemaError, enumerable: false}\n , name: {value: 'SchemaError', enumerable: false}\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, propertyPath, base, schemas) {\n this.schema = schema;\n this.options = options;\n this.propertyPath = propertyPath;\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var propertyPath = (propertyName===undefined) ? this.propertyPath : this.propertyPath+makeSuffix(propertyName);\n var base = uri.resolve(this.base, schema.id||'');\n var ctx = new SchemaContext(schema, this.options, propertyPath, base, Object.create(this.schemas));\n if(schema.id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n}\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n 'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n 'style': /\\s*(.+?):\\s*([^;]+);?/,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format, validator) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n } else if (validator && validator.customFormats &&\n typeof validator.customFormats[format] === 'function') {\n return validator.customFormats[format](input);\n }\n return true;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (a instanceof Array) {\n if (!(b instanceof Array)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nfunction deepMerger (target, dst, e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e)\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e)\n }\n }\n}\n\nfunction copyist (src, dst, key) {\n dst[key] = src[key];\n}\n\nfunction copyistWithDeepMerge (target, src, dst, key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key])\n }\n }\n}\n\nfunction deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(deepMerger.bind(null, target, dst));\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(copyist.bind(null, target, dst));\n }\n Object.keys(src).forEach(copyistWithDeepMerge.bind(null, target, src, dst));\n }\n\n return dst;\n};\n\nmodule.exports.deepMerge = deepMerge;\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\nfunction pathEncoder (v) {\n return '/'+encodeURIComponent(v).replace(/~/g,'%7E');\n}\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n\t// ~ must be encoded explicitly because hacks\n\t// the slash is encoded by encodeURIComponent\n\treturn a.map(pathEncoder).join('');\n};\n\n\n/**\n * Calculate the number of decimal places a number uses\n * We need this to get correct results out of multipleOf and divisibleBy\n * when either figure is has decimal places, due to IEEE-754 float issues.\n * @param number\n * @returns {number}\n */\nexports.getDecimalPlaces = function getDecimalPlaces(number) {\n\n var decimalPlaces = 0;\n if (isNaN(number)) return decimalPlaces;\n\n if (typeof number !== 'number') {\n number = Number(number);\n }\n\n var parts = number.toString().split('e');\n if (parts.length === 2) {\n if (parts[1][0] !== '-') {\n return decimalPlaces;\n } else {\n decimalPlaces = Number(parts[1].slice(1));\n }\n }\n\n var decimalParts = parts[0].split('.');\n if (decimalParts.length === 2) {\n decimalPlaces += decimalParts[1].length;\n }\n\n return decimalPlaces;\n};\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 return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\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", "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", "'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst xmlNode = require('./xmlNode');\nconst TagType = {OPENING: 1, CLOSING: 2, SELF: 3, CDATA: 4};\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n ignoreNameSpace: false,\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseNodeValue: true,\n parseAttributeValue: false,\n arrayMode: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n tagValueProcessor: function(a, tagName) {\n return a;\n },\n attrValueProcessor: function(a, attrName) {\n return a;\n },\n stopNodes: []\n //decodeStrict: false,\n};\n\nexports.defaultOptions = defaultOptions;\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'ignoreNameSpace',\n 'allowBooleanAttributes',\n 'parseNodeValue',\n 'parseAttributeValue',\n 'arrayMode',\n 'trimValues',\n 'cdataTagName',\n 'cdataPositionChar',\n 'tagValueProcessor',\n 'attrValueProcessor',\n 'parseTrueNumberOnly',\n 'stopNodes'\n];\nexports.props = props;\n\nconst getTraversalObj = function(xmlData, options) {\n options = buildOptions(options, defaultOptions, props);\n //xmlData = xmlData.replace(/\\r?\\n/g, \" \");//make it single line\n xmlData = xmlData.replace(/<!--[\\s\\S]*?-->/g, ''); //Remove comments\n\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n\n const tagsRegx = new RegExp(regx, 'g');\n let tag = tagsRegx.exec(xmlData);\n let nextTag = tagsRegx.exec(xmlData);\n while (tag) {\n const tagType = checkForTagType(tag);\n\n if (tagType === TagType.CLOSING) {\n //add parsed data to parent node\n if (currentNode.parent && tag[12]) {\n currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue(tag, options, currentNode.parent.tagname);\n }\n if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {\n currentNode.child = []\n if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {}}\n currentNode.val = xmlData.substr(currentNode.startIndex + 1, tag.index - currentNode.startIndex - 1)\n }\n currentNode = currentNode.parent;\n } else if (tagType === TagType.CDATA) {\n if (options.cdataTagName) {\n //add cdata node\n const childNode = new xmlNode(options.cdataTagName, currentNode, tag[3]);\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n //for backtracking\n currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;\n //add rest value to parent node\n if (tag[12]) {\n currentNode.val += processTagValue(tag, options);\n }\n } else {\n currentNode.val = (currentNode.val || '') + (tag[3] || '') + processTagValue(tag, options);\n }\n } else if (tagType === TagType.SELF) {\n if (currentNode && tag[12]) {\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tag, options);\n }\n\n const childNode = new xmlNode(options.ignoreNameSpace ? tag[7] : tag[5], currentNode, '');\n if (tag[8] && tag[8].length > 0) {\n tag[8] = tag[8].substr(0, tag[8].length - 1);\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n } else {\n //TagType.OPENING\n const childNode = new xmlNode(\n options.ignoreNameSpace ? tag[7] : tag[5],\n currentNode,\n processTagValue(tag, options)\n );\n if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {\n childNode.startIndex=tag.index + tag[1].length\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n\n tag = nextTag;\n nextTag = tagsRegx.exec(xmlData);\n }\n\n return xmlObj;\n};\n\nfunction processTagValue(parsedTags, options, parentTagName) {\n const tagName = parsedTags[7] || parentTagName;\n let val = parsedTags[12];\n if (val) {\n if (options.trimValues) {\n val = val.trim();\n }\n val = options.tagValueProcessor(val, tagName);\n val = parseValue(val, options.parseNodeValue, options.parseTrueNumberOnly);\n }\n\n return val;\n}\n\nfunction checkForTagType(match) {\n if (match[4] === ']]>') {\n return TagType.CDATA;\n } else if (match[10] === '/') {\n return TagType.CLOSING;\n } else if (typeof match[8] !== 'undefined' && match[8].substr(match[8].length - 1) === '/') {\n return TagType.SELF;\n } else {\n return TagType.OPENING;\n }\n}\n\nfunction resolveNameSpace(tagname, options) {\n if (options.ignoreNameSpace) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\nfunction parseValue(val, shouldParse, parseTrueNumberOnly) {\n if (shouldParse && typeof val === 'string') {\n let parsed;\n if (val.trim() === '' || isNaN(val)) {\n parsed = val === 'true' ? true : val === 'false' ? false : val;\n } else {\n if (val.indexOf('0x') !== -1) {\n //support hexa decimal\n parsed = Number.parseInt(val, 16);\n } else if (val.indexOf('.') !== -1) {\n parsed = Number.parseFloat(val);\n val = val.replace(/0+$/,\"\");\n } else {\n parsed = Number.parseInt(val, 10);\n }\n if (parseTrueNumberOnly) {\n parsed = String(parsed) === val ? parsed : val;\n }\n }\n return parsed;\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])(.*?)\\\\3)?', 'g');\n\nfunction buildAttributesMap(attrStr, options) {\n if (!options.ignoreAttributes && typeof attrStr === 'string') {\n attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = resolveNameSpace(matches[i][1], options);\n if (attrName.length) {\n if (matches[i][4] !== undefined) {\n if (options.trimValues) {\n matches[i][4] = matches[i][4].trim();\n }\n matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);\n attrs[options.attributeNamePrefix + attrName] = parseValue(\n matches[i][4],\n options.parseAttributeValue,\n options.parseTrueNumberOnly\n );\n } else if (options.allowBooleanAttributes) {\n attrs[options.attributeNamePrefix + attrName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (options.attrNodeName) {\n const attrCollection = {};\n attrCollection[options.attrNodeName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nexports.getTraversalObj = getTraversalObj;\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 { FsRequestError, FsRequestErrorCode } from './../error';\nimport Debug from 'debug';\n\nconst debug = Debug('fs:request:shouldRetry');\n\n/**\n * Indicates if method should be retried\n *\n * @private\n * @param {FsRequestError} err\n * @returns\n * @memberof Dispatch\n */\nexport const shouldRetry = (err: FsRequestError) => {\n debug('Checking error for retry. Code: %n, type: %s', (err.response ? err.response.status : 'Malformed response'), err.code);\n\n // we always should retry on network failure\n switch (err.code) {\n case FsRequestErrorCode.NETWORK:\n case FsRequestErrorCode.SERVER:\n case FsRequestErrorCode.TIMEOUT:\n return true;\n // we should not make request on request aborted\n case FsRequestErrorCode.ABORTED:\n return false;\n }\n\n if (!err.response) {\n return false;\n }\n\n // we should retry on all server errors (5xx)\n // this should be handled by FsRequestErrorCode.SERVER but to be sure\n if (500 <= err.response.status && err.response.status <= 599) {\n return true;\n }\n\n // we should not retry on other errors (4xx) ie: BadRequest etc\n return false;\n};\n", "'use strict';\nconst toBytes = s => [...s].map(c => c.charCodeAt(0));\nconst xpiZipFilename = toBytes('META-INF/mozilla.rsa');\nconst oxmlContentTypes = toBytes('[Content_Types].xml');\nconst oxmlRels = toBytes('_rels/.rels');\n\nfunction readUInt64LE(buf, offset = 0) {\n\tlet n = buf[offset];\n\tlet mul = 1;\n\tlet i = 0;\n\twhile (++i < 8) {\n\t\tmul *= 0x100;\n\t\tn += buf[offset + i] * mul;\n\t}\n\n\treturn n;\n}\n\nconst fileType = input => {\n\tif (!(input instanceof Uint8Array || input instanceof ArrayBuffer || Buffer.isBuffer(input))) {\n\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`Buffer\\` or \\`ArrayBuffer\\`, got \\`${typeof input}\\``);\n\t}\n\n\tconst buf = input instanceof Uint8Array ? input : new Uint8Array(input);\n\n\tif (!(buf && buf.length > 1)) {\n\t\treturn null;\n\t}\n\n\tconst check = (header, options) => {\n\t\toptions = Object.assign({\n\t\t\toffset: 0\n\t\t}, options);\n\n\t\tfor (let i = 0; i < header.length; i++) {\n\t\t\t// If a bitmask is set\n\t\t\tif (options.mask) {\n\t\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\t\tif (header[i] !== (options.mask[i] & buf[i + options.offset])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (header[i] !== buf[i + options.offset]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst checkString = (header, options) => check(toBytes(header), options);\n\n\tif (check([0xFF, 0xD8, 0xFF])) {\n\t\treturn {\n\t\t\text: 'jpg',\n\t\t\tmime: 'image/jpeg'\n\t\t};\n\t}\n\n\tif (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\treturn {\n\t\t\text: 'png',\n\t\t\tmime: 'image/png'\n\t\t};\n\t}\n\n\tif (check([0x47, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'gif',\n\t\t\tmime: 'image/gif'\n\t\t};\n\t}\n\n\tif (check([0x57, 0x45, 0x42, 0x50], {offset: 8})) {\n\t\treturn {\n\t\t\text: 'webp',\n\t\t\tmime: 'image/webp'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'flif',\n\t\t\tmime: 'image/flif'\n\t\t};\n\t}\n\n\t// Needs to be before `tif` check\n\tif (\n\t\t(check([0x49, 0x49, 0x2A, 0x0]) || check([0x4D, 0x4D, 0x0, 0x2A])) &&\n\t\tcheck([0x43, 0x52], {offset: 8})\n\t) {\n\t\treturn {\n\t\t\text: 'cr2',\n\t\t\tmime: 'image/x-canon-cr2'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x49, 0x49, 0x2A, 0x0]) ||\n\t\tcheck([0x4D, 0x4D, 0x0, 0x2A])\n\t) {\n\t\treturn {\n\t\t\text: 'tif',\n\t\t\tmime: 'image/tiff'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4D])) {\n\t\treturn {\n\t\t\text: 'bmp',\n\t\t\tmime: 'image/bmp'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0xBC])) {\n\t\treturn {\n\t\t\text: 'jxr',\n\t\t\tmime: 'image/vnd.ms-photo'\n\t\t};\n\t}\n\n\tif (check([0x38, 0x42, 0x50, 0x53])) {\n\t\treturn {\n\t\t\text: 'psd',\n\t\t\tmime: 'image/vnd.adobe.photoshop'\n\t\t};\n\t}\n\n\t// Zip-based file formats\n\t// Need to be before the `zip` check\n\tif (check([0x50, 0x4B, 0x3, 0x4])) {\n\t\tif (\n\t\t\tcheck([0x6D, 0x69, 0x6D, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x65, 0x70, 0x75, 0x62, 0x2B, 0x7A, 0x69, 0x70], {offset: 30})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'epub',\n\t\t\t\tmime: 'application/epub+zip'\n\t\t\t};\n\t\t}\n\n\t\t// Assumes signed `.xpi` from addons.mozilla.org\n\t\tif (check(xpiZipFilename, {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'xpi',\n\t\t\t\tmime: 'application/x-xpinstall'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.text', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'odt',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.text'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.spreadsheet', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'ods',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.spreadsheet'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.presentation', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'odp',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.presentation'\n\t\t\t};\n\t\t}\n\n\t\t// The docx, xlsx and pptx file types extend the Office Open XML file format:\n\t\t// https://en.wikipedia.org/wiki/Office_Open_XML_file_formats\n\t\t// We look for:\n\t\t// - one entry named '[Content_Types].xml' or '_rels/.rels',\n\t\t// - one entry indicating specific type of file.\n\t\t// MS Office, OpenOffice and LibreOffice may put the parts in different order, so the check should not rely on it.\n\t\tconst findNextZipHeaderIndex = (arr, startAt = 0) => arr.findIndex((el, i, arr) => i >= startAt && arr[i] === 0x50 && arr[i + 1] === 0x4B && arr[i + 2] === 0x3 && arr[i + 3] === 0x4);\n\n\t\tlet zipHeaderIndex = 0; // The first zip header was already found at index 0\n\t\tlet oxmlFound = false;\n\t\tlet type = null;\n\n\t\tdo {\n\t\t\tconst offset = zipHeaderIndex + 30;\n\n\t\t\tif (!oxmlFound) {\n\t\t\t\toxmlFound = (check(oxmlContentTypes, {offset}) || check(oxmlRels, {offset}));\n\t\t\t}\n\n\t\t\tif (!type) {\n\t\t\t\tif (checkString('word/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'docx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n\t\t\t\t\t};\n\t\t\t\t} else if (checkString('ppt/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'pptx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n\t\t\t\t\t};\n\t\t\t\t} else if (checkString('xl/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'xlsx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (oxmlFound && type) {\n\t\t\t\treturn type;\n\t\t\t}\n\n\t\t\tzipHeaderIndex = findNextZipHeaderIndex(buf, offset);\n\t\t} while (zipHeaderIndex >= 0);\n\n\t\t// No more zip parts available in the buffer, but maybe we are almost certain about the type?\n\t\tif (type) {\n\t\t\treturn type;\n\t\t}\n\t}\n\n\tif (\n\t\tcheck([0x50, 0x4B]) &&\n\t\t(buf[2] === 0x3 || buf[2] === 0x5 || buf[2] === 0x7) &&\n\t\t(buf[3] === 0x4 || buf[3] === 0x6 || buf[3] === 0x8)\n\t) {\n\t\treturn {\n\t\t\text: 'zip',\n\t\t\tmime: 'application/zip'\n\t\t};\n\t}\n\n\tif (check([0x75, 0x73, 0x74, 0x61, 0x72], {offset: 257})) {\n\t\treturn {\n\t\t\text: 'tar',\n\t\t\tmime: 'application/x-tar'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7]) &&\n\t\t(buf[6] === 0x0 || buf[6] === 0x1)\n\t) {\n\t\treturn {\n\t\t\text: 'rar',\n\t\t\tmime: 'application/x-rar-compressed'\n\t\t};\n\t}\n\n\tif (check([0x1F, 0x8B, 0x8])) {\n\t\treturn {\n\t\t\text: 'gz',\n\t\t\tmime: 'application/gzip'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x5A, 0x68])) {\n\t\treturn {\n\t\t\text: 'bz2',\n\t\t\tmime: 'application/x-bzip2'\n\t\t};\n\t}\n\n\tif (check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\treturn {\n\t\t\text: '7z',\n\t\t\tmime: 'application/x-7z-compressed'\n\t\t};\n\t}\n\n\tif (check([0x78, 0x01])) {\n\t\treturn {\n\t\t\text: 'dmg',\n\t\t\tmime: 'application/x-apple-diskimage'\n\t\t};\n\t}\n\n\tif (check([0x33, 0x67, 0x70, 0x35]) || // 3gp5\n\t\t(\n\t\t\tcheck([0x0, 0x0, 0x0]) && check([0x66, 0x74, 0x79, 0x70], {offset: 4}) &&\n\t\t\t\t(\n\t\t\t\t\tcheck([0x6D, 0x70, 0x34, 0x31], {offset: 8}) || // MP41\n\t\t\t\t\tcheck([0x6D, 0x70, 0x34, 0x32], {offset: 8}) || // MP42\n\t\t\t\t\tcheck([0x69, 0x73, 0x6F, 0x6D], {offset: 8}) || // ISOM\n\t\t\t\t\tcheck([0x69, 0x73, 0x6F, 0x32], {offset: 8}) || // ISO2\n\t\t\t\t\tcheck([0x6D, 0x6D, 0x70, 0x34], {offset: 8}) || // MMP4\n\t\t\t\t\tcheck([0x4D, 0x34, 0x56], {offset: 8}) || // M4V\n\t\t\t\t\tcheck([0x64, 0x61, 0x73, 0x68], {offset: 8}) // DASH\n\t\t\t\t)\n\t\t)) {\n\t\treturn {\n\t\t\text: 'mp4',\n\t\t\tmime: 'video/mp4'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x54, 0x68, 0x64])) {\n\t\treturn {\n\t\t\text: 'mid',\n\t\t\tmime: 'audio/midi'\n\t\t};\n\t}\n\n\t// https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska\n\tif (check([0x1A, 0x45, 0xDF, 0xA3])) {\n\t\tconst sliced = buf.subarray(4, 4 + 4096);\n\t\tconst idPos = sliced.findIndex((el, i, arr) => arr[i] === 0x42 && arr[i + 1] === 0x82);\n\n\t\tif (idPos !== -1) {\n\t\t\tconst docTypePos = idPos + 3;\n\t\t\tconst findDocType = type => [...type].every((c, i) => sliced[docTypePos + i] === c.charCodeAt(0));\n\n\t\t\tif (findDocType('matroska')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mkv',\n\t\t\t\t\tmime: 'video/x-matroska'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (findDocType('webm')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webm',\n\t\t\t\t\tmime: 'video/webm'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\tif (check([0x0, 0x0, 0x0, 0x14, 0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20]) ||\n\t\tcheck([0x66, 0x72, 0x65, 0x65], {offset: 4}) || // Type: `free`\n\t\tcheck([0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20], {offset: 4}) ||\n\t\tcheck([0x6D, 0x64, 0x61, 0x74], {offset: 4}) || // MJPEG\n\t\tcheck([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) || // Type: `moov`\n\t\tcheck([0x77, 0x69, 0x64, 0x65], {offset: 4})) {\n\t\treturn {\n\t\t\text: 'mov',\n\t\t\tmime: 'video/quicktime'\n\t\t};\n\t}\n\n\t// RIFF file format which might be AVI, WAV, QCP, etc\n\tif (check([0x52, 0x49, 0x46, 0x46])) {\n\t\tif (check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'avi',\n\t\t\t\tmime: 'video/vnd.avi'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'wav',\n\t\t\t\tmime: 'audio/vnd.wave'\n\t\t\t};\n\t\t}\n\n\t\t// QLCM, QCP file\n\t\tif (check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'qcp',\n\t\t\t\tmime: 'audio/qcelp'\n\t\t\t};\n\t\t}\n\t}\n\n\t// ASF_Header_Object first 80 bytes\n\tif (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\t// Search for header should be in first 1KB of file.\n\n\t\tlet offset = 30;\n\t\tdo {\n\t\t\tconst objectSize = readUInt64LE(buf, offset + 16);\n\t\t\tif (check([0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65], {offset})) {\n\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\tif (check([0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B], {offset: offset + 24})) {\n\t\t\t\t\t// Found audio:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wma',\n\t\t\t\t\t\tmime: 'audio/x-ms-wma'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (check([0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B], {offset: offset + 24})) {\n\t\t\t\t\t// Found video:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wmv',\n\t\t\t\t\t\tmime: 'video/x-ms-asf'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\toffset += objectSize;\n\t\t} while (offset + 24 <= buf.length);\n\n\t\t// Default to ASF generic extension\n\t\treturn {\n\t\t\text: 'asf',\n\t\t\tmime: 'application/vnd.ms-asf'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x0, 0x0, 0x1, 0xBA]) ||\n\t\tcheck([0x0, 0x0, 0x1, 0xB3])\n\t) {\n\t\treturn {\n\t\t\text: 'mpg',\n\t\t\tmime: 'video/mpeg'\n\t\t};\n\t}\n\n\tif (check([0x66, 0x74, 0x79, 0x70, 0x33, 0x67], {offset: 4})) {\n\t\treturn {\n\t\t\text: '3gp',\n\t\t\tmime: 'video/3gpp'\n\t\t};\n\t}\n\n\t// Check for MPEG header at different starting offsets\n\tfor (let start = 0; start < 2 && start < (buf.length - 16); start++) {\n\t\tif (\n\t\t\tcheck([0x49, 0x44, 0x33], {offset: start}) || // ID3 header\n\t\t\tcheck([0xFF, 0xE2], {offset: start, mask: [0xFF, 0xE2]}) // MPEG 1 or 2 Layer 3 header\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp3',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xE4], {offset: start, mask: [0xFF, 0xE4]}) // MPEG 1 or 2 Layer 2 header\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp2',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xF8], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 2 layer 0 using ADTS\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp2',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xF0], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 4 layer 0 using ADTS\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp4',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (\n\t\tcheck([0x66, 0x74, 0x79, 0x70, 0x4D, 0x34, 0x41], {offset: 4})\n\t) {\n\t\treturn { // MPEG-4 layer 3 (audio)\n\t\t\text: 'm4a',\n\t\t\tmime: 'audio/mp4' // RFC 4337\n\t\t};\n\t}\n\n\t// Needs to be before `ogg` check\n\tif (check([0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64], {offset: 28})) {\n\t\treturn {\n\t\t\text: 'opus',\n\t\t\tmime: 'audio/opus'\n\t\t};\n\t}\n\n\t// If 'OggS' in first bytes, then OGG container\n\tif (check([0x4F, 0x67, 0x67, 0x53])) {\n\t\t// This is a OGG container\n\n\t\t// If ' theora' in header.\n\t\tif (check([0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogv',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If '\\x01video' in header.\n\t\tif (check([0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogm',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If ' FLAC' in header https://xiph.org/flac/faq.html\n\t\tif (check([0x7F, 0x46, 0x4C, 0x41, 0x43], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'oga',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// 'Speex ' in header https://en.wikipedia.org/wiki/Speex\n\t\tif (check([0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'spx',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If '\\x01vorbis' in header\n\t\tif (check([0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogg',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\treturn {\n\t\t\text: 'ogx',\n\t\t\tmime: 'application/ogg'\n\t\t};\n\t}\n\n\tif (check([0x66, 0x4C, 0x61, 0x43])) {\n\t\treturn {\n\t\t\text: 'flac',\n\t\t\tmime: 'audio/x-flac'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x41, 0x43, 0x20])) { // 'MAC '\n\t\treturn {\n\t\t\text: 'ape',\n\t\t\tmime: 'audio/ape'\n\t\t};\n\t}\n\n\tif (check([0x77, 0x76, 0x70, 0x6B])) { // 'wvpk'\n\t\treturn {\n\t\t\text: 'wv',\n\t\t\tmime: 'audio/wavpack'\n\t\t};\n\t}\n\n\tif (check([0x23, 0x21, 0x41, 0x4D, 0x52, 0x0A])) {\n\t\treturn {\n\t\t\text: 'amr',\n\t\t\tmime: 'audio/amr'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x50, 0x44, 0x46])) {\n\t\treturn {\n\t\t\text: 'pdf',\n\t\t\tmime: 'application/pdf'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x5A])) {\n\t\treturn {\n\t\t\text: 'exe',\n\t\t\tmime: 'application/x-msdownload'\n\t\t};\n\t}\n\n\tif (\n\t\t(buf[0] === 0x43 || buf[0] === 0x46) &&\n\t\tcheck([0x57, 0x53], {offset: 1})\n\t) {\n\t\treturn {\n\t\t\text: 'swf',\n\t\t\tmime: 'application/x-shockwave-flash'\n\t\t};\n\t}\n\n\tif (check([0x7B, 0x5C, 0x72, 0x74, 0x66])) {\n\t\treturn {\n\t\t\text: 'rtf',\n\t\t\tmime: 'application/rtf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x61, 0x73, 0x6D])) {\n\t\treturn {\n\t\t\text: 'wasm',\n\t\t\tmime: 'application/wasm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x46]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff',\n\t\t\tmime: 'font/woff'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x32]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff2',\n\t\t\tmime: 'font/woff2'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4C, 0x50], {offset: 34}) &&\n\t\t(\n\t\t\tcheck([0x00, 0x00, 0x01], {offset: 8}) ||\n\t\t\tcheck([0x01, 0x00, 0x02], {offset: 8}) ||\n\t\t\tcheck([0x02, 0x00, 0x02], {offset: 8})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'eot',\n\t\t\tmime: 'application/vnd.ms-fontobject'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'ttf',\n\t\t\tmime: 'font/ttf'\n\t\t};\n\t}\n\n\tif (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\treturn {\n\t\t\text: 'otf',\n\t\t\tmime: 'font/otf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x01, 0x00])) {\n\t\treturn {\n\t\t\text: 'ico',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x02, 0x00])) {\n\t\treturn {\n\t\t\text: 'cur',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x56, 0x01])) {\n\t\treturn {\n\t\t\text: 'flv',\n\t\t\tmime: 'video/x-flv'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x21])) {\n\t\treturn {\n\t\t\text: 'ps',\n\t\t\tmime: 'application/postscript'\n\t\t};\n\t}\n\n\tif (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\treturn {\n\t\t\text: 'xz',\n\t\t\tmime: 'application/x-xz'\n\t\t};\n\t}\n\n\tif (check([0x53, 0x51, 0x4C, 0x69])) {\n\t\treturn {\n\t\t\text: 'sqlite',\n\t\t\tmime: 'application/x-sqlite3'\n\t\t};\n\t}\n\n\tif (check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\treturn {\n\t\t\text: 'nes',\n\t\t\tmime: 'application/x-nintendo-nes-rom'\n\t\t};\n\t}\n\n\tif (check([0x43, 0x72, 0x32, 0x34])) {\n\t\treturn {\n\t\t\text: 'crx',\n\t\t\tmime: 'application/x-google-chrome-extension'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4D, 0x53, 0x43, 0x46]) ||\n\t\tcheck([0x49, 0x53, 0x63, 0x28])\n\t) {\n\t\treturn {\n\t\t\text: 'cab',\n\t\t\tmime: 'application/vnd.ms-cab-compressed'\n\t\t};\n\t}\n\n\t// Needs to be before `ar` check\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E, 0x0A, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79])) {\n\t\treturn {\n\t\t\text: 'deb',\n\t\t\tmime: 'application/x-deb'\n\t\t};\n\t}\n\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E])) {\n\t\treturn {\n\t\t\text: 'ar',\n\t\t\tmime: 'application/x-unix-archive'\n\t\t};\n\t}\n\n\tif (check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\treturn {\n\t\t\text: 'rpm',\n\t\t\tmime: 'application/x-rpm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x1F, 0xA0]) ||\n\t\tcheck([0x1F, 0x9D])\n\t) {\n\t\treturn {\n\t\t\text: 'Z',\n\t\t\tmime: 'application/x-compress'\n\t\t};\n\t}\n\n\tif (check([0x4C, 0x5A, 0x49, 0x50])) {\n\t\treturn {\n\t\t\text: 'lz',\n\t\t\tmime: 'application/x-lzip'\n\t\t};\n\t}\n\n\tif (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\treturn {\n\t\t\text: 'msi',\n\t\t\tmime: 'application/x-msi'\n\t\t};\n\t}\n\n\tif (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\treturn {\n\t\t\text: 'mxf',\n\t\t\tmime: 'application/mxf'\n\t\t};\n\t}\n\n\tif (check([0x47], {offset: 4}) && (check([0x47], {offset: 192}) || check([0x47], {offset: 196}))) {\n\t\treturn {\n\t\t\text: 'mts',\n\t\t\tmime: 'video/mp2t'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4C, 0x45, 0x4E, 0x44, 0x45, 0x52])) {\n\t\treturn {\n\t\t\text: 'blend',\n\t\t\tmime: 'application/x-blender'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x50, 0x47, 0xFB])) {\n\t\treturn {\n\t\t\text: 'bpg',\n\t\t\tmime: 'image/bpg'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t// JPEG-2000 family\n\n\t\tif (check([0x6A, 0x70, 0x32, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jp2',\n\t\t\t\tmime: 'image/jp2'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6A, 0x70, 0x78, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jpx',\n\t\t\t\tmime: 'image/jpx'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6A, 0x70, 0x6D, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jpm',\n\t\t\t\tmime: 'image/jpm'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6D, 0x6A, 0x70, 0x32], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'mj2',\n\t\t\t\tmime: 'image/mj2'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (check([0x46, 0x4F, 0x52, 0x4D])) {\n\t\treturn {\n\t\t\text: 'aif',\n\t\t\tmime: 'audio/aiff'\n\t\t};\n\t}\n\n\tif (checkString('<?xml ')) {\n\t\treturn {\n\t\t\text: 'xml',\n\t\t\tmime: 'application/xml'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) {\n\t\treturn {\n\t\t\text: 'mobi',\n\t\t\tmime: 'application/x-mobipocket-ebook'\n\t\t};\n\t}\n\n\t// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n\tif (check([0x66, 0x74, 0x79, 0x70], {offset: 4})) {\n\t\tif (check([0x6D, 0x69, 0x66, 0x31], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'heic',\n\t\t\t\tmime: 'image/heif'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6D, 0x73, 0x66, 0x31], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'heic',\n\t\t\t\tmime: 'image/heif-sequence'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x68, 0x65, 0x69, 0x63], {offset: 8}) || check([0x68, 0x65, 0x69, 0x78], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'heic',\n\t\t\t\tmime: 'image/heic'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x68, 0x65, 0x76, 0x63], {offset: 8}) || check([0x68, 0x65, 0x76, 0x78], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'heic',\n\t\t\t\tmime: 'image/heic-sequence'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\treturn {\n\t\t\text: 'ktx',\n\t\t\tmime: 'image/ktx'\n\t\t};\n\t}\n\n\tif (check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) {\n\t\treturn {\n\t\t\text: 'dcm',\n\t\t\tmime: 'application/dicom'\n\t\t};\n\t}\n\n\t// Musepack, SV7\n\tif (check([0x4D, 0x50, 0x2B])) {\n\t\treturn {\n\t\t\text: 'mpc',\n\t\t\tmime: 'audio/x-musepack'\n\t\t};\n\t}\n\n\t// Musepack, SV8\n\tif (check([0x4D, 0x50, 0x43, 0x4B])) {\n\t\treturn {\n\t\t\text: 'mpc',\n\t\t\tmime: 'audio/x-musepack'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x45, 0x47, 0x49, 0x4E, 0x3A])) {\n\t\treturn {\n\t\t\text: 'ics',\n\t\t\tmime: 'text/calendar'\n\t\t};\n\t}\n\n\tif (check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'glb',\n\t\t\tmime: 'model/gltf-binary'\n\t\t};\n\t}\n\n\tif (check([0xD4, 0xC3, 0xB2, 0xA1]) || check([0xA1, 0xB2, 0xC3, 0xD4])) {\n\t\treturn {\n\t\t\text: 'pcap',\n\t\t\tmime: 'application/vnd.tcpdump.pcap'\n\t\t};\n\t}\n\n\treturn null;\n};\n\nmodule.exports = fileType;\n// TODO: Remove this for the next major release\nmodule.exports.default = fileType;\n\nObject.defineProperty(fileType, 'minimumBytes', {value: 4100});\n\nmodule.exports.stream = readableStream => new Promise((resolve, reject) => {\n\t// Using `eval` to work around issues when bundling with Webpack\n\tconst stream = eval('require')('stream'); // eslint-disable-line no-eval\n\n\treadableStream.once('readable', () => {\n\t\tconst pass = new stream.PassThrough();\n\t\tconst chunk = readableStream.read(module.exports.minimumBytes) || readableStream.read();\n\t\ttry {\n\t\t\tpass.fileType = fileType(chunk);\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\n\t\treadableStream.unshift(chunk);\n\n\t\tif (stream.pipeline) {\n\t\t\tresolve(stream.pipeline(readableStream, pass, () => {}));\n\t\t} else {\n\t\t\tresolve(readableStream.pipe(pass));\n\t\t}\n\t});\n});\n", "'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\nmodule.exports.SchemaScanResult = require('./scan').SchemaScanResult;\nmodule.exports.scan = require('./scan').scan;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\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 punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n", "\nvar urilib = require('url');\nvar helpers = require('./helpers');\n\nmodule.exports.SchemaScanResult = SchemaScanResult;\nfunction SchemaScanResult(found, ref){\n this.id = found;\n this.ref = ref;\n}\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param string uri\n * @param object schema\n * @return {Object}\n */\nmodule.exports.scan = function scan(base, schema){\n function scanSchema(baseuri, schema){\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n ref[resolvedUri] = ref[resolvedUri] ? ref[resolvedUri]+1 : 0;\n return;\n }\n var ourBase = schema.id ? urilib.resolve(baseuri, schema.id) : baseuri;\n if (ourBase) {\n // If there's no fragment, append an empty one\n if(ourBase.indexOf('#')<0) ourBase += '#';\n if(found[ourBase]){\n if(!helpers.deepCompareStrict(found[ourBase], schema)){\n throw new Error('Schema <'+schema+'> already exists with different definition');\n }\n return found[ourBase];\n }\n found[ourBase] = schema;\n // strip trailing fragment\n if(ourBase[ourBase.length-1]=='#'){\n found[ourBase.substring(0, ourBase.length-1)] = schema;\n }\n }\n scanArray(ourBase+'/items', ((schema.items instanceof Array)?schema.items:[schema.items]));\n scanArray(ourBase+'/extends', ((schema.extends instanceof Array)?schema.extends:[schema.extends]));\n scanSchema(ourBase+'/additionalItems', schema.additionalItems);\n scanObject(ourBase+'/properties', schema.properties);\n scanSchema(ourBase+'/additionalProperties', schema.additionalProperties);\n scanObject(ourBase+'/definitions', schema.definitions);\n scanObject(ourBase+'/patternProperties', schema.patternProperties);\n scanObject(ourBase+'/dependencies', schema.dependencies);\n scanArray(ourBase+'/disallow', schema.disallow);\n scanArray(ourBase+'/allOf', schema.allOf);\n scanArray(ourBase+'/anyOf', schema.anyOf);\n scanArray(ourBase+'/oneOf', schema.oneOf);\n scanSchema(ourBase+'/not', schema.not);\n }\n function scanArray(baseuri, schemas){\n if(!(schemas instanceof Array)) return;\n for(var i=0; i<schemas.length; i++){\n scanSchema(baseuri+'/'+i, schemas[i]);\n }\n }\n function scanObject(baseuri, schemas){\n if(!schemas || typeof schemas!='object') return;\n for(var p in schemas){\n scanSchema(baseuri+'/'+p, schemas[p]);\n }\n }\n\n var found = {};\n var ref = {};\n var schemaUri = base;\n scanSchema(base, schema);\n return new SchemaScanResult(found, ref);\n}\n", "'use strict';\n\nconst nodeToJson = require('./node2json');\nconst xmlToNodeobj = require('./xmlstr2xmlnode');\nconst x2xmlnode = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\nconst validator = require('./validator');\n\nexports.parse = function(xmlData, options, validationOption) {\n if( validationOption){\n if(validationOption === true) validationOption = {}\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( result.err.msg)\n }\n }\n options = buildOptions(options, x2xmlnode.defaultOptions, x2xmlnode.props);\n return nodeToJson.convertToJson(xmlToNodeobj.getTraversalObj(xmlData, options), options);\n};\nexports.convertTonimn = require('../src/nimndata').convert2nimn;\nexports.getTraversalObj = xmlToNodeobj.getTraversalObj;\nexports.convertToJson = nodeToJson.convertToJson;\nexports.convertToJsonString = require('./node2json_str').convertToJsonString;\nexports.validate = validator.validate;\nexports.j2xParser = require('./json2xml');\nexports.parseToNimn = function(xmlData, schema, options) {\n return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);\n};\n", "import { 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): 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);\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): 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 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 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", "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", "/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\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", "'use strict';\n/*\n https://tools.ietf.org/html/rfc3629\n\n UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n UTF8-1 = %x00-7F\n\n UTF8-2 = %xC2-DF UTF8-tail\n\n UTF8-3 = %xE0 %xA0-BF UTF8-tail\n %xE1-EC 2( UTF8-tail )\n %xED %x80-9F UTF8-tail\n %xEE-EF 2( UTF8-tail )\n\n UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n %xF1-F3 3( UTF8-tail )\n %xF4 %x80-8F 2( UTF8-tail )\n\n UTF8-tail = %x80-BF\n*/\n\n/**\n * Check if a Node.js Buffer or Uint8Array is utf-8\n *\n * @param {Buffer|Uint8Array} buf\n * @returns {boolean}\n */\nfunction isUtf8(buf) {\n if (!buf) {\n return false;\n }\n\n var i = 0, len = buf.length;\n\n while(i < len) {\n // UTF8-1 = %x00-7F\n if (buf[i] <= 0x7F) {\n i++;\n\n continue;\n }\n\n // UTF8-2 = %xC2-DF UTF8-tail\n if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n if (buf[i + 1] >> 6 === 2) {\n i += 2;\n\n continue;\n } else {\n return false;\n }\n }\n\n // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n // UTF8-3 = %xED %x80-9F UTF8-tail\n if (\n (\n (buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)\n ) && buf[i + 2] >> 6 === 2\n ) {\n i += 3;\n\n continue;\n }\n\n // UTF8-3 = %xE1-EC 2( UTF8-tail )\n // UTF8-3 = %xEE-EF 2( UTF8-tail )\n if (\n (\n (buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n (buf[i] >= 0xEE && buf[i] <= 0xEF)\n ) &&\n buf[i + 1] >> 6 === 2 &&\n buf[i + 2] >> 6 === 2\n ) {\n i += 3;\n\n continue;\n }\n\n // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n // %xF1-F3 3( UTF8-tail )\n // %xF4 %x80-8F 2( UTF8-tail )\n if (\n (\n (buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)\n ) &&\n buf[i + 2] >> 6 === 2 &&\n buf[i + 3] >> 6 === 2\n ) {\n i += 4;\n\n continue;\n }\n\n return false;\n }\n\n return true;\n}\n\nmodule.exports = isUtf8;\n", "(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} raw True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n", "'use strict';\n\nconst EventEmitter = require('eventemitter3');\n\n// Port of lower_bound from http://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nfunction lowerBound(array, value, comp) {\n\tlet first = 0;\n\tlet count = array.length;\n\n\twhile (count > 0) {\n\t\tconst step = (count / 2) | 0;\n\t\tlet it = first + step;\n\n\t\tif (comp(array[it], value) <= 0) {\n\t\t\tfirst = ++it;\n\t\t\tcount -= step + 1;\n\t\t} else {\n\t\t\tcount = step;\n\t\t}\n\t}\n\n\treturn first;\n}\n\nclass PriorityQueue {\n\tconstructor() {\n\t\tthis._queue = [];\n\t}\n\n\tenqueue(run, options) {\n\t\toptions = Object.assign({\n\t\t\tpriority: 0\n\t\t}, options);\n\n\t\tconst element = {priority: options.priority, run};\n\n\t\tif (this.size && this._queue[this.size - 1].priority >= options.priority) {\n\t\t\tthis._queue.push(element);\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = lowerBound(this._queue, element, (a, b) => b.priority - a.priority);\n\t\tthis._queue.splice(index, 0, element);\n\t}\n\n\tdequeue() {\n\t\treturn this._queue.shift().run;\n\t}\n\n\tget size() {\n\t\treturn this._queue.length;\n\t}\n}\n\nclass PQueue extends EventEmitter {\n\tconstructor(options) {\n\t\tsuper();\n\n\t\toptions = Object.assign({\n\t\t\tcarryoverConcurrencyCount: false,\n\t\t\tintervalCap: Infinity,\n\t\t\tinterval: 0,\n\t\t\tconcurrency: Infinity,\n\t\t\tautoStart: true,\n\t\t\tqueueClass: PriorityQueue\n\t\t}, options);\n\n\t\tif (!(typeof options.concurrency === 'number' && options.concurrency >= 1)) {\n\t\t\tthrow new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${options.concurrency}\\` (${typeof options.concurrency})`);\n\t\t}\n\n\t\tif (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n\t\t\tthrow new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap}\\` (${typeof options.intervalCap})`);\n\t\t}\n\n\t\tif (!(Number.isFinite(options.interval) && options.interval >= 0)) {\n\t\t\tthrow new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval}\\` (${typeof options.interval})`);\n\t\t}\n\n\t\tthis._carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n\t\tthis._isIntervalIgnored = options.intervalCap === Infinity || options.interval === 0;\n\t\tthis._intervalCount = 0;\n\t\tthis._intervalCap = options.intervalCap;\n\t\tthis._interval = options.interval;\n\t\tthis._intervalId = null;\n\t\tthis._intervalEnd = 0;\n\t\tthis._timeoutId = null;\n\n\t\tthis.queue = new options.queueClass(); // eslint-disable-line new-cap\n\t\tthis._queueClass = options.queueClass;\n\t\tthis._pendingCount = 0;\n\t\tthis._concurrency = options.concurrency;\n\t\tthis._isPaused = options.autoStart === false;\n\t\tthis._resolveEmpty = () => {};\n\t\tthis._resolveIdle = () => {};\n\t}\n\n\tget _doesIntervalAllowAnother() {\n\t\treturn this._isIntervalIgnored || this._intervalCount < this._intervalCap;\n\t}\n\n\tget _doesConcurrentAllowAnother() {\n\t\treturn this._pendingCount < this._concurrency;\n\t}\n\n\t_next() {\n\t\tthis._pendingCount--;\n\t\tthis._tryToStartAnother();\n\t}\n\n\t_resolvePromises() {\n\t\tthis._resolveEmpty();\n\t\tthis._resolveEmpty = () => {};\n\n\t\tif (this._pendingCount === 0) {\n\t\t\tthis._resolveIdle();\n\t\t\tthis._resolveIdle = () => {};\n\t\t}\n\t}\n\n\t_onResumeInterval() {\n\t\tthis._onInterval();\n\t\tthis._initializeIntervalIfNeeded();\n\t\tthis._timeoutId = null;\n\t}\n\n\t_intervalPaused() {\n\t\tconst now = Date.now();\n\n\t\tif (this._intervalId === null) {\n\t\t\tconst delay = this._intervalEnd - now;\n\t\t\tif (delay < 0) {\n\t\t\t\t// Act as the interval was done\n\t\t\t\t// We don't need to resume it here,\n\t\t\t\t// because it'll be resumed on line 160\n\t\t\t\tthis._intervalCount = (this._carryoverConcurrencyCount) ? this._pendingCount : 0;\n\t\t\t} else {\n\t\t\t\t// Act as the interval is pending\n\t\t\t\tif (this._timeoutId === null) {\n\t\t\t\t\tthis._timeoutId = setTimeout(() => this._onResumeInterval(), delay);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t_tryToStartAnother() {\n\t\tif (this.queue.size === 0) {\n\t\t\t// We can clear the interval (\"pause\")\n\t\t\t// because we can redo it later (\"resume\")\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = null;\n\n\t\t\tthis._resolvePromises();\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this._isPaused) {\n\t\t\tconst canInitializeInterval = !this._intervalPaused();\n\t\t\tif (this._doesIntervalAllowAnother && this._doesConcurrentAllowAnother) {\n\t\t\t\tthis.emit('active');\n\t\t\t\tthis.queue.dequeue()();\n\t\t\t\tif (canInitializeInterval) {\n\t\t\t\t\tthis._initializeIntervalIfNeeded();\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t_initializeIntervalIfNeeded() {\n\t\tif (this._isIntervalIgnored || this._intervalId !== null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intervalId = setInterval(() => this._onInterval(), this._interval);\n\t\tthis._intervalEnd = Date.now() + this._interval;\n\t}\n\n\t_onInterval() {\n\t\tif (this._intervalCount === 0 && this._pendingCount === 0) {\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = null;\n\t\t}\n\n\t\tthis._intervalCount = (this._carryoverConcurrencyCount) ? this._pendingCount : 0;\n\t\twhile (this._tryToStartAnother()) {} // eslint-disable-line no-empty\n\t}\n\n\tadd(fn, options) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst run = () => {\n\t\t\t\tthis._pendingCount++;\n\t\t\t\tthis._intervalCount++;\n\n\t\t\t\ttry {\n\t\t\t\t\tPromise.resolve(fn()).then(\n\t\t\t\t\t\tval => {\n\t\t\t\t\t\t\tresolve(val);\n\t\t\t\t\t\t\tthis._next();\n\t\t\t\t\t\t},\n\t\t\t\t\t\terr => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\tthis._next();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t\tthis._next();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.queue.enqueue(run, options);\n\t\t\tthis._tryToStartAnother();\n\t\t});\n\t}\n\n\taddAll(fns, options) {\n\t\treturn Promise.all(fns.map(fn => this.add(fn, options)));\n\t}\n\n\tstart() {\n\t\tif (!this._isPaused) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isPaused = false;\n\t\twhile (this._tryToStartAnother()) {} // eslint-disable-line no-empty\n\t}\n\n\tpause() {\n\t\tthis._isPaused = true;\n\t}\n\n\tclear() {\n\t\tthis.queue = new this._queueClass();\n\t}\n\n\tonEmpty() {\n\t\t// Instantly resolve if the queue is empty\n\t\tif (this.queue.size === 0) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn new Promise(resolve => {\n\t\t\tconst existingResolve = this._resolveEmpty;\n\t\t\tthis._resolveEmpty = () => {\n\t\t\t\texistingResolve();\n\t\t\t\tresolve();\n\t\t\t};\n\t\t});\n\t}\n\n\tonIdle() {\n\t\t// Instantly resolve if none pending and if nothing else is queued\n\t\tif (this._pendingCount === 0 && this.queue.size === 0) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn new Promise(resolve => {\n\t\t\tconst existingResolve = this._resolveIdle;\n\t\t\tthis._resolveIdle = () => {\n\t\t\t\texistingResolve();\n\t\t\t\tresolve();\n\t\t\t};\n\t\t});\n\t}\n\n\tget size() {\n\t\treturn this.queue.size;\n\t}\n\n\tget pending() {\n\t\treturn this._pendingCount;\n\t}\n\n\tget isPaused() {\n\t\treturn this._isPaused;\n\t}\n}\n\nmodule.exports = PQueue;\nmodule.exports.default = PQueue;\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 size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\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 match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\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/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\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 * 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/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\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/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\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 Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\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 * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\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 stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\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 stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\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 * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\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 `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\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 * 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 * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\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 * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\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 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 * 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 * 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 * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\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 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 a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\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 * 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 * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n", "const 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", "/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nexport class Memo {\n /** Determines if WeakSet is available */\n private readonly _hasWeakSet: boolean;\n /** Either WeakSet or Array */\n private readonly _inner: any;\n\n public constructor() {\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n public memoize(obj: any): boolean {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < this._inner.length; i++) {\n const value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n }\n\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n public unmemoize(obj: any): void {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n } else {\n for (let i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n }\n}\n", "'use strict';\n\nvar urilib = require('url');\n\nvar attribute = require('./attribute');\nvar helpers = require('./helpers');\nvar scanSchema = require('./scan').scan;\nvar ValidatorResult = helpers.ValidatorResult;\nvar SchemaError = helpers.SchemaError;\nvar SchemaContext = helpers.SchemaContext;\n//var anonymousBase = 'vnd.jsonschema:///';\nvar anonymousBase = '/';\n\n/**\n * Creates a new Validator object\n * @name Validator\n * @constructor\n */\nvar Validator = function Validator () {\n // Allow a validator instance to override global custom formats or to have their\n // own custom formats.\n this.customFormats = Object.create(Validator.prototype.customFormats);\n this.schemas = {};\n this.unresolvedRefs = [];\n\n // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n this.types = Object.create(types);\n this.attributes = Object.create(attribute.validators);\n};\n\n// Allow formats to be registered globally.\nValidator.prototype.customFormats = {};\n\n// Hint at the presence of a property\nValidator.prototype.schemas = null;\nValidator.prototype.types = null;\nValidator.prototype.attributes = null;\nValidator.prototype.unresolvedRefs = null;\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param schema\n * @param urn\n * @return {Object}\n */\nValidator.prototype.addSchema = function addSchema (schema, base) {\n var self = this;\n if (!schema) {\n return null;\n }\n var scan = scanSchema(base||anonymousBase, schema);\n var ourUri = base || schema.id;\n for(var uri in scan.id){\n this.schemas[uri] = scan.id[uri];\n }\n for(var uri in scan.ref){\n this.unresolvedRefs.push(uri);\n }\n this.unresolvedRefs = this.unresolvedRefs.filter(function(uri){\n return typeof self.schemas[uri]==='undefined';\n });\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n if(!(schemas instanceof Array)) return;\n for(var i=0; i<schemas.length; i++){\n this.addSubSchema(baseuri, schemas[i]);\n }\n};\n\nValidator.prototype.addSubSchemaObject = function addSubSchemaArray(baseuri, schemas) {\n if(!schemas || typeof schemas!='object') return;\n for(var p in schemas){\n this.addSubSchema(baseuri, schemas[p]);\n }\n};\n\n\n\n/**\n * Sets all the schemas of the Validator instance.\n * @param schemas\n */\nValidator.prototype.setSchemas = function setSchemas (schemas) {\n this.schemas = schemas;\n};\n\n/**\n * Returns the schema of a certain urn\n * @param urn\n */\nValidator.prototype.getSchema = function getSchema (urn) {\n return this.schemas[urn];\n};\n\n/**\n * Validates instance against the provided schema\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {Array}\n */\nValidator.prototype.validate = function validate (instance, schema, options, ctx) {\n if (!options) {\n options = {};\n }\n var propertyName = options.propertyName || 'instance';\n // This will work so long as the function at uri.resolve() will resolve a relative URI to a relative URI\n var base = urilib.resolve(options.base||anonymousBase, schema.id||'');\n if(!ctx){\n ctx = new SchemaContext(schema, options, propertyName, base, Object.create(this.schemas));\n if (!ctx.schemas[base]) {\n ctx.schemas[base] = schema;\n }\n var found = scanSchema(base, schema);\n for(var n in found.id){\n var sch = found.id[n];\n ctx.schemas[n] = sch;\n }\n }\n if (schema) {\n var result = this.validateSchema(instance, schema, options, ctx);\n if (!result) {\n throw new Error('Result undefined');\n }\n return result;\n }\n throw new SchemaError('no schema specified', schema);\n};\n\n/**\n* @param Object schema\n* @return mixed schema uri or false\n*/\nfunction shouldResolve(schema) {\n var ref = (typeof schema === 'string') ? schema : schema.$ref;\n if (typeof ref=='string') return ref;\n return false;\n}\n\n/**\n * Validates an instance against the schema (the actual work horse)\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @private\n * @return {ValidatorResult}\n */\nValidator.prototype.validateSchema = function validateSchema (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n // Support for the true/false schemas\n if(typeof schema==='boolean') {\n if(schema===true){\n // `true` is always valid\n schema = {};\n }else if(schema===false){\n // `false` is always invalid\n schema = {type: []};\n }\n }else if(!schema){\n // This might be a string\n throw new Error(\"schema is undefined\");\n }\n\n if (schema['extends']) {\n if (schema['extends'] instanceof Array) {\n var schemaobj = {schema: schema, ctx: ctx};\n schema['extends'].forEach(this.schemaTraverser.bind(this, schemaobj));\n schema = schemaobj.schema;\n schemaobj.schema = null;\n schemaobj.ctx = null;\n schemaobj = null;\n } else {\n schema = helpers.deepMerge(schema, this.superResolve(schema['extends'], ctx));\n }\n }\n\n // If passed a string argument, load that schema URI\n var switchSchema;\n if (switchSchema = shouldResolve(schema)) {\n var resolved = this.resolve(schema, switchSchema, ctx);\n var subctx = new SchemaContext(resolved.subschema, options, ctx.propertyPath, resolved.switchSchema, ctx.schemas);\n return this.validateSchema(instance, resolved.subschema, options, subctx);\n }\n\n var skipAttributes = options && options.skipAttributes || [];\n // Validate each schema attribute against the instance\n for (var key in schema) {\n if (!attribute.ignoreProperties[key] && skipAttributes.indexOf(key) < 0) {\n var validatorErr = null;\n var validator = this.attributes[key];\n if (validator) {\n validatorErr = validator.call(this, instance, schema, options, ctx);\n } else if (options.allowUnknownAttributes === false) {\n // This represents an error with the schema itself, not an invalid instance\n throw new SchemaError(\"Unsupported attribute: \" + key, schema);\n }\n if (validatorErr) {\n result.importErrors(validatorErr);\n }\n }\n }\n\n if (typeof options.rewrite == 'function') {\n var value = options.rewrite.call(this, instance, schema, options, ctx);\n result.instance = value;\n }\n return result;\n};\n\n/**\n* @private\n* @param Object schema\n* @param SchemaContext ctx\n* @returns Object schema or resolved schema\n*/\nValidator.prototype.schemaTraverser = function schemaTraverser (schemaobj, s) {\n schemaobj.schema = helpers.deepMerge(schemaobj.schema, this.superResolve(s, schemaobj.ctx));\n}\n\n/**\n* @private\n* @param Object schema\n* @param SchemaContext ctx\n* @returns Object schema or resolved schema\n*/\nValidator.prototype.superResolve = function superResolve (schema, ctx) {\n var ref;\n if(ref = shouldResolve(schema)) {\n return this.resolve(schema, ref, ctx).subschema;\n }\n return schema;\n}\n\n/**\n* @private\n* @param Object schema\n* @param Object switchSchema\n* @param SchemaContext ctx\n* @return Object resolved schemas {subschema:String, switchSchema: String}\n* @throws SchemaError\n*/\nValidator.prototype.resolve = function resolve (schema, switchSchema, ctx) {\n switchSchema = ctx.resolve(switchSchema);\n // First see if the schema exists under the provided URI\n if (ctx.schemas[switchSchema]) {\n return {subschema: ctx.schemas[switchSchema], switchSchema: switchSchema};\n }\n // Else try walking the property pointer\n var parsed = urilib.parse(switchSchema);\n var fragment = parsed && parsed.hash;\n var document = fragment && fragment.length && switchSchema.substr(0, switchSchema.length - fragment.length);\n if (!document || !ctx.schemas[document]) {\n throw new SchemaError(\"no such schema <\" + switchSchema + \">\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance == 'number' && isFinite(instance);\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.array = function testArray (instance) {\n return Array.isArray(instance);\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance) === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n", "/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n", "'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n", "'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\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// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\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 stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n", "'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'exclusiveMinimum': true,\n 'exclusiveMaximum': true,\n 'additionalItems': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = Array.isArray(schema.type) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n return v.id && ('<' + v.id + '>') || (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchemaNoThrow(instance, options, ctx, callback, schema){\n var throwError = options.throwError;\n options.throwError = false;\n var res = this.validateSchema(instance, schema, options, ctx);\n options.throwError = throwError;\n\n if (! res.valid && callback instanceof Function) {\n callback(res);\n }\n return res.valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n if (!Array.isArray(schema.anyOf)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res){inner.importErrors(res);}\n ))) {\n var list = schema.anyOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.allOf)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var msg = (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.oneOf)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res) {inner.importErrors(res);}\n ) ).length;\n var list = schema.oneOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, properties[property], options, ctx);\n }\n\n var prop = Object.hasOwnProperty.call(instance, property) ? instance[property] : undefined;\n var res = this.validateSchema(prop, properties[property], options, ctx.makeChild(properties[property], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existance tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if(!this.types.object(instance)) return;\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"additionalProperty \" + JSON.stringify(property) + \" exists in instance when not allowed\",\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, additionalProperties, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var expr = new RegExp(pattern);\n if (!expr.test(property)) {\n continue;\n }\n test = false;\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, patternProperties[pattern], options, ctx);\n }\n\n var res = this.validateSchema(instance[property], patternProperties[pattern], options, ctx.makeChild(patternProperties[pattern], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n })\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (!schema.items) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n instance.every(function (value, i) {\n var items = Array.isArray(schema.items) ? (schema.items[i] || schema.additionalItems) : schema.items;\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = true;\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n valid = instance > schema.minimum;\n } else {\n valid = instance >= schema.minimum;\n }\n if (!valid) {\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must have a minimum value of \" + schema.minimum,\n });\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid;\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n valid = instance < schema.maximum;\n } else {\n valid = instance <= schema.maximum;\n }\n if (!valid) {\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must have a maximum value of \" + schema.maximum,\n });\n }\n return result;\n};\n\n/**\n * Perform validation for multipleOf and divisibleBy, which are essentially the same.\n * @param instance\n * @param schema\n * @param validationType\n * @param errorMessage\n * @returns {String|null}\n */\nvar validateMultipleOfOrDivisbleBy = function validateMultipleOfOrDivisbleBy (instance, schema, options, ctx, validationType, errorMessage) {\n if (!this.types.number(instance)) return;\n\n var validationArgument = schema[validationType];\n if (validationArgument == 0) {\n throw new SchemaError(validationType + \" cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n var instanceDecimals = helpers.getDecimalPlaces(instance);\n var divisorDecimals = helpers.getDecimalPlaces(validationArgument);\n\n var maxDecimals = Math.max(instanceDecimals , divisorDecimals);\n var multiplier = Math.pow(10, maxDecimals);\n\n if (Math.round(instance * multiplier) % Math.round(validationArgument * multiplier) !== 0) {\n result.addError({\n name: validationType,\n argument: validationArgument,\n message: errorMessage + JSON.stringify(validationArgument)\n });\n }\n\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"multipleOf\", \"is not a multiple of (divisible by) \");\n};\n\n/**\n * Validates multipleOf when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"divisibleBy\", \"is not divisible by (multiple of) \");\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n // A boolean form is implemented for reverse-compatability with schemas written against older drafts\n result.addError({\n name: 'required',\n message: \"is required\"\n });\n } else if (this.types.object(instance) && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(instance[n]===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.match(schema.pattern)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern.toString()),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format or a custom\n * format.\n * The following formats are supported for string types:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (instance===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!result.disableFormat && !helpers.isFormat(instance, schema.format, this)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n // TODO if this was already computed in \"minLength\", use that value instead of re-computing\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Validates that every item in an instance array is unique, when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n function testArrays (v, i, a) {\n for (var j = i + 1; j < a.length; j++) if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n return true;\n }\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (Array.isArray(dep)) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema['enum'])) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].map(String).join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance exactly matches a given value\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['const'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.deepCompareStrict(schema['const'], instance)) {\n result.addError({\n name: 'const',\n argument: schema['const'],\n message: \"does not exactly match expected constant: \" + schema['const'],\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!Array.isArray(notTypes)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var schemaId = type && type.id && ('<' + type.id + '>') || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* Active `debug` instances.\n\t*/\n\tcreateDebug.instances = [];\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.enabled = createDebug.enabled(namespace);\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = selectColor(namespace);\n\t\tdebug.destroy = destroy;\n\t\tdebug.extend = extend;\n\t\t// Debug.formatArgs = formatArgs;\n\t\t// debug.rawLog = rawLog;\n\n\t\t// env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\tcreateDebug.instances.push(debug);\n\n\t\treturn debug;\n\t}\n\n\tfunction destroy() {\n\t\tconst index = createDebug.instances.indexOf(this);\n\t\tif (index !== -1) {\n\t\t\tcreateDebug.instances.splice(index, 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < createDebug.instances.length; i++) {\n\t\t\tconst instance = createDebug.instances[i];\n\t\t\tinstance.enabled = createDebug.enabled(instance.namespace);\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\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", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 */\nimport Debug from 'debug';\nimport * as utils from '../utils';\nimport { AdapterInterface } from './interface';\nimport { FsRequestOptions, FsResponse, FsHttpMethod } from '../types';\nimport { FsRequestError, FsRequestErrorCode } from '../error';\nimport { prepareData, parseResponse, parse as parseHeaders, combineURL } from './../helpers';\n\nconst debug = Debug('fs:request:xhr');\nconst CANCEL_CLEAR = `FsCleanMemory`;\n\nexport class XhrAdapter implements AdapterInterface {\n\n request(config: FsRequestOptions) {\n // if this option is unspecified set it by default\n if (typeof config.filestackHeaders === 'undefined') {\n config.filestackHeaders = true;\n }\n\n config = prepareData(config);\n config.headers = config.headers || {};\n\n let { data, headers } = config;\n\n // if data is type of form let browser to set proper content type\n if (utils.isFormData(data)) {\n delete headers['Content-Type'];\n }\n\n let request = new XMLHttpRequest();\n\n if (config.blobResponse) {\n request.responseType = 'blob';\n }\n\n // HTTP basic authentication\n if (config.auth) {\n if (!config.auth.username || config.auth.username.length === 0 || !config.auth.password || config.auth.password.length === 0) {\n return Promise.reject(new FsRequestError(`Basic auth: username and password are required ${config.auth}`, config));\n }\n\n headers.Authorization = 'Basic ' + btoa(unescape(encodeURIComponent(`${config.auth.username}:${config.auth.password}`)));\n debug('Set request authorization to %s', config.auth.username + config.auth.password);\n }\n\n let url = config.url.trim();\n\n if (!/^http(s)?:\\/\\//.test(url)) {\n url = `https://${url}`;\n }\n\n url = combineURL(url, config.params);\n\n debug('Starting request to %s with options %O', url, config);\n\n request.open(config.method.toUpperCase(), url, true);\n\n request.timeout = config.timeout;\n\n return new Promise<FsResponse>((resolve, reject) => {\n let cancelListener;\n\n if (config.cancelToken) {\n cancelListener = (reason) => {\n /* istanbul ignore next: if request is done cancel token should not throw any error */\n if (request) {\n request.abort();\n request = null;\n }\n\n debug('Request canceled by user %s, config: %O', reason, config);\n return reject(new FsRequestError(`Request aborted. Reason: ${reason}`, config, null, FsRequestErrorCode.ABORTED));\n };\n\n config.cancelToken.once('cancel', cancelListener);\n }\n\n request.onreadystatechange = async () => {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n if (request.status === 0 && !request.responseURL) {\n return;\n }\n\n // Prepare the response\n const responseHeaders = parseHeaders(request.getAllResponseHeaders());\n const responseData = request.response;\n\n let response: FsResponse = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n };\n\n request = null;\n response = await parseResponse(response);\n\n if (500 <= response.status && response.status <= 599) {\n // server error throw\n debug('Server error(5xx) - %O', response);\n return reject(new FsRequestError(`Server error ${url}`, config, response, FsRequestErrorCode.SERVER));\n } else if (400 <= response.status && response.status <= 499) {\n debug('Request error(4xx) - %O', response);\n return reject(new FsRequestError(`Request error ${url}`, config, response, FsRequestErrorCode.REQUEST));\n }\n\n // clear cancel token to avoid memory leak\n if (config.cancelToken) {\n config.cancelToken.removeListener('cancel', cancelListener);\n cancelListener = null;\n }\n\n return resolve(response);\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n /* istanbul ignore next: just to be sure that abort was not called twice */\n if (!request) {\n return;\n }\n\n request = null;\n reject(new FsRequestError('Request aborted', config, null, FsRequestErrorCode.ABORTED));\n };\n\n // Handle low level network errors\n request.onerror = function handleError(err) {\n request = null;\n debug('Request error! %O', err);\n reject(new FsRequestError('Network Error', config, null, FsRequestErrorCode.NETWORK));\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n request = null;\n debug('Request timed out. %O', config);\n reject(new FsRequestError('Request timeout', config, null, FsRequestErrorCode.TIMEOUT));\n };\n\n // Add headers to the request\n if ('setRequestHeader' in request && headers && Object.keys(headers).length) {\n for (let key in headers) {\n if (headers[key] === undefined) {\n continue;\n }\n\n debug('Set request header %s to %s', key, headers[key]);\n request.setRequestHeader(key, headers[key]);\n }\n }\n\n if (typeof config.onProgress === 'function' && [FsHttpMethod.POST, FsHttpMethod.PUT].indexOf(config.method) > -1) {\n /* istanbul ignore else: else path is just fallback to normal progress event */\n if (request.upload) {\n debug('Bind to upload progress event');\n request.upload.addEventListener('progress', config.onProgress);\n } else {\n debug('Bind to progress event');\n request.addEventListener('progress', config.onProgress);\n }\n }\n\n if (data === undefined) {\n data = null;\n }\n\n request.send(data);\n });\n }\n}\n", "'use strict';\n\nconst util = require('./util');\n\nconst convertToJson = function(node, options) {\n const jObj = {};\n\n //when no child node or attr is present\n if ((!node.child || util.isEmptyObject(node.child)) && (!node.attrsMap || util.isEmptyObject(node.attrsMap))) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n //otherwise create a textnode if node has some text\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n if(options.arrayMode === \"strict\"){\n jObj[options.textNodeName] = [ node.val ];\n }else{\n jObj[options.textNodeName] = node.val;\n }\n }\n }\n }\n\n util.merge(jObj, node.attrsMap, options.arrayMode);\n\n const keys = Object.keys(node.child);\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj[tagname] = [];\n for (var tag in node.child[tagname]) {\n jObj[tagname].push(convertToJson(node.child[tagname][tag], options));\n }\n } else {\n if(options.arrayMode === true){\n const result = convertToJson(node.child[tagname][0], options)\n if(typeof result === 'object')\n jObj[tagname] = [ result ];\n else\n jObj[tagname] = result;\n }else if(options.arrayMode === \"strict\"){\n jObj[tagname] = [convertToJson(node.child[tagname][0], options) ];\n }else{\n jObj[tagname] = convertToJson(node.child[tagname][0], options);\n }\n }\n }\n\n //add value\n return jObj;\n};\n\nexports.convertToJson = convertToJson;\n", "'use strict';\n\nmodule.exports = function(tagname, parent, val) {\n this.tagname = tagname;\n this.parent = parent;\n this.child = {}; //child tags\n this.attrsMap = {}; //attributes map\n this.val = val; //text only\n this.addChild = function(child) {\n if (Array.isArray(this.child[child.tagname])) {\n //already presents\n this.child[child.tagname].push(child);\n } else {\n this.child[child.tagname] = [child];\n }\n };\n};\n", "'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n};\n\nconst props = ['allowBooleanAttributes'];\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = util.buildOptions(options, defaultOptions, props);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/(<!DOCTYPE[\\s\\w\\\"\\.\\/\\-\\:]+(\\[.*\\])*\\s*>)/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n\n i++;\n if (xmlData[i] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) {\n return i;\n }\n } else if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (\n ;\n i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r';\n i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if(tagName.trim().length === 0) {\n msg = \"There is an unnecessary space between tag name and backward slash '</ ..'.\";\n }else{\n msg = `Tag '${tagName}' is an invalid name.`;\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', `Attributes for '${tagName}' have open quote.`, getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', `Closing tag '${tagName}' doesn't have proper closing.`, getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', `Closing tag '${tagName}' can't have attributes or invalid starting.`, getLineNumberForPosition(xmlData, i));\n } else {\n const otg = tags.pop();\n if (tagName !== otg) {\n return getErrorObject('InvalidTag', `Closing tag '${otg}' is expected inplace of '${tagName}'.`, getLineNumberForPosition(xmlData, i));\n }\n\n //when there are no more tags, we reached the root level.\n if(tags.length == 0)\n {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if(reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else {\n tags.push(tagName);\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', `char '&' is not expected.`, getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (xmlData[i] === ' ' || xmlData[i] === '\\t' || xmlData[i] === '\\n' || xmlData[i] === '\\r') {\n continue;\n }\n return getErrorObject('InvalidChar', `char '${xmlData[i]}' is not expected.`, getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', `Invalid '${JSON.stringify(tags, null, 4).replace(/\\r?\\n/g, '')}' found.`, 1);\n }\n\n return true;\n};\n\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n var start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n var tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n continue;\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return { value: attrStr, index: i, tagClosed: tagClosed };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', `Attribute '${matches[i][2]}' has no space in starting.`, getPositionFromMatch(attrStr, matches[i][0]))\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', `boolean attribute '${matches[i][2]}' is not allowed.`, getPositionFromMatch(attrStr, matches[i][0]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', `Attribute '${attrName}' is an invalid name.`, getPositionFromMatch(attrStr, matches[i][0]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', `Attribute '${attrName}' is repeated.`, getPositionFromMatch(attrStr, matches[i][0]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n//const startsWithXML = new RegExp(\"^[Xx][Mm][Ll]\");\n// startsWith = /^([a-zA-Z]|_)[\\w.\\-_:]*/;\n\nfunction validateTagName(tagname) {\n /*if(util.doesMatch(tagname,startsWithXML)) return false;\n else*/\n //return !tagname.toLowerCase().startsWith(\"xml\") || !util.doesNotMatch(tagname, regxTagName);\n return util.isName(tagname);\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n var lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return lines.length;\n}\n\n//this function returns the position of the last character of match within attrStr\nfunction getPositionFromMatch(attrStr, match) {\n return attrStr.indexOf(match) + match.length;\n}", "'use strict';\nconst char = function(a) {\n return String.fromCharCode(a);\n};\n\nconst chars = {\n nilChar: char(176),\n missingChar: char(201),\n nilPremitive: char(175),\n missingPremitive: char(200),\n\n emptyChar: char(178),\n emptyValue: char(177), //empty Premitive\n\n boundryChar: char(179),\n\n objStart: char(198),\n arrStart: char(204),\n arrayEnd: char(185),\n};\n\nconst charsArr = [\n chars.nilChar,\n chars.nilPremitive,\n chars.missingChar,\n chars.missingPremitive,\n chars.boundryChar,\n chars.emptyChar,\n chars.emptyValue,\n chars.arrayEnd,\n chars.objStart,\n chars.arrStart,\n];\n\nconst _e = function(node, e_schema, options) {\n if (typeof e_schema === 'string') {\n //premitive\n if (node && node[0] && node[0].val !== undefined) {\n return getValue(node[0].val, e_schema);\n } else {\n return getValue(node, e_schema);\n }\n } else {\n const hasValidData = hasData(node);\n if (hasValidData === true) {\n let str = '';\n if (Array.isArray(e_schema)) {\n //attributes can't be repeated. hence check in children tags only\n str += chars.arrStart;\n const itemSchema = e_schema[0];\n //var itemSchemaType = itemSchema;\n const arr_len = node.length;\n\n if (typeof itemSchema === 'string') {\n for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n const r = getValue(node[arr_i].val, itemSchema);\n str = processValue(str, r);\n }\n } else {\n for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n const r = _e(node[arr_i], itemSchema, options);\n str = processValue(str, r);\n }\n }\n str += chars.arrayEnd; //indicates that next item is not array item\n } else {\n //object\n str += chars.objStart;\n const keys = Object.keys(e_schema);\n if (Array.isArray(node)) {\n node = node[0];\n }\n for (let i in keys) {\n const key = keys[i];\n //a property defined in schema can be present either in attrsMap or children tags\n //options.textNodeName will not present in both maps, take it's value from val\n //options.attrNodeName will be present in attrsMap\n let r;\n if (!options.ignoreAttributes && node.attrsMap && node.attrsMap[key]) {\n r = _e(node.attrsMap[key], e_schema[key], options);\n } else if (key === options.textNodeName) {\n r = _e(node.val, e_schema[key], options);\n } else {\n r = _e(node.child[key], e_schema[key], options);\n }\n str = processValue(str, r);\n }\n }\n return str;\n } else {\n return hasValidData;\n }\n }\n};\n\nconst getValue = function(a /*, type*/) {\n switch (a) {\n case undefined:\n return chars.missingPremitive;\n case null:\n return chars.nilPremitive;\n case '':\n return chars.emptyValue;\n default:\n return a;\n }\n};\n\nconst processValue = function(str, r) {\n if (!isAppChar(r[0]) && !isAppChar(str[str.length - 1])) {\n str += chars.boundryChar;\n }\n return str + r;\n};\n\nconst isAppChar = function(ch) {\n return charsArr.indexOf(ch) !== -1;\n};\n\nfunction hasData(jObj) {\n if (jObj === undefined) {\n return chars.missingChar;\n } else if (jObj === null) {\n return chars.nilChar;\n } else if (\n jObj.child &&\n Object.keys(jObj.child).length === 0 &&\n (!jObj.attrsMap || Object.keys(jObj.attrsMap).length === 0)\n ) {\n return chars.emptyChar;\n } else {\n return true;\n }\n}\n\nconst x2j = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\n\nconst convert2nimn = function(node, e_schema, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n return _e(node, e_schema, options);\n};\n\nexports.convert2nimn = convert2nimn;\n", "'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst x2j = require('./xmlstr2xmlnode');\n\n//TODO: do it later\nconst convertToJsonString = function(node, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n\n options.indentBy = options.indentBy || '';\n return _cToJsonStr(node, options, 0);\n};\n\nconst _cToJsonStr = function(node, options, level) {\n let jObj = '{';\n\n //traver through all the children\n const keys = Object.keys(node.child);\n\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj += '\"' + tagname + '\" : [ ';\n for (var tag in node.child[tagname]) {\n jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';\n }\n jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last\n } else {\n jObj += '\"' + tagname + '\" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';\n }\n }\n util.merge(jObj, node.attrsMap);\n //add attrsMap as new children\n if (util.isEmptyObject(jObj)) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n jObj += '\"' + options.textNodeName + '\" : ' + stringval(node.val);\n }\n }\n }\n //add value\n if (jObj[jObj.length - 1] === ',') {\n jObj = jObj.substr(0, jObj.length - 2);\n }\n return jObj + '}';\n};\n\nfunction stringval(v) {\n if (v === true || v === false || !isNaN(v)) {\n return v;\n } else {\n return '\"' + v + '\"';\n }\n}\n\nfunction indentate(options, level) {\n return options.indentBy.repeat(level);\n}\n\nexports.convertToJsonString = convertToJsonString;\n", "'use strict';\n//parse Empty Node as self closing node\nconst buildOptions = require('./util').buildOptions;\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n format: false,\n indentBy: ' ',\n supressEmptyNode: false,\n tagValueProcessor: function(a) {\n return a;\n },\n attrValueProcessor: function(a) {\n return a;\n },\n};\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'cdataTagName',\n 'cdataPositionChar',\n 'format',\n 'indentBy',\n 'supressEmptyNode',\n 'tagValueProcessor',\n 'attrValueProcessor',\n];\n\nfunction Parser(options) {\n this.options = buildOptions(options, defaultOptions, props);\n if (this.options.ignoreAttributes || this.options.attrNodeName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n if (this.options.cdataTagName) {\n this.isCDATA = isCDATA;\n } else {\n this.isCDATA = function(/*a*/) {\n return false;\n };\n }\n this.replaceCDATAstr = replaceCDATAstr;\n this.replaceCDATAarr = replaceCDATAarr;\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n\n if (this.options.supressEmptyNode) {\n this.buildTextNode = buildEmptyTextNode;\n this.buildObjNode = buildEmptyObjNode;\n } else {\n this.buildTextNode = buildTextValNode;\n this.buildObjNode = buildObjectNode;\n }\n\n this.buildTextValNode = buildTextValNode;\n this.buildObjectNode = buildObjectNode;\n}\n\nParser.prototype.parse = function(jObj) {\n return this.j2x(jObj, 0).val;\n};\n\nParser.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n const keys = Object.keys(jObj);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n const key = keys[i];\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += ' ' + attr + '=\"' + this.options.attrValueProcessor('' + jObj[key]) + '\"';\n } else if (this.isCDATA(key)) {\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAstr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAstr('', jObj[key]);\n }\n } else {\n //tag value\n if (key === this.options.textNodeName) {\n if (jObj[this.options.cdataTagName]) {\n //value will added while processing cdata\n } else {\n val += this.options.tagValueProcessor('' + jObj[key]);\n }\n } else {\n val += this.buildTextNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n if (this.isCDATA(key)) {\n val += this.indentate(level);\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAarr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAarr('', jObj[key]);\n }\n } else {\n //nested nodes\n const arrLen = jObj[key].length;\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n const result = this.j2x(item, level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n } else {\n val += this.buildTextNode(item, key, '', level);\n }\n }\n }\n } else {\n //nested node\n if (this.options.attrNodeName && key === this.options.attrNodeName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += ' ' + Ks[j] + '=\"' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '\"';\n }\n } else {\n const result = this.j2x(jObj[key], level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nfunction replaceCDATAstr(str, cdata) {\n str = this.options.tagValueProcessor('' + str);\n if (this.options.cdataPositionChar === '' || str === '') {\n return str + '<![CDATA[' + cdata + ']]' + this.tagEndChar;\n } else {\n return str.replace(this.options.cdataPositionChar, '<![CDATA[' + cdata + ']]' + this.tagEndChar);\n }\n}\n\nfunction replaceCDATAarr(str, cdata) {\n str = this.options.tagValueProcessor('' + str);\n if (this.options.cdataPositionChar === '' || str === '') {\n return str + '<![CDATA[' + cdata.join(']]><![CDATA[') + ']]' + this.tagEndChar;\n } else {\n for (let v in cdata) {\n str = str.replace(this.options.cdataPositionChar, '<![CDATA[' + cdata[v] + ']]>');\n }\n return str + this.newLine;\n }\n}\n\nfunction buildObjectNode(val, key, attrStr, level) {\n if (attrStr && !val.includes('<')) {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n '>' +\n val +\n //+ this.newLine\n // + this.indentate(level)\n '</' +\n key +\n this.tagEndChar\n );\n } else {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n this.tagEndChar +\n val +\n //+ this.newLine\n this.indentate(level) +\n '</' +\n key +\n this.tagEndChar\n );\n }\n}\n\nfunction buildEmptyObjNode(val, key, attrStr, level) {\n if (val !== '') {\n return this.buildObjectNode(val, key, attrStr, level);\n } else {\n return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n //+ this.newLine\n }\n}\n\nfunction buildTextValNode(val, key, attrStr, level) {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n '>' +\n this.options.tagValueProcessor(val) +\n '</' +\n key +\n this.tagEndChar\n );\n}\n\nfunction buildEmptyTextNode(val, key, attrStr, level) {\n if (val !== '') {\n return this.buildTextValNode(val, key, attrStr, level);\n } else {\n return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n }\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix)) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\n\nfunction isCDATA(name) {\n return name === this.options.cdataTagName;\n}\n\n//formatting\n//indentation\n//\\n after each closing or self closing tag\n\nmodule.exports = Parser;\n", "'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", "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 { Session as SessionInterface, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, 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 = Date.now();\n public started: number = Date.now();\n public duration: number = 0;\n public status: SessionStatus = SessionStatus.Ok;\n public environment?: string;\n public ipAddress?: string;\n public init: boolean = true;\n\n constructor(context?: Omit<SessionContext, 'started' | 'status'>) {\n if (context) {\n this.update(context);\n }\n }\n\n /** JSDoc */\n // eslint-disable-next-line complexity\n update(context: SessionContext = {}): void {\n if (context.user) {\n if (context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n\n if (!context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n this.timestamp = context.timestamp || Date.now();\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 (context.did) {\n this.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (typeof context.duration === 'number') {\n this.duration = context.duration;\n } else {\n this.duration = this.timestamp - this.started;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (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 close(status?: Exclude<SessionStatus, SessionStatus.Ok>): void {\n if (status) {\n this.update({ status });\n } else if (this.status === SessionStatus.Ok) {\n this.update({ status: SessionStatus.Exited });\n } else {\n this.update();\n }\n }\n\n /** JSDoc */\n 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 started: new Date(this.started).toISOString(),\n timestamp: new Date(this.timestamp).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: dropUndefinedKeys({\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n }),\n });\n }\n}\n", " \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n", "const MODULE_PREFIX = 'fs-loader-';\nconst globalHolder = {};\nconst initializeGlobalNamespace = () => {\n let holder;\n // if there is no window obj use nodejs global lib variable\n if (typeof window === 'undefined') {\n holder = globalHolder;\n }\n else {\n holder = window;\n }\n // @ts-ignore\n let namespace = holder.filestackInternals;\n if (!namespace) {\n namespace = {\n modules: {},\n };\n holder.filestackInternals = namespace;\n }\n if (!namespace.modules) {\n namespace.modules = {};\n }\n return namespace;\n};\nconst filestackInternals = initializeGlobalNamespace();\nconst modules = filestackInternals && filestackInternals.modules;\n/**\n * Remove listeners (browser compatible)\n *\n * @param node\n * @param func\n * @param name\n */\nconst removeListener = (node, func, name) => {\n if (node.detachEvent) {\n node.detachEvent('onreadystatechange', func);\n }\n else {\n node.removeEventListener(name, func, false);\n }\n};\n/**\n * Load multiple modules\n *\n * @param {*} modules\n */\nexport const loadModules = (modulesList) => Promise.all(modulesList.map(({ id, url }) => loadModule(id, url))).then((res) => {\n const toReturn = {};\n res.forEach((mod, idx) => {\n const el = modulesList[idx];\n toReturn[el.id] = mod;\n });\n return toReturn;\n});\n/**\n * Load single module from url with given id\n *\n * @param {*} id - module id\n * @param {*} url\n */\nexport const loadModule = (id, url) => {\n if (typeof window === 'undefined') {\n return Promise.reject(new Error('Load module is working only on browser env'));\n }\n if (!id) {\n throw new Error('Module id is required');\n }\n id = MODULE_PREFIX + id;\n let moduleDefinition = modules[id];\n if (!moduleDefinition) {\n modules[id] = {};\n moduleDefinition = modules[id];\n }\n if (moduleDefinition.instance) {\n return Promise.resolve(moduleDefinition.instance);\n }\n if (moduleDefinition.promise) {\n return moduleDefinition.promise;\n }\n return moduleDefinition.promise = new Promise((resolve, reject) => {\n const readyStateChange = (evt) => {\n if (evt.type === 'load' || (/^(complete|loaded)$/.test((evt.currentTarget || evt.srcElement).readyState))) {\n const node = evt.currentTarget || evt.srcElement;\n removeListener(node, readyStateChange, 'load');\n removeListener(node, reject, 'error');\n // slow dow checking if module is loaded to ensure that script that register module is called\n setTimeout(() => resolve(modules[id] ? modules[id].instance : undefined), 10);\n }\n };\n const script = document.createElement('script');\n script.id = id;\n // @ts-ignore fix for IE\n if (script.attachEvent && !(script.attachEvent.toString && script.attachEvent.toString().indexOf('[native code') < 0)) {\n // @ts-ignore\n script.attachEvent('onreadystatechange', readyStateChange);\n }\n else {\n script.addEventListener('load', readyStateChange, false);\n script.addEventListener('onerror', reject, false);\n }\n script.setAttribute('crossorigin', 'anonymous');\n script.setAttribute('charset', 'utf-8');\n script.setAttribute('async', 'true');\n script.src = url;\n document.body.appendChild(script);\n });\n};\n/**\n * Register that module is ready\n *\n * @param {string} id\n * @param {any} instance\n * @param {any} metadata - additional module metadata like version\n */\nexport const registerModule = (id, instance, metadata) => {\n // loader not working on nodejs envs\n if (typeof window === 'undefined') {\n return;\n }\n if (!id) {\n throw new Error('Module id is required');\n }\n if (!modules) {\n throw new Error('Loader is not initialized');\n }\n id = MODULE_PREFIX + id;\n if (modules[id]) {\n modules[id] = { instance, metadata };\n }\n};\n/**\n * Load external css from given url\n *\n * @param {*} url\n */\nexport const loadCss = (url) => {\n const alreadyAddedThisTag = document.querySelector(`link[href=\"${url}\"]`);\n if (alreadyAddedThisTag !== null) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n const head = document.getElementsByTagName('head')[0];\n const link = document.createElement('link');\n const loaded = () => {\n resolve();\n link.removeEventListener('load', loaded);\n };\n link.rel = 'stylesheet';\n link.href = url;\n link.addEventListener('load', loaded);\n head.appendChild(link);\n });\n};\n/**\n * Enum just for unify filestack module names\n */\nexport var FILESTACK_MODULES;\n(function (FILESTACK_MODULES) {\n FILESTACK_MODULES[\"FILESTACK_SDK\"] = \"filestack-sdk\";\n FILESTACK_MODULES[\"TRANSFORMS_UI\"] = \"transforms-ui\";\n FILESTACK_MODULES[\"PICKER\"] = \"picker\";\n})(FILESTACK_MODULES || (FILESTACK_MODULES = {}));\n;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDO0FBQ25DLE1BQU0sWUFBWSxHQUFRLEVBQUUsQ0FBQztBQWU3QixNQUFNLHlCQUF5QixHQUFHLEdBQUcsRUFBRTtJQUNyQyxJQUFJLE1BQVUsQ0FBQztJQUVmLDJEQUEyRDtJQUMzRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtRQUNqQyxNQUFNLEdBQUcsWUFBWSxDQUFDO0tBQ3ZCO1NBQU07UUFDTCxNQUFNLEdBQUcsTUFBTSxDQUFBO0tBQ2hCO0lBRUQsYUFBYTtJQUNiLElBQUksU0FBUyxHQUFjLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztJQUVyRCxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2QsU0FBUyxHQUFHO1lBQ1YsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBRUYsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztLQUN2QztJQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1FBQ3RCLFNBQVMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0tBQ3hCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO0FBQ3ZELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztBQUVqRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFJLEVBQUU7SUFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDOUM7U0FBTTtRQUNMLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzdDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQzFILE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUVwQixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN4QixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUFVLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDcEQsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7UUFDakMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUMsQ0FBQztLQUNoRjtJQUVELElBQUksQ0FBQyxFQUFFLEVBQUU7UUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUE7S0FDekM7SUFFRCxFQUFFLEdBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUN6QixJQUFJLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVuQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDckIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNqQixnQkFBZ0IsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDaEM7SUFFRCxJQUFJLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtRQUM3QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkQ7SUFFRCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtRQUM1QixPQUFPLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztLQUNqQztJQUVELE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNwQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtnQkFDekcsTUFBTSxJQUFJLEdBQUksR0FBRyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUVsRCxjQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFFdEMsOEZBQThGO2dCQUM5RixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDL0U7UUFDSCxDQUFDLENBQUE7UUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhELE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRWYsd0JBQXdCO1FBQ3hCLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDckgsYUFBYTtZQUNiLE1BQU0sQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUM1RDthQUFNO1lBQ0wsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNuRDtRQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRWpCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBVSxFQUFFLFFBQWEsRUFBRSxRQUFjLEVBQUUsRUFBRTtJQUMxRSxvQ0FBb0M7SUFDcEMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7UUFDakMsT0FBTztLQUNSO0lBRUQsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtLQUN6QztJQUVELElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUE7S0FDN0M7SUFFRCxFQUFFLEdBQUcsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUV4QixJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNmLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQTtLQUNyQztBQUNILENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUM3QixNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFFLElBQUksbUJBQW1CLEtBQUssSUFBSSxFQUFFO1FBQ2hDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzFCO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNsQixPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQzNCLG9EQUErQixDQUFBO0lBQy9CLG9EQUErQixDQUFBO0lBQy9CLHNDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSTVCO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE1PRFVMRV9QUkVGSVggPSAnZnMtbG9hZGVyLSc7XG5jb25zdCBnbG9iYWxIb2xkZXI6IGFueSA9IHt9O1xuXG5leHBvcnQgdHlwZSBNb2R1bGVEZWYgPSB7XG4gIHByb21pc2U/OiBQcm9taXNlPGFueT5cbiAgcmVzb2x2ZVByb21pc2U/OiBhbnk7XG4gIGluc3RhbmNlPzogYW55O1xuICBtZXRhZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgTmFtZXNwYWNlID0ge1xuICAgIG1vZHVsZXM6IHtcbiAgICAgW2tleTogc3RyaW5nXTogTW9kdWxlRGVmXG4gICAgfVxufTtcblxuY29uc3QgaW5pdGlhbGl6ZUdsb2JhbE5hbWVzcGFjZSA9ICgpID0+IHtcbiAgbGV0IGhvbGRlcjphbnk7XG5cbiAgLy8gaWYgdGhlcmUgaXMgbm8gd2luZG93IG9iaiB1c2Ugbm9kZWpzIGdsb2JhbCBsaWIgdmFyaWFibGVcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgaG9sZGVyID0gZ2xvYmFsSG9sZGVyO1xuICB9IGVsc2Uge1xuICAgIGhvbGRlciA9IHdpbmRvd1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgbmFtZXNwYWNlOiBOYW1lc3BhY2UgPSBob2xkZXIuZmlsZXN0YWNrSW50ZXJuYWxzO1xuXG4gIGlmICghbmFtZXNwYWNlKSB7XG4gICAgbmFtZXNwYWNlID0ge1xuICAgICAgbW9kdWxlczoge30sXG4gICAgfTtcblxuICAgIGhvbGRlci5maWxlc3RhY2tJbnRlcm5hbHMgPSBuYW1lc3BhY2U7XG4gIH1cblxuICBpZiAoIW5hbWVzcGFjZS5tb2R1bGVzKSB7XG4gICAgbmFtZXNwYWNlLm1vZHVsZXMgPSB7fTtcbiAgfVxuICBcbiAgcmV0dXJuIG5hbWVzcGFjZTtcbn07XG5cbmNvbnN0IGZpbGVzdGFja0ludGVybmFscyA9IGluaXRpYWxpemVHbG9iYWxOYW1lc3BhY2UoKTtcbmNvbnN0IG1vZHVsZXMgPSBmaWxlc3RhY2tJbnRlcm5hbHMgJiYgZmlsZXN0YWNrSW50ZXJuYWxzLm1vZHVsZXM7XG5cbi8qKlxuICogUmVtb3ZlIGxpc3RlbmVycyAoYnJvd3NlciBjb21wYXRpYmxlKVxuICogXG4gKiBAcGFyYW0gbm9kZSBcbiAqIEBwYXJhbSBmdW5jIFxuICogQHBhcmFtIG5hbWUgXG4gKi9cbmNvbnN0IHJlbW92ZUxpc3RlbmVyID0gKG5vZGUsIGZ1bmMsIG5hbWUsICkgPT4ge1xuICBpZiAobm9kZS5kZXRhY2hFdmVudCkge1xuICAgIG5vZGUuZGV0YWNoRXZlbnQoJ29ucmVhZHlzdGF0ZWNoYW5nZScsIGZ1bmMpO1xuICB9IGVsc2Uge1xuICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jLCBmYWxzZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIG11bHRpcGxlIG1vZHVsZXNcbiAqIFxuICogQHBhcmFtIHsqfSBtb2R1bGVzIFxuICovXG5leHBvcnQgY29uc3QgbG9hZE1vZHVsZXMgPSAobW9kdWxlc0xpc3QpID0+IFByb21pc2UuYWxsKG1vZHVsZXNMaXN0Lm1hcCgoeyBpZCwgdXJsIH0pID0+IGxvYWRNb2R1bGUoaWQsIHVybCkpKS50aGVuKChyZXMpID0+IHtcbiAgY29uc3QgdG9SZXR1cm4gPSB7fTtcblxuICByZXMuZm9yRWFjaCgobW9kLCBpZHgpID0+IHtcbiAgICBjb25zdCBlbCA9IG1vZHVsZXNMaXN0W2lkeF07XG4gICAgdG9SZXR1cm5bZWwuaWRdID0gbW9kO1xuICB9KTtcblxuICByZXR1cm4gdG9SZXR1cm47XG59KTtcblxuLyoqXG4gKiBMb2FkIHNpbmdsZSBtb2R1bGUgZnJvbSB1cmwgd2l0aCBnaXZlbiBpZFxuICpcbiAqIEBwYXJhbSB7Kn0gaWQgLSBtb2R1bGUgaWQgXG4gKiBAcGFyYW0geyp9IHVybFxuICovXG5leHBvcnQgY29uc3QgbG9hZE1vZHVsZSA9IChpZDogc3RyaW5nLCB1cmw6IHN0cmluZykgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdMb2FkIG1vZHVsZSBpcyB3b3JraW5nIG9ubHkgb24gYnJvd3NlciBlbnYnKSk7XG4gIH1cblxuICBpZiAoIWlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNb2R1bGUgaWQgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgaWQgPSAgTU9EVUxFX1BSRUZJWCArIGlkO1xuICBsZXQgbW9kdWxlRGVmaW5pdGlvbiA9IG1vZHVsZXNbaWRdO1xuXG4gIGlmICghbW9kdWxlRGVmaW5pdGlvbikge1xuICAgIG1vZHVsZXNbaWRdID0ge307XG4gICAgbW9kdWxlRGVmaW5pdGlvbiA9IG1vZHVsZXNbaWRdO1xuICB9XG5cbiAgaWYgKG1vZHVsZURlZmluaXRpb24uaW5zdGFuY2UpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1vZHVsZURlZmluaXRpb24uaW5zdGFuY2UpO1xuICB9XG5cbiAgaWYgKG1vZHVsZURlZmluaXRpb24ucHJvbWlzZSkge1xuICAgIHJldHVybiBtb2R1bGVEZWZpbml0aW9uLnByb21pc2U7XG4gIH1cblxuICByZXR1cm4gbW9kdWxlRGVmaW5pdGlvbi5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlYWR5U3RhdGVDaGFuZ2UgPSAoZXZ0OiBhbnkpID0+IHtcbiAgICAgIGlmIChldnQudHlwZSA9PT0gJ2xvYWQnIHx8ICgvXihjb21wbGV0ZXxsb2FkZWQpJC8udGVzdCgoZXZ0LmN1cnJlbnRUYXJnZXQgfHwgZXZ0LnNyY0VsZW1lbnQpLnJlYWR5U3RhdGUpKSkge1xuICAgICAgICBjb25zdCBub2RlID0gIGV2dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC5zcmNFbGVtZW50O1xuXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyKG5vZGUsIHJlYWR5U3RhdGVDaGFuZ2UsICdsb2FkJyk7XG4gICAgICAgIHJlbW92ZUxpc3RlbmVyKG5vZGUsIHJlamVjdCwgJ2Vycm9yJyk7XG5cbiAgICAgICAgLy8gc2xvdyBkb3cgY2hlY2tpbmcgaWYgbW9kdWxlIGlzIGxvYWRlZCB0byBlbnN1cmUgdGhhdCBzY3JpcHQgdGhhdCAgcmVnaXN0ZXIgbW9kdWxlIGlzIGNhbGxlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUobW9kdWxlc1tpZF0gPyBtb2R1bGVzW2lkXS5pbnN0YW5jZSA6IHVuZGVmaW5lZCksIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBcbiAgICBzY3JpcHQuaWQgPSBpZDtcblxuICAgIC8vIEB0cy1pZ25vcmUgZml4IGZvciBJRVxuICAgIGlmIChzY3JpcHQuYXR0YWNoRXZlbnQgJiYgIShzY3JpcHQuYXR0YWNoRXZlbnQudG9TdHJpbmcgJiYgc2NyaXB0LmF0dGFjaEV2ZW50LnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlJykgPCAwKSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyaXB0LmF0dGFjaEV2ZW50KCdvbnJlYWR5c3RhdGVjaGFuZ2UnLCByZWFkeVN0YXRlQ2hhbmdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCByZWFkeVN0YXRlQ2hhbmdlLCBmYWxzZSk7XG4gICAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignb25lcnJvcicsIHJlamVjdCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2Nyb3Nzb3JpZ2luJywgJ2Fub255bW91cycpO1xuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2NoYXJzZXQnLCAndXRmLTgnKTtcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdhc3luYycsICd0cnVlJyk7XG5cbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhhdCBtb2R1bGUgaXMgcmVhZHlcbiAqIFxuICogQHBhcmFtIHtzdHJpbmd9IGlkIFxuICogQHBhcmFtIHthbnl9IGluc3RhbmNlIFxuICogQHBhcmFtIHthbnl9IG1ldGFkYXRhIC0gYWRkaXRpb25hbCBtb2R1bGUgbWV0YWRhdGEgbGlrZSB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3Rlck1vZHVsZSA9IChpZDogc3RyaW5nLCBpbnN0YW5jZTogYW55LCBtZXRhZGF0YT86IGFueSkgPT4ge1xuICAvLyBsb2FkZXIgbm90IHdvcmtpbmcgb24gbm9kZWpzIGVudnNcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTW9kdWxlIGlkIGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICghbW9kdWxlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9hZGVyIGlzIG5vdCBpbml0aWFsaXplZCcpXG4gIH1cblxuICBpZCA9IE1PRFVMRV9QUkVGSVggKyBpZDtcblxuICBpZiAobW9kdWxlc1tpZF0pIHtcbiAgICBtb2R1bGVzW2lkXSA9IHsgaW5zdGFuY2UsIG1ldGFkYXRhIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMb2FkIGV4dGVybmFsIGNzcyBmcm9tIGdpdmVuIHVybFxuICogXG4gKiBAcGFyYW0geyp9IHVybCBcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRDc3MgPSAodXJsKSA9PiB7XG4gIGNvbnN0IGFscmVhZHlBZGRlZFRoaXNUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBsaW5rW2hyZWY9XCIke3VybH1cIl1gKTtcbiAgaWYgKGFscmVhZHlBZGRlZFRoaXNUYWcgIT09IG51bGwpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuXG4gICAgY29uc3QgbG9hZGVkID0gKCkgPT4ge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgICAgbGluay5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgbG9hZGVkKTtcbiAgICB9O1xuXG4gICAgbGluay5yZWwgPSAnc3R5bGVzaGVldCc7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRlZCk7XG4gICAgaGVhZC5hcHBlbmRDaGlsZChsaW5rKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEVudW0ganVzdCBmb3IgdW5pZnkgZmlsZXN0YWNrIG1vZHVsZSBuYW1lc1xuICovXG5leHBvcnQgZW51bSBGSUxFU1RBQ0tfTU9EVUxFUyB7XG4gIEZJTEVTVEFDS19TREsgPSAnZmlsZXN0YWNrLXNkaycsXG4gIFRSQU5TRk9STVNfVUkgPSAndHJhbnNmb3Jtcy11aScsXG4gIFBJQ0tFUiA9ICdwaWNrZXInLFxufTtcbiJdfQ==", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nexport var getSecurity = function (policyOptions, appSecret) {\n throw new Error('getSecurity is only supported in nodejs');\n};\nexport var validateWebhookSignature = function (secret, rawBody, toCompare) {\n throw new Error('validateWebhookSignature is only supported in nodejs');\n};\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpL3NlY3VyaXR5LmJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBS0gsTUFBTSxDQUFDLElBQU0sV0FBVyxHQUFHLFVBQUMsYUFBOEIsRUFBRSxTQUFpQjtJQUMzRSxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7QUFDN0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLElBQU0sd0JBQXdCLEdBQUcsVUFBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLFNBQWlDO0lBQ3pHLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMiLCJmaWxlIjoibGliL2FwaS9zZWN1cml0eS5icm93c2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOCBieSBGaWxlc3RhY2suXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgU2VjdXJpdHkgfSBmcm9tICcuLy4uL2NsaWVudCc7XG5pbXBvcnQgeyBTZWN1cml0eU9wdGlvbnMsIFdlYmhvb2tWYWxpZGF0ZVBheWxvYWQgfSBmcm9tICcuL3NlY3VyaXR5JztcblxuZXhwb3J0IGNvbnN0IGdldFNlY3VyaXR5ID0gKHBvbGljeU9wdGlvbnM6IFNlY3VyaXR5T3B0aW9ucywgYXBwU2VjcmV0OiBzdHJpbmcpOiBTZWN1cml0eSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcignZ2V0U2VjdXJpdHkgaXMgb25seSBzdXBwb3J0ZWQgaW4gbm9kZWpzJyk7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVXZWJob29rU2lnbmF0dXJlID0gKHNlY3JldDogc3RyaW5nLCByYXdCb2R5OiBzdHJpbmcsIHRvQ29tcGFyZTogV2ViaG9va1ZhbGlkYXRlUGF5bG9hZCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3ZhbGlkYXRlV2ViaG9va1NpZ25hdHVyZSBpcyBvbmx5IHN1cHBvcnRlZCBpbiBub2RlanMnKTtcbn07XG4iXX0=\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { consoleSandbox, getGlobalObject } from './misc';\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\n/** JSDoc */\nclass Logger {\n /** JSDoc */\n private _enabled: boolean;\n\n /** JSDoc */\n public constructor() {\n this._enabled = false;\n }\n\n /** JSDoc */\n public disable(): void {\n this._enabled = false;\n }\n\n /** JSDoc */\n public enable(): void {\n this._enabled = true;\n }\n\n /** JSDoc */\n public log(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.log(`${PREFIX}[Log]: ${args.join(' ')}`);\n });\n }\n\n /** JSDoc */\n public warn(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`);\n });\n }\n\n /** JSDoc */\n public error(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.error(`${PREFIX}[Error]: ${args.join(' ')}`);\n });\n }\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nconst logger = (global.__SENTRY__.logger as Logger) || (global.__SENTRY__.logger = new Logger());\n\nexport { logger };\n", "/* 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 */\nenum States {\n /** Pending */\n PENDING = 'PENDING',\n /** Resolved / OK */\n RESOLVED = 'RESOLVED',\n /** Rejected / Error */\n REJECTED = 'REJECTED',\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 = States.PENDING;\n private _handlers: Array<{\n done: boolean;\n onfulfilled?: ((value: T) => T | PromiseLike<T>) | null;\n onrejected?: ((reason: any) => any) | null;\n }> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike<T> | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public static resolve<T>(value: T | PromiseLike<T>): PromiseLike<T> {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n }\n\n /** JSDoc */\n public static reject<T = never>(reason?: any): PromiseLike<T> {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n }\n\n /** JSDoc */\n public static all<U = any>(collection: Array<U | PromiseLike<U>>): PromiseLike<U[]> {\n return new SyncPromise<U[]>((resolve, reject) => {\n if (!Array.isArray(collection)) {\n reject(new TypeError(`Promise.all requires an array as input.`));\n return;\n }\n\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n\n let counter = collection.length;\n const resolvedCollection: U[] = [];\n\n collection.forEach((item, index) => {\n SyncPromise.resolve(item)\n .then(value => {\n resolvedCollection[index] = value;\n counter -= 1;\n\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\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._attachHandler({\n done: false,\n onfulfilled: result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: reason => {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n });\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 public toString(): string {\n return '[object SyncPromise]';\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 (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 // TODO: FIXME\n /** JSDoc */\n private readonly _attachHandler = (handler: {\n /** JSDoc */\n done: boolean;\n /** JSDoc */\n onfulfilled?(value: T): any;\n /** JSDoc */\n onrejected?(reason: any): any;\n }) => {\n this._handlers = this._handlers.concat(handler);\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.done) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler.onfulfilled((this._value as unknown) as any);\n }\n }\n\n if (this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(this._value);\n }\n }\n\n handler.done = true;\n });\n };\n}\n\nexport { SyncPromise };\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 Scope as ScopeInterface,\n ScopeContext,\n Severity,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalObject, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\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 notifiying 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 /**\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 }\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 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 will be a transaction, but it's not guaranteed to be\n const span = this.getSpan() as undefined | (Span & { spanRecorder: { spans: Span[] } });\n\n // try it the new way first\n if (span?.transaction) {\n return span?.transaction;\n }\n\n // fallback to the old way (known bug: this only finds transactions with sampled = true)\n if (span?.spanRecorder?.spans[0]) {\n return span.spanRecorder.spans[0] as Transaction;\n }\n\n // neither way found a transaction\n return undefined;\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 } 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 }\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._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 mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? [...this._breadcrumbs, mergedBreadcrumb].slice(-maxBreadcrumbs)\n : [...this._breadcrumbs, mergedBreadcrumb];\n this._notifyScopeListeners();\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 informartion 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 relys on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = 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 return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\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 (result as PromiseLike<Event | null>)\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n 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 * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n const global = getGlobalObject<any>();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\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", "/* 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 SessionStatus,\n Severity,\n Span,\n SpanContext,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport { consoleSandbox, dateTimestampInSeconds, getGlobalObject, isNodeEnv, logger, uuid4 } from '@sentry/utils';\n\nimport { Carrier, DomainAsCarrier, Layer } from './interfaces';\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 = 3;\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 * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\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 this.bindClient(client);\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 = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick 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 = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick 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 = (this._lastEventId = uuid4());\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, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\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 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 this.getStackTop()\n ?.scope?.getSession()\n ?.close();\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n this.getStackTop()?.scope?.setSession();\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 const session = new Session({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\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 === SessionStatus.Ok) {\n currentSession.update({ status: SessionStatus.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 logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/** Returns the global shim registry. */\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 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 activeDomain = getMainCarrier().__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 if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) return carrier.__SENTRY__.hub;\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\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 carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n", "import { getCurrentHub, Hub, Scope } from '@sentry/hub';\nimport {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n Extra,\n Extras,\n Primitive,\n Severity,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\n\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction callOnHub<T>(method: string, ...args: any[]): T {\n const hub = getCurrentHub();\n if (hub && hub[method as keyof Hub]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (hub[method as keyof Hub] as any)(...args);\n }\n throw new Error(`No hub defined or ${method} was not found on the hub, please open a bug report.`);\n}\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): string {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n return callOnHub('captureException', exception, {\n captureContext,\n originalException: exception,\n syntheticException,\n });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param level Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message: string, captureContext?: CaptureContext | Severity): string {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n\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\n return callOnHub('captureMessage', message, level, {\n originalException: message,\n syntheticException,\n ...context,\n });\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event): string {\n return callOnHub('captureEvent', event);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): void {\n callOnHub<void>('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 */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): void {\n callOnHub<void>('addBreadcrumb', breadcrumb);\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\nexport function setContext(name: string, context: { [key: string]: any } | null): void {\n callOnHub<void>('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 */\nexport function setExtras(extras: Extras): void {\n callOnHub<void>('setExtras', extras);\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 */\nexport function setTags(tags: { [key: string]: Primitive }): void {\n callOnHub<void>('setTags', tags);\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 */\nexport function setExtra(key: string, extra: Extra): void {\n callOnHub<void>('setExtra', key, extra);\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 */\nexport function setTag(key: string, value: Primitive): void {\n callOnHub<void>('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 */\nexport function setUser(user: User | null): void {\n callOnHub<void>('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 *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): void {\n callOnHub<void>('withScope', callback);\n}\n\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _callOnClient(method: string, ...args: any[]): void {\n callOnHub<void>('_invokeClient', method, ...args);\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 `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\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 */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n return callOnHub('startTransaction', { ...context }, customSamplingContext);\n}\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 * @private\n */\nconst PICKER_VERSION = '1.24.1';\n\n/**\n * @private\n */\nexport interface Hosts {\n [url: string]: string;\n fileApiUrl: string;\n uploadApiUrl: string;\n cloudApiUrl: string;\n cdnUrl: string;\n pickerUrl: string;\n processUrl: string;\n}\n\n/**\n * @private\n */\nexport interface Config {\n urls: Hosts;\n}\n\nexport const config = {\n urls: {\n processUrl: 'https://process.filestackapi.com',\n fileApiUrl: 'https://www.filestackapi.com/api/file',\n uploadApiUrl: 'https://upload.filestackapi.com',\n cloudApiUrl: 'https://cloud.filestackapi.com',\n cdnUrl: 'https://cdn.filestackcontent.com',\n pickerUrl: `https://static.filestackapi.com/picker/${PICKER_VERSION}/picker.js`,\n },\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 enum FilestackErrorType {\n VALIDATION = 'validation',\n REQUEST = 'request',\n ABORTED = 'aborted',\n OTHER = 'other',\n}\n\nexport class FilestackError extends Error {\n\n /**\n * Error details, ie validation errors\n *\n * @type {*}\n * @memberof FilestackError\n */\n public readonly details: any;\n public readonly type: string;\n\n constructor(message?: string, details?: any, type?: FilestackErrorType) {\n\n /* istanbul ignore next */\n super(message);\n Object.setPrototypeOf(this, FilestackError.prototype);\n this.details = details;\n this.type = type;\n }\n\n}\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nexport const TransformSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Transformations',\n description: 'Filestack transformations parameters',\n type: 'object',\n additionalProperties: false,\n properties: {\n flip: {\n type: 'boolean',\n additionalProperties: false,\n },\n auto_image: {\n type: 'boolean',\n additionalProperties: false,\n },\n no_metadata: {\n type: 'boolean',\n additionalProperties: false,\n },\n compress: {\n additionalProperties: false,\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n metadata: {\n type: 'boolean',\n default: false,\n },\n },\n }],\n },\n flop: {\n type: 'boolean',\n additionalProperties: false,\n },\n enhance: {\n default: true,\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n preset: {\n type: 'string',\n enum: ['auto', 'vivid', 'beautify', 'beautify_plus', 'fix_dark', 'fix_noise', 'fix_tint', 'outdoor', 'fireworks'],\n },\n },\n }],\n },\n redeye: {\n type: 'boolean',\n additionalProperties: false,\n },\n monochrome: {\n type: 'boolean',\n additionalProperties: false,\n },\n negative: {\n type: 'boolean',\n additionalProperties: false,\n },\n tags: {\n type: 'boolean',\n additionalProperties: false,\n },\n sfw: {\n type: 'boolean',\n additionalProperties: false,\n },\n imagesize: {\n type: 'boolean',\n additionalProperties: false,\n },\n smart_crop: {\n width: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n height: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n mode: {\n type: 'string',\n default: 'auto',\n enum: ['face', 'auto'],\n },\n },\n animate: {\n type: 'object',\n properties: {\n delay: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n default: 1000,\n },\n loop: {\n type: 'integer',\n minimum: 0,\n maximum: 1000,\n default: 0,\n },\n width: {\n type: 'integer',\n minimum: 1,\n maximum: 1800,\n },\n height: {\n type: 'integer',\n minimum: 1,\n maximum: 1800,\n },\n fit: {\n type: 'string',\n default: 'clip',\n enum: ['clip', 'scale', 'crop'],\n },\n background: {\n '$ref': 'colorDef',\n default: 'transparent',\n },\n align: {\n '$ref': 'positionDef',\n default: 'center',\n },\n },\n },\n metadata: {\n type: 'object',\n params: {\n type: 'array',\n items: {\n type: 'string',\n enum: [\n 'filename',\n 'mimetype',\n 'size',\n 'width',\n 'height',\n 'writeable',\n 'path',\n 'container',\n 'cloud',\n 'exif',\n 'source_url',\n 'md5',\n 'sha256',\n 'sha1',\n 'sha512',\n ],\n },\n minItems: 0,\n uniqueItems: true,\n additionalItems: false,\n },\n additionalProperties: false,\n },\n resize: {\n type: 'object',\n properties: {\n width: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n },\n height: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n },\n fit: {\n type: 'string',\n enum: ['clip', 'crop', 'scale' ,'max'],\n default: 'clip',\n },\n align: {\n '$ref': 'positionDef',\n default: 'center',\n },\n },\n // required: ['width', 'height'],\n additionalProperties: false,\n anyOf: [\n { required: ['width'] },\n { required: ['height'] },\n ],\n },\n crop: {\n type: 'object',\n properties: {\n dim: {\n type: 'array',\n additionalItems: false,\n minItems: 4,\n items: [{\n type: 'integer',\n minimum: 0,\n maximum: 100000,\n }, {\n type: 'integer',\n minimum: 0,\n maximum: 100000,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 100000,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 100000,\n }],\n },\n },\n required: ['dim'],\n },\n rotate: {\n type: 'object',\n properties: {\n deg: {\n oneOf: [{\n type: 'string',\n enum: ['exif'],\n }, {\n type: 'number',\n minimum: 0,\n maximum: 359,\n }],\n },\n exif: {\n type: 'boolean',\n },\n background: {\n '$ref': 'colorDef',\n default: 'FFFFFFFF',\n },\n },\n additionalProperties: false,\n },\n detect_faces: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n maxsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n minsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n export: {\n type: 'boolean',\n },\n color: {\n '$ref': 'colorDef',\n default: '000000FF',\n },\n },\n additionalProperties: false,\n }],\n },\n crop_faces: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n faces: {\n default: 1,\n '$ref': 'facesDef',\n },\n width: {\n type: 'number',\n minimum: 1,\n maximum: 10000,\n },\n height: {\n type: 'number',\n minimum: 1,\n maximum: 10000,\n },\n maxsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n minsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n buffer: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n mode: {\n type: 'string',\n enum: ['crop', 'thumb', 'fill'],\n default: 'thumb',\n },\n },\n additionalProperties: false,\n }],\n },\n pixelate_faces: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n faces: {\n '$ref': 'facesDef',\n default: 'all',\n },\n maxsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n minsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n buffer: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n amount: {\n type: 'integer',\n minimum: 2,\n maximum: 100,\n default: 10,\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n default: 4,\n },\n type: {\n type: 'string',\n enum: ['rect', 'oval'],\n default: 'rect',\n },\n },\n additionalProperties: false,\n }],\n },\n blur_faces: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n faces: {\n '$ref': 'facesDef',\n default: 'all',\n },\n maxsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n minsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n buffer: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n amount: {\n type: 'number',\n minimum: 0,\n maximum: 10,\n default: 10,\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n default: 4,\n },\n type: {\n type: 'string',\n enum: ['rect', 'oval'],\n default: 'rect',\n },\n },\n additionalProperties: false,\n }],\n },\n rounded_corners: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n radius: {\n oneOf: [{\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n }, {\n type: 'string',\n enum: ['max'],\n }],\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n default: 0.3,\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n vignette: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n default: 20,\n },\n blurmode: {\n type: 'string',\n enum: ['gaussian', 'linear'],\n default: 'gaussian',\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n polaroid: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n rotate: {\n type: 'integer',\n minimum: 0,\n maximum: 359,\n },\n color: {\n '$ref': 'colorDef',\n default: 'snow',\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n torn_edges: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n spread: {\n type: 'array',\n additionalItems: false,\n minItems: 2,\n items: [{\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n default: 1,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n default: 10,\n }],\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n shadow: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n default: 100,\n },\n opacity: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n default: 60,\n },\n vector: {\n type: 'array',\n additionalItems: false,\n minItems: 2,\n items: [{\n type: 'integer',\n minimum: -1000,\n maximum: 1000,\n default: 4,\n }, {\n type: 'integer',\n minimum: -1000,\n maximum: 1000,\n default: 4,\n }],\n },\n color: {\n '$ref': 'colorDef',\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n circle: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n border: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n color: {\n '$ref': 'colorDef',\n },\n background: {\n '$ref': 'colorDef',\n },\n width: {\n type: 'integer',\n minimum: 0,\n maximum: 1000,\n },\n },\n additionalProperties: false,\n }],\n },\n sharpen: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 0,\n maximum: 20,\n default: 2,\n },\n },\n additionalProperties: false,\n }],\n },\n blur: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 0,\n maximum: 20,\n default: 2,\n },\n },\n additionalProperties: false,\n }],\n },\n blackwhite: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n threshold: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n default: 50,\n },\n },\n additionalProperties: false,\n }],\n },\n sepia: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n tone: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n default: 80,\n },\n },\n additionalProperties: false,\n }],\n },\n pixelate: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 2,\n maximum: 100,\n default: 2,\n },\n },\n additionalProperties: false,\n }],\n },\n oil_paint: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 2,\n maximum: 100,\n default: 2,\n },\n },\n additionalProperties: false,\n }],\n },\n modulate: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n brightness: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n default: 100,\n },\n saturation: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n default: 100,\n },\n hue: {\n type: 'integer',\n minimum: 0,\n maximum: 359,\n default: 0,\n },\n },\n additionalProperties: false,\n }],\n },\n ascii: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n foreground: {\n '$ref': 'colorDef',\n default: '000000FF',\n },\n background: {\n '$ref': 'colorDef',\n default: 'FFFFFFFF',\n },\n colored: {\n type: 'boolean',\n default: false,\n },\n size: {\n type: 'integer',\n minimum: 10,\n maximum: 100,\n default: 100,\n },\n reverse: {\n type: 'boolean',\n default: false,\n },\n },\n additionalProperties: false,\n }],\n },\n collage: {\n type: 'object',\n properties: {\n files: {\n type: 'array',\n minItems: 1,\n items: [{\n type: 'string',\n }],\n },\n margin: {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n default: 10,\n },\n width: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n height: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n color: {\n '$ref': 'colorDef',\n default: 'FFFFFFFF',\n },\n fit: {\n type: 'string',\n enum: ['auto', 'crop'],\n },\n autorotate: {\n type: 'boolean',\n default: false,\n },\n },\n required: ['width', 'height', 'files'],\n additionalProperties: false,\n },\n urlscreenshot: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n agent: {\n type : 'string',\n enum: ['desktop', 'mobile'],\n default: 'desktop',\n },\n width: {\n type: 'integer',\n minimum: 1,\n maximum: 1920,\n default: 1024,\n },\n height: {\n type: 'integer',\n minimum: 1,\n maximum: 8000,\n default: 768,\n },\n mode: {\n type: 'string',\n enum: ['all', 'window'],\n default: 'all',\n },\n delay: {\n type: 'integer',\n minimum: 0,\n maximum: 20000,\n default: 1000,\n },\n orientation: {\n type: 'string',\n enum: ['portrait', 'landscape'],\n default: 'portrait',\n },\n device: {\n type: 'string',\n default: '',\n },\n },\n additionalProperties: false,\n }],\n },\n upscale: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n noise: {\n type: 'string',\n enum: ['none', 'low', 'medium', 'high'],\n default: 'none',\n },\n upscale: {\n type: 'boolean',\n default: true,\n },\n style: {\n type: 'string',\n enum: ['artwork', 'photo'],\n default: 'photo',\n },\n },\n additionalProperties: false,\n }],\n },\n output: {\n type: 'object',\n additionalProperties: false,\n properties: {\n format: {\n type: 'string',\n enum: ['doc', 'docx', 'html', 'jpg', 'odp', 'ods', 'odt', 'pjpg', 'pdf', 'png', 'ppt', 'pptx', 'svg', 'txt', 'webp', 'xls', 'xlsx'],\n },\n page: {\n type: 'integer',\n minimum: 1,\n maximum: 99999,\n },\n density: {\n type: 'integer',\n minimum: 1,\n maximum: 500,\n },\n compress: {\n type: 'boolean',\n },\n quality: {\n oneOf: [{\n type: 'string',\n enum: ['input'],\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n default: 95,\n }],\n },\n secure: {\n type: 'boolean',\n default: false,\n },\n docinfo: {\n type: 'boolean',\n default: false,\n },\n strip: {\n type: 'boolean',\n default: false,\n },\n colorspace: {\n type: 'string',\n enum: ['rgb', 'cmyk', 'input'],\n default: 'rgb',\n },\n background: {\n '$ref': 'colorDef',\n },\n pageformat: {\n type: 'string',\n enum: ['a2', 'a3', 'a4', 'a5', 'b4', 'b5', 'letter', 'legal', 'tabloid'],\n },\n pageorientation: {\n type: 'string',\n enum: ['landscape', 'portrait'],\n },\n },\n },\n pjpg: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n quality: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n },\n metadata: {\n type: 'boolean',\n default: false,\n },\n },\n }],\n },\n quality: {\n type: 'object',\n additionalProperties: false,\n properties: {\n value: {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n },\n },\n },\n cache: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n expiry: {\n type: 'integer',\n },\n },\n }],\n },\n video_convert: {\n type: 'object',\n additionalProperties: false,\n properties: {\n width: {\n type: 'integer',\n minimum: 1,\n maximum: 4096,\n },\n height: {\n type: 'integer',\n minimum: 1,\n maximum: 4096,\n },\n preset: {\n type: 'string',\n },\n force: {\n type: 'boolean',\n },\n title: {\n type: 'string',\n },\n extname: {\n type: 'string',\n },\n upscale: {\n type: 'boolean',\n },\n aspect_mode: {\n type: 'string',\n enum: ['letterbox', 'pad', 'crop', 'preserve', 'constrain'],\n default: 'letterbox',\n },\n audio_sample_rate: {\n type: 'integer',\n minimum: 1,\n maximum: 99999,\n },\n two_pass: {\n type: 'boolean',\n },\n video_bitrate: {\n type: 'integer',\n minimum: 1,\n maximum: 5000,\n },\n fps: {\n type: 'integer',\n minimum: 1,\n maximum: 300,\n },\n keyframe_interval: {\n type: 'integer',\n minimum: 250,\n maximum: 250,\n },\n audio_bitrate: {\n type: 'integer',\n minimum: 1,\n maximum: 999,\n },\n audio_channels: {\n type: 'integer',\n minimum: 1,\n maximum: 12,\n },\n clip_length: {\n type: 'string',\n pattern: `^([0-1]?\\\\d|2[0-3])(?::([0-5]?\\\\d))?(?::([0-5]?\\\\d))?$`,\n },\n clip_offset: {\n type: 'string',\n pattern: `^([0-1]?\\\\d|2[0-3])(?::([0-5]?\\\\d))?(?::([0-5]?\\\\d))?$`,\n },\n watermark_url: {\n type: 'string',\n },\n watermark_top: {\n type: 'integer',\n minimum: 0,\n maximum: 9999,\n },\n watermark_right: {\n type: 'integer',\n minimum: 0,\n maximum: 9999,\n },\n watermark_bottom: {\n type: 'integer',\n minimum: 0,\n maximum: 9999,\n },\n watermark_left: {\n type: 'integer',\n minimum: 0,\n maximum: 9999,\n },\n frame_count: {\n type: 'integer',\n minimum: 1,\n maximum: 1,\n default: 1,\n },\n filename: {\n type: 'string',\n },\n location: {\n '$ref': 'locationsDef',\n },\n path: {\n type: 'string',\n },\n container: {\n type: 'string',\n },\n access: {\n type: 'string',\n enum: ['public', 'private'],\n default: 'public',\n },\n },\n },\n store: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n filename: {\n type: 'string',\n },\n location: {\n '$ref': 'locationsDef',\n },\n path: {\n type: 'string',\n },\n container: {\n type: 'string',\n },\n region: {\n '$ref': 'regionsDef',\n },\n access: {\n type: 'string',\n enum: ['public', 'private'],\n default: 'private',\n },\n base64decode: {\n type: 'boolean',\n },\n workflows: {\n '$ref': 'workflowsDef',\n },\n },\n }],\n },\n watermark: {\n type: 'object',\n properties: {\n file: {\n type: 'string',\n },\n size: {\n type: 'number',\n minimum: 0,\n maximum: 500,\n },\n position: {\n '$ref': 'positionDef',\n },\n },\n required: [\n 'file',\n ],\n additionalProperties: false,\n },\n partial_blur: {\n type: 'object',\n properties: {\n objects: {\n '$ref': 'objectsDef',\n },\n amount: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n },\n type: {\n type: 'string',\n enum: ['rect', 'oval'],\n },\n },\n required: ['objects'],\n },\n partial_pixelate: {\n type: 'object',\n properties: {\n objects: {\n '$ref': 'objectsDef',\n },\n amount: {\n type: 'number',\n minimum: 2,\n maximum: 100,\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n },\n type: {\n type: 'string',\n enum: ['rect', 'oval'],\n },\n },\n required: ['objects'],\n },\n security: {\n type: 'object',\n additionalProperties: false,\n properties: {\n policy: {\n type: 'string',\n },\n signature: {\n type: 'string',\n },\n },\n required: ['policy', 'signature'],\n },\n pdfinfo: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n colorinfo: {\n type: 'boolean',\n },\n },\n }],\n },\n pdfconvert: {\n type: 'object',\n additionalProperties: false,\n properties: {\n pageorientation: {\n type: 'string',\n enum: ['portrait', 'landscape'],\n },\n pageformat: {\n '$ref': 'pageFormatDef',\n },\n pages: {\n '$ref': 'pageRangeDef',\n },\n },\n anyOf: [{\n required: ['pageorientation'],\n }, {\n required: ['pageformat'],\n }, {\n required: ['pages'],\n }],\n },\n fallback: {\n type: 'object',\n additionalProperties: false,\n properties: {\n handle: {\n type: 'string',\n },\n cache: {\n type: 'integer',\n minimum: 1,\n maximum: 31536000,\n },\n },\n required: ['handle'],\n },\n zip: {\n type: 'string',\n },\n minify_css: {\n type: 'object',\n additionalProperties: false,\n properties: {\n gzip: {\n type: 'boolean',\n },\n level: {\n type: 'number',\n enum: [1, 2],\n },\n },\n },\n minify_js: {\n type: 'object',\n additionalProperties: false,\n properties: {\n gzip: {\n type: 'boolean',\n },\n use_babel_polyfill: {\n type: 'boolean',\n },\n keep_fn_name: {\n type: 'boolean',\n },\n keep_class_name: {\n type: 'boolean',\n },\n mangle: {\n type: 'boolean',\n },\n merge_vars: {\n type: 'boolean',\n },\n remove_console: {\n type: 'boolean',\n },\n remove_undefined: {\n type: 'boolean',\n },\n targets: {\n type: 'string',\n },\n },\n },\n },\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nexport const DefinitionsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack',\n description: 'Filestack common definitions',\n type: 'object',\n additionalProperties: false,\n definitions: {\n workflowsDef: {\n id: '/workflowsDef',\n type: 'array',\n additionalItems: false,\n minItems: 1,\n maxItems: 20,\n items: [{\n oneOf: [{\n type: 'string',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n },\n },\n }],\n }],\n },\n securityCallDef: {\n id: '/securityCallDef',\n oneOf: [{\n additionalProperties: false,\n type: 'string',\n enum: ['pick', 'read', 'stat', 'write', 'writeUrl', 'store', 'convert', 'remove', 'exif', 'runWorkflow'],\n }, {\n type: 'array',\n additionalProperties: false,\n items: [{\n minItems: 1,\n maxItems: 10,\n type: 'string',\n additionalProperties: false,\n enum: ['pick', 'read', 'stat', 'write', 'writeUrl', 'store', 'convert', 'remove', 'exif', 'runWorkflow'],\n }],\n }],\n },\n regionsDef: {\n id: '/regionsDef',\n type: 'string',\n // for now we decided to remove validation of regions (AWS + Rackspace)\n // pattern: '^[a-zA-Z]{2}-[a-zA-z]{1,}-[1-9]$',\n // errorMessage: 'AWS Region Param is in invalid format',\n },\n locationsDef: {\n id: '/locationsDef',\n type: 'string',\n enum: ['s3', 'S3', 'rackspace', 'gcs', 'azure', 'dropbox'],\n },\n colorDef: {\n id: 'colorDef',\n oneOf: [{\n type: 'string',\n pattern: '^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$', // without # at the begining\n }, {\n type: 'string',\n enum: ['aliceblue', 'antiquewhite', 'aqua', 'aquamarine', 'azure', 'beige', 'bisque', 'black', 'blanchedalmond', 'blue', 'blueviolet', 'brown', 'burlywood', 'cadetblue', 'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson', 'cyan', 'darkblue', 'darkcyan', 'darkgoldenrod', 'darkgray', 'darkgreen', 'darkgrey', 'darkkhaki', 'darkmagenta', 'darkolivegreen', 'darkorange', 'darkorchid', 'darkred', 'darksalmon', 'darkseagreen', 'darkslateblue', 'darkslategray', 'darkslategrey', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue', 'dimgray', 'dimgrey', 'dodgerblue', 'firebrick', 'floralwhite', 'forestgreen', 'fractal', 'fuchsia', 'gainsboro', 'ghostwhite', 'gold', 'goldenrod', 'gray0', 'gray1', 'gray2', 'gray3', 'gray4', 'gray5', 'gray6', 'gray7', 'gray8', 'gray9', 'gray10', 'gray11', 'gray12', 'gray13', 'gray14', 'gray15', 'gray16', 'gray17', 'gray18', 'gray19', 'gray20', 'gray21', 'gray22', 'gray23', 'gray24', 'gray25', 'gray26', 'gray27', 'gray28', 'gray29', 'gray30', 'gray31', 'gray32', 'gray33', 'gray34', 'gray35', 'gray36', 'gray37', 'gray38', 'gray39', 'gray40', 'gray41', 'gray42', 'gray43', 'gray44', 'gray45', 'gray46', 'gray47', 'gray48', 'gray49', 'gray50', 'gray51', 'gray52', 'gray53', 'gray54', 'gray55', 'gray56', 'gray57', 'gray58', 'gray59', 'gray60', 'gray61', 'gray62', 'gray63', 'gray64', 'gray65', 'gray66', 'gray67', 'gray68', 'gray69', 'gray70', 'gray71', 'gray72', 'gray73', 'gray74', 'gray75', 'gray76', 'gray77', 'gray78', 'gray79', 'gray80', 'gray81', 'gray82', 'gray83', 'gray84', 'gray85', 'gray86', 'gray87', 'gray88', 'gray89', 'gray90', 'gray91', 'gray92', 'gray93', 'gray94', 'gray95', 'gray96', 'gray97', 'gray98', 'gray99', 'gray100', 'gray', 'green', 'greenyellow', 'grey', 'honeydew', 'hotpink', 'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush', 'lawngreen', 'lemonchiffon', 'lightblue', 'lightcoral', 'lightcyan', 'lightgoldenrodyellow', 'lightgray', 'lightgreen', 'lightgrey', 'lightpink', 'lightsalmon', 'lightseagreen', 'lightskyblue', 'lightslategray', 'lightslategrey', 'lightsteelblue', 'lightyellow', 'lime', 'limegreen', 'linen', 'magenta', 'maroon', 'mediumaquamarine', 'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen', 'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite', 'navy', 'none', 'oldlace', 'olive', 'olivedrab', 'orange', 'orangered', 'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred', 'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'purple', 'red', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'sandybrown', 'seagreen', 'seashell', 'sienna', 'silver', 'skyblue', 'slateblue', 'slategray', 'slategrey', 'snow', 'springgreen', 'steelblue', 'tan', 'teal', 'thistle', 'tomato', 'turquoise', 'violet', 'wheat', 'white', 'whitesmoke', 'yellow', 'yellowgreen', 'transparent'],\n }],\n },\n pageFormatDef: {\n id: '/pageFormatDef',\n type: 'string',\n enum: ['a2', 'a3', 'a4', 'a5', 'b4', 'b5', 'letter', 'legal', 'tabloid'],\n },\n pageRangeDef: {\n id: '/pageRangeDef',\n type: 'array',\n uniqueItems: true,\n items: [{\n oneOf: [{\n type: 'integer',\n minimum: 1,\n }, {\n type: 'string',\n pattern: '^(\\\\d+(?:-\\\\d+)?)$|^(-\\\\d+)$|^(\\\\d+-)$',\n errorMessage: 'Param should be provided in one of the following formats: \"1,2,3,5\", \"1-3\", \"1-\", \"-2\" ',\n }],\n }],\n },\n facesDef: {\n id: '/facesDef',\n oneOf: [{\n type: 'string',\n enum: ['all'],\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 1000,\n }, {\n type: 'array',\n uniqueItems: true,\n items: [{\n type: 'integer',\n minimum: 1,\n maximum: 1000,\n }],\n }],\n },\n objectsDef: {\n id: '/objectsDef',\n type: 'array',\n minItems: 1,\n maxItems: 50,\n items: [{\n type: 'array',\n additionalItems: false,\n minItems: 4,\n items: [{\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n }, {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n }],\n }],\n },\n positionDef: {\n id: '/positionDef',\n default: ['middle', 'center'],\n oneOf: [\n {\n type: 'string',\n enum: [\n 'top',\n 'middle',\n 'bottom',\n 'left',\n 'center',\n 'right',\n 'faces',\n ],\n },\n {\n type: 'array',\n uniqueItems: true,\n additionalItems: false,\n minItems: 2,\n maxItems: 2,\n default: ['middle', 'center'],\n items: [\n {\n type: 'string',\n enum: [\n 'top',\n 'middle',\n 'bottom',\n ],\n }, {\n type: 'string',\n enum: [\n 'left',\n 'center',\n 'right',\n ],\n },\n ],\n },\n ],\n },\n },\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport { Validator } from 'jsonschema';\nimport { DefinitionsSchema } from './definitions.schema';\n\nconst v = new Validator();\n\nValidator.prototype.customFormats.callback = (input) => typeof input === 'function';\n// check if element have HTML in to string method ie HTMLDivElement\nValidator.prototype.customFormats.HTMLContainer = (input) => typeof input === 'string' || (input.toString && input.toString().indexOf('HTML') > -1);\n\n/**\n * Returns validator instance\n */\nexport const getValidator = (schema) => {\n return (params) => {\n v.addSchema(DefinitionsSchema);\n return v.validate(params, schema);\n };\n};\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 { config } from './../config';\nimport { TransformSchema } from './../schema/transforms.schema';\nimport { getValidator } from './../schema/validator';\nimport { resolveHost, b64 } from './utils';\nimport { FilestackError, FilestackErrorType } from './../filestack_error';\nimport Debug from 'debug';\n\nconst debug = Debug('fs:filelink');\n\nexport enum Align {\n left = 'left',\n right = 'right',\n center = 'center',\n bottom = 'bottom',\n top = 'top',\n faces = 'faces',\n middle = 'middle',\n}\n\n/**\n * Align\n */\nexport type AlignOptions = Align | [Align.top | Align.middle | Align.bottom, Align.left | Align.center | Align.right];\n\n/**\n * Fit enum\n */\nexport enum FitOptions {\n clip = 'clip',\n crop = 'crop',\n scale = 'scale',\n max = 'max',\n}\n\n/**\n * Blur enum\n */\nexport enum BlurMode {\n linear = 'linear',\n gaussian = 'gaussian',\n}\n\n/**\n * Shapes enum\n */\nexport enum ShapeType {\n oval = 'oval',\n rect = 'rect',\n}\n\n/**\n * Noise type enum\n */\nexport enum NoiseType {\n none = 'none',\n low = 'low',\n medium = 'medium',\n high = 'high',\n}\n\n/**\n * Style type enum\n */\nexport enum StyleType {\n artwork = 'artwork',\n photo = 'photo',\n}\n\n/**\n * Color space enum\n */\nexport enum ColorspaceType {\n RGB = 'RGB',\n CMYK = 'CMYK',\n Input = 'Input',\n}\n\n/**\n * Crop faces options enum\n */\nexport enum CropfacesType {\n thumb = 'thumb',\n crop = 'crop',\n fill = 'fill',\n}\n\n/**\n * Watermark postion options enum\n */\nexport enum ImageWatermarkPosition {\n top = 'top',\n middle = 'middle',\n bottom = 'bottom',\n left = 'left',\n center = 'center',\n right = 'right',\n}\n\n/**\n * SmartCrop options enum\n */\nexport enum SmartCropMode {\n face = 'face',\n auto = 'auto',\n}\n\n/**\n * Convert to format\n */\nexport enum VideoTypes {\n h264 = 'h264',\n h264_hi = 'h264.hi',\n webm = 'webm',\n 'webm-hi' = 'webm.hi',\n ogg = 'ogg',\n 'ogg-hi' = 'ogg.hi',\n 'hls-variant' = 'hls.variant',\n mp3 = 'mp3',\n oga = 'oga',\n m4a = 'm4a',\n aac = 'aac',\n hls = 'hls.variant.audio',\n}\n\nexport enum URLScreenshotAgent {\n desktop = 'desktop',\n mobile = 'mobile',\n}\n\nexport enum URLScreenshotMode {\n all = 'all',\n window = 'window',\n}\n\nexport enum URLScreenshotOrientation {\n portrait = 'portrait',\n landscape = 'landscape',\n}\n\n/**\n * Video storage location\n */\nexport enum Locations {\n s3 = 's3',\n azure = 'azure',\n gcs = 'gcs',\n rackspace = 'rackspace',\n dropbox = 'dropbox',\n}\n\nexport enum VideoAccess {\n private = 'private',\n public = 'public',\n}\n\nexport enum VideoAccessMode {\n preserve = 'preserve',\n constrain = 'constrain',\n letterbox = 'letterbox',\n pad = 'pad',\n crop = 'crop',\n}\n\nexport interface StoreBaseParams {\n location?: string;\n path?: string;\n container?: string;\n region?: string;\n access?: string;\n disableStorageKey?: boolean;\n}\n\n/**\n * Available options for store transformations\n *\n * @export\n * @interface StoreParams\n */\nexport type StoreParams = StoreBaseParams & {\n filename?: string;\n base64decode?: boolean;\n};\n\nexport interface AnimationParams {\n delay?: number;\n loop?: number;\n width?: number;\n height?: number;\n fit?: FitOptions;\n align?: AlignOptions;\n background?: string;\n}\n\nexport interface ResizeParams {\n width?: number;\n height?: number;\n fit?: FitOptions;\n align?: AlignOptions;\n}\n\nexport interface CropParams {\n dim: [number, number, number, number];\n}\n\nexport interface RotateParams {\n deg: number | string;\n color?: string;\n background?: string;\n}\n\nexport interface DetectFacesParams {\n minsize?: number;\n maxsize?: number;\n color?: string;\n export?: boolean;\n}\n\nexport interface CropFacesParams {\n mode?: CropfacesType;\n width?: number;\n height?: number;\n faces?: number | string;\n buffer?: number;\n}\n\nexport interface PixelateFacesParams {\n faces?: number | string;\n minsize?: number;\n maxsize?: number;\n buffer?: number;\n amount?: number;\n blur?: number;\n type?: ShapeType;\n}\n\nexport interface BlurFacesParams {\n faces?: number | string;\n minsize?: number;\n maxsize?: number;\n buffer?: number;\n amount?: number;\n blur?: number;\n type?: ShapeType;\n}\n\nexport interface RoundedCornersParams {\n radius?: number;\n blur?: number;\n background?: string;\n}\n\nexport interface VignetteParams {\n amount?: number;\n blurmode?: BlurMode;\n background?: string;\n}\n\nexport interface PolaroidParams {\n color?: string;\n rotate?: number;\n background?: string;\n}\n\nexport interface TornEdgesParams {\n spread?: [number, number];\n background?: string;\n}\n\nexport interface ShadowParams {\n blur?: number;\n opacity?: number;\n vector?: [number, number];\n color?: string;\n background?: string;\n}\n\nexport interface CircleParams {\n background?: string;\n}\n\nexport interface BorderParams {\n width?: number;\n color?: string;\n background?: string;\n}\n\nexport interface CompressParams {\n metadata?: boolean;\n}\n\nexport interface WatermarkParams {\n file: string;\n size?: number;\n position?: ImageWatermarkPosition | ImageWatermarkPosition[];\n}\n\nexport interface ProgressiveJpgParams {\n quality: number;\n metadata: boolean;\n}\n\nexport interface SmartCropParams {\n mode: SmartCropMode;\n width: number;\n height: number;\n}\n\nexport interface SharpenParams {\n amount: number;\n}\n\nexport interface BlurParams {\n amount: number;\n}\n\nexport interface BlackwhiteParams {\n threshold: number;\n}\n\nexport interface SepiaParams {\n tone: number;\n}\n\nexport interface PixelateParams {\n amount: number;\n}\n\nexport interface OilPaintParams {\n amount: number;\n}\n\nexport interface ModulateParams {\n brightness?: number;\n hue?: number;\n saturation?: number;\n}\n\nexport interface PartialPixelateParams {\n amount?: number;\n blur?: number;\n type?: ShapeType;\n objects?: [[number, number, number, number]];\n}\n\nexport interface PartialBlurParams {\n amount: number;\n blur?: number;\n type?: ShapeType;\n objects?: [[number, number, number, number]];\n}\n\nexport interface CollageParams {\n margin?: number;\n width?: number;\n height?: number;\n color?: string;\n fit?: FitOptions;\n files: [string];\n}\n\nexport interface UpscaleParams {\n upscale?: boolean;\n noise?: NoiseType;\n style?: StyleType;\n}\n\nexport interface AsciiParams {\n background?: string;\n foreground?: string;\n colored?: boolean;\n size?: number;\n reverse?: boolean;\n}\n\nexport interface QualityParams {\n value: number;\n}\n\nexport interface SecurityParams {\n policy: string;\n signature?: string;\n}\n\nexport interface OutputParams {\n format: string;\n colorspace?: string;\n strip?: boolean;\n quality?: number;\n page?: number;\n compress?: boolean;\n density?: number;\n background?: string;\n secure?: boolean;\n docinfo?: boolean;\n pageformat?: string;\n pageorientation?: string;\n}\n\nexport interface CacheParams {\n cache?: boolean;\n expiry: number;\n}\n\nexport interface VideoConvertParams {\n aspect_mode: VideoAccessMode;\n preset?: VideoTypes;\n force?: boolean;\n title?: string;\n extname?: string;\n filename?: string;\n location?: Locations;\n path?: string;\n access?: VideoAccess;\n container?: string;\n audio_bitrate?: number;\n upscale: boolean;\n video_bitrate?: number;\n audio_sample_rate?: number;\n audio_channels?: number;\n clip_length?: string;\n clip_offset?: string;\n width?: number;\n height?: number;\n two_pass?: boolean;\n fps?: number;\n keyframe_interval?: number;\n watermark_url?: string;\n watermark_top?: number;\n watermark_bottom?: number;\n watermark_right?: number;\n watermark_left?: number;\n watermark_width?: number;\n watermark_height?: number;\n}\n\nexport interface URLScreenshotParams {\n agent?: URLScreenshotAgent;\n width?: number;\n height?: number;\n mode?: URLScreenshotMode;\n delay?: number;\n orientation?: URLScreenshotOrientation;\n device?: string;\n}\n\nexport enum EnhancePreset {\n auto = 'auto',\n vivid = 'vivid',\n beautify = 'beautify',\n beautifyPlus = 'beautify_plus',\n fixDark = 'fix_dark',\n fixNoise = 'fix_noise',\n fixTint = 'fix_tint',\n outdor = 'outdoor',\n fireworks = 'fireworks',\n}\nexport interface EnhanceParams {\n preset?: EnhancePreset;\n}\n\nexport interface PdfInfoParams {\n colorinfo?: boolean;\n}\n\nexport interface PdfConvertParams {\n pageorientation?: string;\n pageformat?: string;\n pages?: (string | number)[];\n}\n\nexport interface FallbackParams {\n handle: string;\n cache?: number;\n}\n\nexport interface MinifyCssParams {\n gzip?: boolean;\n level?: number;\n}\n\nexport interface MinifyJsParams {\n gzip?: boolean;\n use_babel_polyfill?: boolean;\n keep_fn_name?: boolean;\n keep_class_name?: boolean;\n mangle?: boolean;\n merge_vars?: boolean;\n remove_console?: boolean;\n remove_undefined?: boolean;\n targets?: null | string;\n}\n\nconst handleRegexp = /^[\\w\\-]{20}|wf:\\/\\/[\\w\\-\\/]{106}$/;\n\n/**\n * Class for handling filelinks. For now its supports all filestack transforms.\n * It outputs transform url or array of transforms\n * @example\n * const link = new Filelink('handle or externalUrl', 'apikey');\n * link.flip().flop().store();\n *\n * console.log(link.toString());\n * // enable base64 support\n * link.setBase64(true)\n *\n * console.log(link.toString());\n *\n * @export\n * @class Filelink\n */\nexport class Filelink {\n /**\n * Validator instance\n *\n * @private\n * @memberof Filelink\n */\n private static validator = getValidator(TransformSchema);\n\n /**\n * Applied transforms array\n *\n * @private\n * @memberof Filelink\n */\n private transforms = [];\n\n /**\n * Handle or multiple handles in array\n *\n * @private\n * @memberof Filelink\n */\n private source: string | string[];\n\n /**\n * Application key\n *\n * @private\n * @type {string}\n * @memberof Filelink\n */\n private apikey: string;\n\n /**\n * Is base64 support is enabled\n *\n * @private\n * @type {boolean}\n * @memberof Filelink\n */\n private b64: boolean = false;\n\n /**\n * should use a validator to check params of every task\n * @private\n * @type {boolean}\n * @memberof Filelink\n */\n private useValidator: boolean = true;\n\n /**\n * Custom CNAME\n *\n * @private\n * @type {string}\n * @memberof Filelink\n */\n private cname: string;\n\n /**\n * Overwrite domain (test purposes)\n *\n * @private\n * @type {string}\n * @memberof Filelink\n */\n private customDomain: string;\n\n /**\n * Class for generating tranformation urls\n * @param {(string | string[])} source - handle or multiple handles (i.e. for collage)\n * @param {string} [apikey] - your apikey - required for all external sources\n *\n * @memberof Filelink\n */\n constructor(source: string | string[], apikey?: string) {\n this.apikey = apikey;\n this.setSource(source);\n }\n\n /**\n * Enable new base64 link support to avoid problems with special chars in link\n *\n * @param {boolean} flag\n * @returns\n * @memberof Filelink\n */\n setBase64(flag: boolean) {\n this.b64 = flag;\n return this;\n }\n\n /**\n * Switch the useValidator flag\n *\n * @param {boolean} flag\n * @returns\n * @memberof Filelink\n */\n setUseValidator(flag: boolean) {\n this.useValidator = flag;\n return this;\n }\n\n /**\n * Set cname for transformation link\n *\n * @param {string} cname\n * @returns\n * @memberof Filelink\n */\n setCname(cname: string) {\n this.cname = cname;\n return this;\n }\n\n /**\n * Set custom domain. Used for test purpose. It will be removed when after client.transform\n *\n * @param {string} domain\n * @returns\n * @memberof Filelink\n */\n setCustomDomain(domain: string) {\n this.customDomain = domain;\n return this;\n }\n\n setSource(source: string | string[]) {\n this.source = source;\n\n const isExternal = this.isSourceExternal();\n\n debug(`Source ${source} - isExternal? ${isExternal}`);\n\n if (isExternal && !this.apikey) {\n throw new FilestackError('External sources requires apikey to handle transforms');\n }\n\n if (!isExternal && typeof this.source === 'string' && !handleRegexp.test(this.source) && this.source.indexOf('filestackcontent') === -1) {\n throw new FilestackError('Invalid filestack source provided');\n }\n }\n\n /**\n * Returns JSONSchema form transformations params\n *\n * @returns\n * @memberof Filelink\n */\n getValidationSchema() {\n return TransformSchema;\n }\n\n /**\n * Returns transformations in JSON format\n *\n * @returns\n * @memberof Filelink\n */\n getTransformations() {\n if (this.useValidator) {\n this.validateTasks(this.transforms);\n }\n return this.transforms;\n }\n\n /**\n * Returns transform url\n *\n * @returns\n * @memberof Filelink\n */\n toString() {\n const returnUrl = [];\n returnUrl.push(this.getCdnHost());\n\n if (this.useValidator) {\n this.validateTasks(this.transforms);\n }\n\n if (this.apikey) {\n returnUrl.push(this.apikey);\n }\n\n let transformsString = this.generateTransformString();\n\n let source = this.source;\n\n if (this.b64) {\n if (this.transforms.length > 0) {\n transformsString = `b64/${b64(JSON.stringify(this.transforms), true)}`;\n }\n\n if (Array.isArray(source)) {\n source = this.arrayToString(source);\n }\n\n source = `b64://${b64(source, true)}`;\n } else {\n if (Array.isArray(source)) {\n source = this.arrayToString(source);\n } else {\n source = this.escapeValue(source);\n }\n }\n\n if (transformsString.length) {\n returnUrl.push(transformsString);\n }\n\n returnUrl.push(source);\n return returnUrl.join('/');\n }\n\n /**\n * Add task and validate\n *\n * @param {string} name\n * @param {*} [params]\n * @returns\n * @memberof Filelink\n */\n addTask(name: string, params?) {\n Debug(`Add task ${name} with params %O`, params);\n\n if (name !== 'cache' && typeof params === 'boolean') {\n if (!params) {\n return this;\n } else {\n params = undefined;\n }\n } else if (typeof params === 'object' && !Object.keys(params).length) {\n params = undefined;\n }\n\n this.transforms.push({ name, params });\n return this;\n }\n\n /**\n * Returns all tasks added for transformation\n *\n * @memberof Filelink\n */\n getTasks() {\n return this.transforms;\n }\n\n /**\n * Cleanup transformations on filelink\n *\n * @returns\n * @memberof Filelink\n */\n reset() {\n this.transforms = [];\n return this;\n }\n\n /**\n * Transformations part\n */\n\n /**\n * Add autoimage transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#auto-image-conversion\n * @returns this\n * @memberof Filelink\n */\n autoImage() {\n return this.addTask('auto_image', true);\n }\n\n /**\n * Adds flip transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#flip\n * @returns this\n * @memberof Filelink\n */\n flip() {\n return this.addTask('flip', true);\n }\n\n /**\n * Adds flop transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#flop\n * @returns this\n * @memberof Filelink\n */\n flop() {\n return this.addTask('flop', true);\n }\n\n /**\n * Adds imagesize transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#image-size\n * @returns this\n * @memberof Filelink\n */\n imagesize() {\n return this.addTask('imagesize', true);\n }\n\n /**\n * Adds noMetadata transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#strip-metadata\n * @returns this\n * @memberof Filelink\n */\n noMetadata() {\n return this.addTask('no_metadata', true);\n }\n\n /**\n * Adds Progressive JPEG transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#progressive-jpeg\n * @returns this\n * @memberof Filelink\n */\n pjpg(params: ProgressiveJpgParams) {\n return this.addTask('pjpg', params);\n }\n\n /**\n * Adds imagesize transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#smart-crop\n * @returns this\n * @memberof Filelink\n */\n smartCrop(params: SmartCropParams) {\n return this.addTask('smart_crop', params);\n }\n\n /**\n * Adds watermart transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#watermark\n * @returns this\n * @memberof Filelink\n */\n watermark(params: WatermarkParams) {\n return this.addTask('watermark', params);\n }\n\n /**\n * Adds enhance transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#enhance\n * @returns this\n * @memberof Filelink\n */\n enhance(params?: EnhanceParams) {\n return this.addTask('enhance', params || true);\n }\n\n /**\n * Add security to link\n *\n * @see https://www.filestack.com/docs/api/processing/#redeye\n * @returns\n * @memberof Filelink\n */\n redeye() {\n return this.addTask('redeye', true);\n }\n\n /**\n * Add monochrome transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#monochrome\n * @returns this\n * @memberof Filelink\n */\n monochrome() {\n return this.addTask('monochrome', true);\n }\n\n /**\n * Add compress transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#compress\n * @returns this\n * @memberof Filelink\n */\n compress(params?: CompressParams) {\n return this.addTask('compress', params || true);\n }\n\n /**\n * Adds negative transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#negative\n * @returns this\n * @memberof Filelink\n */\n negative() {\n return this.addTask('negative', true);\n }\n\n /**\n * Adds tags transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#tags\n * @returns this\n * @memberof Filelink\n */\n tags() {\n return this.addTask('tags', true);\n }\n\n /**\n * Adds sfw transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#sfw\n * @returns this\n * @memberof Filelink\n */\n sfw() {\n return this.addTask('sfw', true);\n }\n\n /**\n * Add animate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#animate-images-to-gif\n * @param params\n * @returns this\n * @memberof Filelink\n */\n animate(params: AnimationParams) {\n return this.addTask('animate', params);\n }\n\n /**\n * Adds store transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#store\n * @param {(StoreParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n store(params?: StoreParams | boolean) {\n return this.addTask('store', params);\n }\n\n /**\n * Adds cache transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#cache\n * @param {(CacheParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n cache(params: CacheParams | boolean) {\n return this.addTask('cache', params);\n }\n\n /**\n * Adds resize transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#resize\n * @param {ResizeParams} params\n * @returns this\n * @memberof Filelink\n */\n resize(params: ResizeParams) {\n return this.addTask('resize', params);\n }\n\n /**\n * Adds crop transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#crop\n * @param {CropParams} params\n * @returns this\n * @memberof Filelink\n */\n crop(params: CropParams) {\n return this.addTask('crop', params);\n }\n\n /**\n * Adds rotate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#rotate\n * @param {RotateParams} params\n * @returns this\n * @memberof Filelink\n */\n rotate(params: RotateParams) {\n return this.addTask('rotate', params);\n }\n\n /**\n * Adds detect_faces transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#facial-detection\n * @param {(DetectFacesParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n detectFaces(params?: DetectFacesParams | boolean) {\n return this.addTask('detect_faces', params);\n }\n\n /**\n * Adds crop faces transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#crop-faces\n * @param {CropFacesParams} params\n * @returns this\n * @memberof Filelink\n */\n cropFaces(params: CropFacesParams) {\n return this.addTask('crop_faces', params);\n }\n\n /**\n * Adds pixelate faces transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#pixelate-faces\n * @param {PixelateFacesParams} params\n * @returns this\n * @memberof Filelink\n */\n pixelateFaces(params: PixelateFacesParams) {\n return this.addTask('pixelate_faces', params);\n }\n\n /**\n * Adds blur faces transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#blur-faces\n * @param {BlurFacesParams} params\n * @returns this\n * @memberof Filelink\n */\n blurFaces(params: BlurFacesParams) {\n return this.addTask('blur_faces', params);\n }\n\n /**\n * Adds rounded corners transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#rounded-corners\n * @param {(RoundedCornersParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n roundedCorners(params?: RoundedCornersParams | boolean) {\n return this.addTask('rounded_corners', params);\n }\n\n /**\n * Adds polaroid transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#polaroid\n * @param {(PolaroidParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n polaroid(params?: PolaroidParams | boolean) {\n return this.addTask('polaroid', params);\n }\n\n /**\n * Adds vignette transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#vignette\n * @param {(VignetteParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n vignette(params?: VignetteParams | boolean) {\n return this.addTask('vignette', params);\n }\n\n /**\n * Adds torn edges transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#torn-edges\n * @param {(TornEdgesParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n tornEdges(params?: TornEdgesParams | boolean) {\n return this.addTask('torn_edges', params);\n }\n\n /**\n * Adds shadow transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#shadow\n * @param {(ShadowParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n shadow(params?: ShadowParams | boolean) {\n return this.addTask('shadow', params);\n }\n\n /**\n * Adds circle transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#circle\n * @param {(CircleParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n circle(params?: CircleParams | boolean) {\n return this.addTask('circle', params);\n }\n\n /**\n * Adds border transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#border\n * @param {(BorderParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n border(params?: BorderParams | boolean) {\n return this.addTask('border', params);\n }\n\n /**\n * Adds sharpen transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#sharpen\n * @param {(SharpenParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n sharpen(params?: SharpenParams | boolean) {\n return this.addTask('sharpen', params);\n }\n\n /**\n * Adds blur transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#blur\n * @param {(BlurParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n blur(params?: BlurParams | boolean) {\n return this.addTask('blur', params);\n }\n\n /**\n * Adds blackwhite transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#blackwhite\n * @param {(BlackwhiteParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n blackwhite(params?: BlackwhiteParams | boolean) {\n return this.addTask('blackwhite', params);\n }\n\n /**\n * Adds sepia transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#sepia\n * @param {(SepiaParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n sepia(params?: SepiaParams | boolean) {\n return this.addTask('sepia', params);\n }\n\n /**\n * Adds pixelate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#pixelate\n * @param {(PixelateParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n pixelate(params?: PixelateParams | boolean) {\n return this.addTask('pixelate', params);\n }\n\n /**\n * Adds oilpaint transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#oil-paint\n * @param {(OilPaintParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n oilPaint(params?: OilPaintParams | boolean) {\n return this.addTask('oil_paint', params);\n }\n\n /**\n * Adds modulate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#modulate\n * @param {(ModulateParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n modulate(params?: ModulateParams | boolean) {\n return this.addTask('modulate', params);\n }\n\n /**\n * Adds partial pixelate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#partial-pixelate\n * @param {PartialPixelateParams} params\n * @returns this\n * @memberof Filelink\n */\n partialPixelate(params: PartialPixelateParams) {\n return this.addTask('partial_pixelate', params);\n }\n\n /**\n * Adds partial blur transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#partial-blur\n * @param {PartialBlurParams} params\n * @returns this\n * @memberof Filelink\n */\n partialBlur(params: PartialBlurParams) {\n return this.addTask('partial_blur', params);\n }\n\n /**\n * Adds collage transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#collage\n * @param {CollageParams} params\n * @returns this\n * @memberof Filelink\n */\n collage(params: CollageParams) {\n return this.addTask('collage', params);\n }\n\n /**\n * Adds upscale transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#upscale\n * @param {(UpscaleParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n upscale(params?: UpscaleParams | boolean) {\n return this.addTask('upscale', params);\n }\n\n /**\n * Adds ascii transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#ascii\n * @param {(AsciiParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n ascii(params?: AsciiParams | boolean) {\n return this.addTask('ascii', params);\n }\n\n /**\n * Adds quality transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#quality\n * @param {QualityParams} params\n * @returns this\n * @memberof Filelink\n */\n quality(params: QualityParams) {\n return this.addTask('quality', params);\n }\n\n /**\n * Adds security transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#security\n * @param {SecurityParams} params\n * @returns this\n * @memberof Filelink\n */\n security(params: SecurityParams) {\n return this.addTask('security', params);\n }\n\n /**\n * Adds output transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#output\n * @param {OutputParams} params\n * @returns this\n * @memberof Filelink\n */\n output(params: OutputParams) {\n return this.addTask('output', params);\n }\n\n /**\n * Adds video convert transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#video-convert\n * @param {VideoConvertParams} params\n * @returns this\n * @memberof Filelink\n */\n videoConvert(params: VideoConvertParams) {\n return this.addTask('video_convert', params);\n }\n\n /**\n * Adds URLScreenshot transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#urlscreenshot\n * @param {(URLScreenshotParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n URLScreenshot(params?: URLScreenshotParams | boolean) {\n return this.addTask('urlscreenshot', params);\n }\n\n /**\n * Adds pdfinfo transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#pdfinfo\n * @param {(PdfInfoParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n PDFInfo(params?: PdfInfoParams | boolean) {\n return this.addTask('pdfinfo', params);\n }\n\n /**\n * Adds pdfconvert transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#pdfconvert\n * @param {(PdfConvertParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n PDFConvert(params?: PdfConvertParams | boolean) {\n return this.addTask('pdfconvert', params);\n }\n\n /**\n * Adds fallback transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#fallback\n * @param {(FallbackParams)} params\n * @returns this\n * @memberof Filelink\n */\n fallback(params: FallbackParams) {\n return this.addTask('fallback', params);\n }\n\n /**\n * Add zip transformation which create a zip package on files\n * used on actual context\n *\n * @see https://www.filestack.com/docs/api/processing/#zip\n * @returns this\n * @memberof Filelink\n */\n zip() {\n return this.addTask('zip', true);\n }\n\n /**\n * Add task which minify a css file\n *\n * @returns this\n * @memberof Filelink\n */\n minifyCss(params: MinifyCssParams) {\n return this.addTask('minify_css', params);\n }\n\n /**\n * Add task which minify a javascript file.\n * For better handling of 'targets' param, use with b64 flag enabled.\n *\n * @returns this\n * @memberof Filelink\n */\n minifyJs(params: MinifyJsParams) {\n return this.addTask('minify_js', params);\n }\n\n /**\n * Checks if source is external\n *\n * @private\n * @returns {boolean}\n * @memberof Filelink\n */\n private isSourceExternal(): boolean {\n if (!this.source) {\n throw new FilestackError('Source not Set');\n }\n\n let toTest = Array.isArray(this.source) ? this.source : [this.source];\n for (let i in toTest) {\n /* istanbul ignore next */\n if (!toTest.hasOwnProperty(i)) {\n continue;\n }\n\n if (toTest[i].indexOf('src:') === 0 || (toTest[i].indexOf('http') === 0 && toTest[i].indexOf('filestackcontent') === -1)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Validate every task against schema\n *\n * @private\n * @param {object[]} transformations - object which contain all transformations\n * @returns {void}\n * @memberof Filelink\n */\n private validateTasks(transformations: object[]): void {\n const res = Filelink.validator(this.arrayToObject(transformations, 'name', 'params'));\n if (res.errors.length) {\n throw new FilestackError(`Params validation error`, res.errors, FilestackErrorType.VALIDATION);\n }\n\n return;\n }\n\n /**\n * Returns correct cdn url with cname support\n *\n * @private\n * @returns {string}\n * @memberof Filelink\n */\n private getCdnHost(): string {\n let urls = Object.assign({}, config.urls);\n\n if (this.customDomain) {\n urls.cdnUrl = this.customDomain;\n }\n\n urls = resolveHost(urls, this.cname);\n\n return urls.cdnUrl;\n }\n\n /**\n * Returns applied transformations as string\n *\n * @private\n * @returns {string}\n * @memberof Filelink\n */\n private generateTransformString(): string {\n let transforms = [];\n\n this.transforms.forEach(el => {\n transforms.push(this.optionToString(el.name, el.params));\n });\n\n return transforms.join('/');\n }\n\n /**\n * Flatten transformation option to string\n *\n * @private\n * @example {resize:{width: 100,height: 200}} => resize=width:100,height:200\n * @param key - option key\n * @param values - option params\n */\n private optionToString(key: string, values: any): string {\n let optionsString: string[] = [];\n if (typeof values === 'undefined') {\n return key;\n }\n\n // if we just want to enable feature\n if (typeof values === 'boolean') {\n if (!values && key === 'cache') {\n return 'cache=false';\n }\n\n return key;\n }\n\n Object.keys(values).forEach(i => {\n if (Array.isArray(values[i])) {\n optionsString.push(`${i}:${this.arrayToString(values[i])}`);\n return;\n }\n\n optionsString.push(`${i}:${this.escapeValue(values[i])}`);\n });\n\n return `${key}=${optionsString.join(',')}`;\n }\n\n /**\n * Escape params values\n *\n * @private\n * @param {string} value\n * @returns {string}\n * @memberof Filelink\n */\n private escapeValue(value: string): string {\n if (typeof value !== 'string') {\n return value;\n }\n\n if (value.indexOf('/') > -1 || value.indexOf(',') > -1) {\n return `\"${value}\"`;\n }\n\n return value;\n }\n\n /**\n * Converts nested arrays to string\n *\n * @private\n * @example [1,2, [2,3]] => \"[1,2, [2,3]]\"\n * @param arr - any array\n */\n private arrayToString(arr: any[]): string {\n const toReturn = arr.map(el => {\n if (Array.isArray(el)) {\n return this.arrayToString(el);\n }\n\n return this.escapeValue(el);\n });\n\n return `[${toReturn}]`;\n }\n\n /**\n * Converts array of objects to object\n *\n * @private\n * @example [{name: 'resize', params: {height: 125}}] => {resize: {height: 125}}\n * @param arr - any array\n */\n private arrayToObject = (array: object[] = [], nameKey: string, dataKey: string) => {\n return array.reduce((obj, item) => {\n obj[item[nameKey]] = item[dataKey];\n return obj;\n }, {});\n }\n}\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nexport const StoreParamsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Store',\n description: 'Filestack Store Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n filename: {\n oneOf: [{\n type: 'string',\n }, {\n format: 'callback',\n }],\n },\n location: {\n '$ref': 'locationsDef',\n },\n path: {\n type: 'string',\n },\n container: {\n type: 'string',\n },\n region: {\n '$ref': 'regionsDef',\n },\n access: {\n type: 'string',\n enum: ['public', 'private'],\n default: 'private',\n },\n base64decode: {\n type: 'boolean',\n },\n workflows: {\n '$ref': 'workflowsDef',\n },\n disableStorageKey: {\n type: 'boolean',\n },\n tags: {\n type: 'object',\n additionalProperties: {\n type: 'string',\n },\n },\n sanitizer: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n exclude: {\n type: 'array',\n items: [{\n type: 'string',\n }],\n },\n replacement: {\n type: 'string',\n },\n },\n }],\n },\n },\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nexport const PreviewParamsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Preview',\n description: 'Filestack Preview Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n },\n css: {\n type: 'string',\n },\n },\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nexport const UploadParamsSchema = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Upload',\n description: 'Filestack Upload Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n partSize: {\n type: 'integer',\n minimum: 5 * 1024 * 1024,\n },\n concurrency: {\n type: 'integer',\n minimum: 1,\n maximum: 20,\n },\n progressInterval: {\n type: 'integer',\n minimum: 1,\n },\n retry: {\n type: 'integer',\n minimum: 0,\n maximum: 20,\n },\n retryFactor: {\n type: 'integer',\n },\n retryMaxTime: {\n type: 'integer',\n },\n timeout: {\n type: 'integer',\n minimum: 1,\n maximum: 60 * 60 * 1000,\n },\n intelligent: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n type: 'string',\n enum: ['fallback'],\n },\n ],\n },\n intelligentChunkSize: {\n type: 'integer',\n },\n onProgress: {\n format: 'callback',\n },\n onRetry: {\n format: 'callback',\n },\n disableIntegrityCheck: {\n type: 'boolean',\n },\n tags: {\n type: 'object',\n maxItems: 10,\n additionalProperties: {\n type: 'string',\n maxlength: 256,\n },\n },\n },\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport { UploadParamsSchema } from './upload.schema';\n\nexport const PickerParamsSchema = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Picker',\n description: 'Filestack Picker Options',\n type: 'object',\n additionalProperties: false,\n // required: ['container'],\n properties: {\n allowManualRetry: {\n type: 'boolean',\n },\n accept: {\n additionalProperties: false,\n oneOf: [\n {\n type: 'string',\n },\n {\n type: 'array',\n minItems: 1,\n items: [\n {\n type: 'string',\n },\n ],\n },\n ],\n },\n acceptFn: {\n format: 'callback',\n },\n fromSources: {\n type: 'array',\n items: [\n {\n type: ['string', 'object'],\n additionalProperties: false,\n enum: [\n 'local_file_system',\n 'url',\n 'imagesearch',\n 'facebook',\n 'instagram',\n 'googledrive',\n 'unsplash',\n 'dropbox',\n 'webcam',\n 'video',\n 'audio',\n 'box',\n 'github',\n 'gmail',\n 'googlephotos',\n 'onedrive',\n 'onedriveforbusiness',\n 'clouddrive',\n 'googlephotos',\n 'customsource',\n 'tint',\n ],\n },\n ],\n },\n container: {\n format: 'HTMLContainer',\n },\n cleanupImageExif: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n type: 'object',\n additionalProperties: false,\n properties: {\n keepOrientation: {\n type: 'boolean',\n },\n keepICCandAPP: {\n type: 'boolean',\n },\n },\n },\n ],\n },\n displayMode: {\n type: 'string',\n enum: ['inline', 'overlay', 'dropPane'],\n },\n concurrency: {\n type: 'integer',\n minimum: 1,\n maximum: 20,\n },\n supportEmail: {\n type: 'string',\n },\n customSourceContainer: {\n type: 'string',\n },\n customSourcePath: {\n type: 'string',\n },\n customSourceName: {\n type: 'string',\n },\n disableStorageKey: {\n type: 'boolean',\n },\n disableTransformer: {\n type: 'boolean',\n },\n disableThumbnails: {\n type: 'boolean',\n },\n exposeOriginalFile: {\n type: 'boolean',\n },\n globalDropZone: {\n type: 'boolean',\n },\n hideModalWhenUploading: {\n type: 'boolean',\n },\n imageDim: {\n type: 'array',\n minItems: 2,\n maxItems: 2,\n items: [\n {\n type: 'integer',\n minimum: 1,\n },\n ],\n },\n imageMax: {\n type: 'array',\n minItems: 2,\n maxItems: 2,\n items: [\n {\n type: 'integer',\n minimum: 1,\n },\n ],\n },\n imageMin: {\n type: 'array',\n minItems: 2,\n maxItems: 2,\n items: [\n {\n type: 'integer',\n minimum: 1,\n },\n ],\n },\n imageMinMaxBlock: {\n type: 'boolean',\n default: false,\n },\n lang: {\n type: 'string',\n enum: ['ca', 'da', 'de', 'en', 'es', 'fr', 'he', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'sv', 'ru', 'vi', 'zh', 'tr', 'ar'],\n },\n minFiles: {\n type: 'integer',\n minimum: 1,\n maximum: 1000000,\n },\n maxFiles: {\n type: 'integer',\n minimum: 1,\n maximum: 1000000,\n },\n maxSize: {\n type: 'integer',\n minimum: 1,\n },\n modalSize: {\n type: 'array',\n minItems: 2,\n maxItems: 2,\n items: [\n {\n type: 'integer',\n minimum: 1,\n maximum: 1000000,\n },\n ],\n },\n rootId: {\n type: 'string',\n },\n startUploadingWhenMaxFilesReached: {\n type: 'boolean',\n },\n uploadInBackground: {\n type: 'boolean',\n },\n videoResolution: {\n type: 'string',\n },\n onCancel: {\n format: 'callback',\n },\n onClose: {\n format: 'callback',\n },\n onOpen: {\n format: 'callback',\n },\n onFileSelected: {\n format: 'callback',\n },\n onFileUploadCancel: {\n format: 'callback',\n },\n onFileUploadStarted: {\n format: 'callback',\n },\n onFileUploadFinished: {\n format: 'callback',\n },\n onFileUploadFailed: {\n format: 'callback',\n },\n onFileUploadProgress: {\n format: 'callback',\n },\n onUploadStarted: {\n format: 'callback',\n },\n onUploadDone: {\n format: 'callback',\n },\n onFileCropped: {\n format: 'callback',\n },\n storeTo: {\n additionalProperties: false,\n type: 'object',\n properties: {\n filename: {\n type: 'string',\n },\n location: {\n $ref: 'locationsDef',\n },\n container: {\n type: 'string',\n },\n path: {\n type: 'string',\n },\n region: {\n type: 'string',\n },\n access: {\n type: 'string',\n enum: ['public', 'private'],\n },\n workflows: {\n $ref: 'workflowsDef',\n },\n },\n },\n viewType: {\n type: 'string',\n enum: ['grid', 'list'],\n },\n transformations: {\n type: 'object',\n additionalProperties: false,\n properties: {\n circle: {\n type: 'boolean',\n },\n rotate: {\n type: 'boolean',\n },\n force: {\n type: 'boolean',\n },\n crop: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n type: 'object',\n additionalProperties: false,\n properties: {\n force: {\n type: 'boolean',\n },\n aspectRatio: {\n type: 'number',\n },\n },\n },\n ],\n },\n },\n },\n customText: {\n type: 'object',\n patternProperties: {\n '.*': { type: 'string' },\n },\n },\n cropFiles: {\n type: 'array',\n minItems: 1,\n },\n loadCss: {\n type: 'string',\n },\n failOverMaxFiles: {\n type: 'boolean',\n },\n dropPane: {\n type: 'object',\n properties: {\n cropFiles: {\n type: 'array',\n minItems: 1,\n },\n customText: {\n type: 'string',\n },\n disableClick: {\n type: 'boolean',\n },\n overlay: {\n type: 'boolean',\n },\n showIcon: {\n type: 'boolean',\n },\n showProgress: {\n type: 'boolean',\n },\n onDragEnter: {\n format: 'callback',\n },\n onProgress: {\n format: 'callback',\n },\n onDragLeave: {\n format: 'callback',\n },\n onDragOver: {\n format: 'callback',\n },\n onDrop: {\n format: 'callback',\n },\n onSuccess: {\n format: 'callback',\n },\n onError: {\n format: 'callback',\n },\n onClick: {\n format: 'callback',\n },\n },\n },\n errorsTimeout: {\n type: 'number',\n minimum: 0,\n },\n customAuthText: {\n type: 'object',\n patternProperties: {\n '.*': {\n additionalProperties: false,\n type: 'object',\n required: ['top', 'bottom'],\n properties: {\n top: {\n type: 'string',\n },\n bottom: {\n type: 'string',\n },\n },\n },\n },\n },\n uploadConfig: {\n type: 'object',\n additionalProperties: false,\n properties: {\n // manual import upload definitions\n ...UploadParamsSchema.properties,\n tags: {\n type: 'object',\n additionalProperties: {\n anyOf: [\n {\n type: 'string',\n },\n {\n format: 'callback',\n },\n ],\n },\n },\n },\n },\n useSentryBreadcrumbs: {\n type: 'boolean',\n },\n pasteMode: {\n type: 'object',\n additionalProperties: false,\n properties: {\n pasteToFirstInViewPort: {\n type: 'boolean',\n },\n pasteToFirstInstance: {\n type: 'boolean',\n },\n },\n },\n },\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nexport const MetadataParamsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Metadata',\n description: 'Filestack Metadata Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n size: {\n type: 'boolean',\n },\n mimetype: {\n type: 'boolean',\n },\n filename: {\n type: 'boolean',\n },\n width: {\n type: 'boolean',\n },\n metadata: {\n type: 'boolean',\n },\n height: {\n type: 'boolean',\n },\n uploaded: {\n type: 'boolean',\n },\n writeable: {\n type: 'boolean',\n },\n cloud: {\n type: 'boolean',\n },\n sourceUrl: {\n type: 'boolean',\n },\n md5: {\n type: 'boolean',\n },\n sha1: {\n type: 'boolean',\n },\n sha224: {\n type: 'boolean',\n },\n sha256: {\n type: 'boolean',\n },\n sha384: {\n type: 'boolean',\n },\n sha512: {\n type: 'boolean',\n },\n location: {\n type: 'boolean',\n },\n path: {\n type: 'boolean',\n },\n container: {\n type: 'boolean',\n },\n exif: {\n type: 'boolean',\n },\n },\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nexport const RetrieveParamsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Retrieve',\n description: 'Filestack Retrieve Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n metadata: {\n type: 'boolean',\n },\n head: {\n type: 'boolean',\n },\n dl: {\n type: 'boolean',\n },\n cache: {\n type: 'boolean',\n },\n extension: {\n type: 'string',\n },\n },\n};\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 */\nimport { FsRequestOptions, FsResponse } from './types';\nimport { AdapterInterface } from './adapters/interface';\nimport { FsRequestError } from './error';\nimport { shouldRetry } from './helpers/shouldRetry';\nimport Debug from 'debug';\n\nconst debug = Debug('fs:request:dispatch');\n\n/**\n * Request dispatcher\n *\n * @export\n * @class Dispatch\n */\nexport class Dispatch {\n adapter: AdapterInterface;\n\n /**\n * Creates an instance of Dispatch.\n *\n * @param {AdapterInterface} adapter http | XHR adapater\n * @memberof Dispatch\n */\n constructor(adapter: AdapterInterface) {\n this.adapter = adapter;\n }\n\n /**\n * Dispatch request adding retry policy\n * @todo add data preprocesor\n *\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof Dispatch\n */\n public request(config: FsRequestOptions): Promise<FsResponse> {\n config.headers = config.headers || {};\n debug('Dispatching request %O', config);\n return this.adapter.request(config).catch((reason: FsRequestError) => {\n debug('Request error \"%s\": %O', reason, reason.response);\n return this.retry(reason);\n });\n }\n\n /**\n * Request retrier\n *\n * @private\n * @param {FsRequestError} err\n * @returns\n * @memberof Dispatch\n */\n private retry(err: FsRequestError) {\n const config = err.config;\n\n if (!shouldRetry(err)) {\n debug('[Retry] Request error is not retriable. Exiting');\n return Promise.reject(err);\n }\n\n if (!config.retry) {\n debug('[Retry] Retry config not found. Exiting');\n return Promise.reject(err);\n }\n\n const retryConfig = config.retry;\n let attempts = config.runtime && config.runtime.retryCount ? config.runtime.retryCount : 0;\n\n if (retryConfig.retry && retryConfig.retry <= attempts) {\n debug('[Retry] Retry attempts reached %d. Exiting', attempts);\n return Promise.reject(err);\n }\n\n const retryDelay = Math.max(Math.min(retryConfig.retryMaxTime, retryConfig.retryFactor ** attempts * 1000), 1);\n\n config.runtime = {\n ...config.runtime,\n retryCount: attempts + 1,\n };\n\n debug(`[Retry] Retrying request to ${config.url}, count ${attempts} of ${retryConfig.retry} - Delay: ${retryDelay}`);\n\n return new Promise<FsResponse>(resolve => {\n setTimeout(() => resolve(this.request(config)), retryDelay);\n });\n }\n}\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 */\nexport var RequestAdapter = require('./adapters/xhr').XhrAdapter;\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9yZXF1ZXN0X2FkYXB0ZXIuYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsSUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsVUFBVSxDQUFDIiwiZmlsZSI6ImxpYi9yZXF1ZXN0L3JlcXVlc3RfYWRhcHRlci5icm93c2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOCBieSBGaWxlc3RhY2tcbiAqIFNvbWUgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RBZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy94aHInKS5YaHJBZGFwdGVyO1xuIl19\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 */\nimport { FsRequestOptions, FsHttpMethod, FsResponse } from './types';\nimport { Dispatch } from './dispatch';\nimport { RequestAdapter } from './request_adapter.node';\n\n/**\n * Main isomorphic Filestack request library\n *\n * @export\n * @class FsRequest\n */\nexport class FsRequest {\n /**\n * Request static instance\n *\n * @private\n * @static\n * @type {FsRequest}\n * @memberof FsRequest\n */\n private static instance: FsRequest;\n\n /**\n * Default request options\n *\n * @private\n * @type {RequestOptions}\n * @memberof FsRequest\n */\n private defaults: FsRequestOptions;\n\n /**\n * Request Dispatcher\n *\n * @private\n * @type {Dispatch}\n * @memberof FsRequest\n */\n private dispatcher: Dispatch;\n\n /**\n * Creates an instance of Request.\n *\n * @param {RequestOptions} [config]\n * @memberof FsRequest\n */\n constructor(config?: FsRequestOptions) {\n\n this.defaults = config;\n this.dispatcher = new Dispatch(new RequestAdapter());\n }\n\n /**\n * Returns static FsRequest instance\n *\n * @private\n * @static\n * @returns\n * @memberof FsRequest\n */\n private static getInstance() {\n if (!FsRequest.instance) {\n FsRequest.instance = new FsRequest();\n }\n\n return FsRequest.instance;\n }\n\n /**\n * Run request with given adapter\n *\n * @param {RequestOptions} config\n * @returns\n * @memberof Request\n */\n\n public dispatch(config: FsRequestOptions) {\n if (!config.method) {\n config.method = FsHttpMethod.GET;\n }\n\n return this.dispatcher.request(Object.assign({}, this.defaults, config));\n }\n\n /**\n * Dispatch request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static dispatch(url: string, config: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { url }));\n }\n\n /**\n * Dispatch GET request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static get(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.GET, url }));\n }\n\n /**\n * Dispatch HEAD request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static head(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.HEAD, url }));\n }\n\n /**\n * Dispatch OPTIONS request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static options(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.OPTIONS, url }));\n }\n\n /**\n * Dispatch PURGE request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static purge(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.PURGE, url }));\n }\n\n /**\n * Dispatch DELETE request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static delete(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.DELETE, url }));\n }\n\n /**\n * Dispatch POST request\n *\n * @static\n * @param {string} url\n * @param {*} [data]\n * @param {FsRequestOptions} [config]\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static post(url: string, data?: any, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.POST, url, data }));\n }\n\n /**\n * Dispatch PUT request\n *\n * @static\n * @param {string} url\n * @param {*} [data]\n * @param {FsRequestOptions} [config]\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static put(url: string, data?: any, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.PUT, url, data }));\n }\n\n /**\n * Dispatch PATCH request\n *\n * @static\n * @param {string} url\n * @param {*} [data]\n * @param {FsRequestOptions} [config]\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static path(url: string, data?: any, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.PATH, url, data }));\n }\n}\n\nexport default FsRequest;\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 */\nimport { EventEmitter } from 'eventemitter3';\n\n/**\n * Filestack token that allow pause, resume or cancel given upload\n *\n * @export\n * @class FsToken\n * @extends {EventEmitter}\n */\nexport class FsCancelToken extends EventEmitter {\n\n /**\n * Cancel request action\n *\n * @param {(string | Error)} [reason]\n * @memberof Token\n */\n public cancel(reason?: string | Error) {\n this.emit('cancel', reason);\n\n this.removeAllListeners();\n }\n\n}\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 { Security, Session } from '../client';\nimport { Filelink } from './../filelink';\nimport { removeEmpty } from '../utils';\nimport { FsResponse } from './../request/types';\nimport { FilestackError } from './../../filestack_error';\nimport { getValidator, MetadataParamsSchema, RetrieveParamsSchema } from './../../schema';\nimport { FsRequest, FsHttpMethod } from '../request';\n\n/**\n * Remove given file\n *\n * @private\n * @param session\n * @param handle\n * @param security\n */\nexport const remove = (session: Session, handle?: string, skipStorage?: boolean, security?: Security): Promise<any> => {\n if (!handle || typeof handle !== 'string') {\n throw new FilestackError('A valid Filestack handle is required for remove');\n }\n\n if (!(session.policy && session.signature) && (!security || !(security.policy && security.signature))) {\n throw new FilestackError('Security policy and signature are required for remove');\n }\n\n const fileApiUrl = session.urls.fileApiUrl;\n const baseURL = `${fileApiUrl}/${handle}`;\n const options: any = {\n key: session.apikey,\n policy: (security && security.policy) || session.policy,\n signature: (security && security.signature) || session.signature,\n };\n\n if (skipStorage) {\n options.skip_storage = true;\n }\n\n return FsRequest.delete(baseURL, {\n filestackHeaders: false,\n params: removeEmpty(options),\n });\n};\n\nexport interface MetadataOptions {\n size?: boolean;\n mimetype?: boolean;\n filename?: boolean;\n width?: boolean;\n height?: boolean;\n uploaded?: boolean;\n writeable?: boolean;\n cloud?: boolean;\n sourceUrl?: boolean;\n md5?: boolean;\n sha1?: boolean;\n sha224?: boolean;\n sha256?: boolean;\n sha384?: boolean;\n sha512?: boolean;\n location?: boolean;\n path?: boolean;\n container?: boolean;\n exif?: boolean;\n}\n\n/**\n * Returns file metadata\n *\n * @private\n * @param session\n * @param handle\n * @param opts\n * @param security\n */\nexport const metadata = (session: Session, handle?: string, opts?: MetadataOptions, security?: Security): Promise<any> => {\n if (!handle || typeof handle !== 'string') {\n throw new FilestackError('A valid Filestack handle is required for metadata');\n }\n\n const validateRes = getValidator(MetadataParamsSchema)(opts);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid metadata params`, validateRes.errors);\n }\n\n const options: any = { ...opts };\n options.source_url = options.sourceUrl; // source_url is snake_case\n options.policy = (security && security.policy) || session.policy;\n options.signature = (security && security.signature) || session.signature;\n\n const baseURL = `${session.urls.fileApiUrl}/${handle}/metadata`;\n return new Promise((resolve, reject) => {\n FsRequest.get(baseURL, { params: removeEmpty(options), filestackHeaders: false })\n .then(res => resolve({ ...res.data, handle }))\n .catch(reject);\n });\n};\n\n/**\n * Download file to blob or buffer format\n *\n * @param session\n * @param handle\n */\nexport const download = (session: Session, handle: string, security?: Security): Promise<FsResponse> => {\n const fl = new Filelink(handle, session.apikey);\n\n const policy = (security && security.policy) || session.policy;\n const signature = (security && security.signature) || session.signature;\n\n if (policy && signature) {\n fl.security({ signature, policy });\n }\n\n return FsRequest.dispatch(fl.toString(), { method: FsHttpMethod.GET, blobResponse: true });\n};\n\nexport interface RetrieveOptions {\n metadata?: boolean;\n head?: boolean;\n dl?: boolean;\n extension?: string;\n cache?: boolean;\n}\n\n/**\n * Returns file information\n *\n * @private\n * @deprecated\n * @param session\n * @param handle\n * @param options\n * @param security\n */\nexport const retrieve = (session: Session, handle: string, options: RetrieveOptions = {}, security?: Security): Promise<Object | Blob> => {\n if (!handle || handle.length === 0 || typeof handle !== 'string') {\n throw new FilestackError('File handle is required');\n }\n\n console.info('Retrieve method is deprecated and it will be removed. Please use metadata or download');\n\n const validateRes = getValidator(RetrieveParamsSchema)(options);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid retrieve params`, validateRes.errors);\n }\n\n const requestOptions: any = { ...options };\n requestOptions.key = session.apikey;\n requestOptions.policy = (security && security.policy) || session.policy;\n requestOptions.signature = (security && security.signature) || session.signature;\n\n let method: FsHttpMethod = FsHttpMethod.GET;\n\n if (requestOptions.head) {\n method = FsHttpMethod.HEAD;\n delete requestOptions.head;\n }\n\n let extension;\n\n if (requestOptions.extension && requestOptions.extension.length) {\n extension = requestOptions.extension;\n delete requestOptions.extension;\n }\n\n let metadata;\n if (requestOptions.metadata) {\n if (method === FsHttpMethod.HEAD) {\n throw new FilestackError('Head and metadata options cannot be used together');\n }\n\n metadata = requestOptions.metadata;\n delete requestOptions.metadata;\n }\n\n const baseURL = `${session.urls.fileApiUrl}/${handle}` + (extension ? `+${extension}` : '') + (metadata ? '/metadata' : '');\n\n return new Promise((resolve, reject) => {\n FsRequest.dispatch(baseURL, {\n method,\n filestackHeaders: false,\n params: removeEmpty(requestOptions),\n })\n .then(res => resolve(method === FsHttpMethod.HEAD ? res.headers : res.data))\n .catch(reject);\n });\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 { Session } from '../client';\nimport { Filelink } from './../filelink';\n\n/**\n * @private\n */\nconst toSnakeCase = (original: { [index: string]: any }): { [index: string]: any } => {\n let snakeCased: { [index: string]: any } = {};\n\n const keys = Object.keys(original);\n\n for (let i = 0; i < keys.length; i++) {\n let newKey = keys[i].split(/(?=[A-Z])/).join('_').toLowerCase();\n\n if (typeof original[keys[i]] === 'object' && !Array.isArray(original[keys[i]])) {\n snakeCased[newKey] = toSnakeCase(original[keys[i]]);\n } else {\n snakeCased[newKey] = original[keys[i]];\n }\n }\n\n return snakeCased;\n};\n\n/**\n * Align enum\n */\nexport enum EAlignOptions {\n left = 'left',\n right = 'right',\n center = 'center',\n bottom = 'bottom',\n top = 'top',\n}\n\n/**\n * Align enum with faces option\n */\nexport enum EAlignFacesOptions {\n left = 'left',\n right = 'right',\n center = 'center',\n bottom = 'bottom',\n top = 'top',\n faces = 'faces',\n}\n\n/**\n * Fit enum\n */\nexport enum EFitOptions {\n clip = 'clip',\n crop = 'crop',\n scale = 'scale',\n max = 'max',\n}\n\n/**\n * Blur enum\n */\nexport enum EBlurMode {\n linear = 'linear',\n gaussian = 'gaussian',\n}\n\n/**\n * Shapes enum\n */\nexport enum EShapeType {\n oval = 'oval',\n rect = 'rect',\n}\n\n/**\n * Noise type enum\n */\nexport enum ENoiseType {\n none = 'none',\n low = 'low',\n medium = 'medium',\n high = 'high',\n}\n\n/**\n * Style type enum\n */\nexport enum EStyleType {\n artwork = 'artwork',\n photo = 'photo',\n}\n\n/**\n * Color space enum\n */\nexport enum EColorspaceType {\n RGB = 'RGB',\n CMYK = 'CMYK',\n Input = 'Input',\n}\n\n/**\n * Crop faces options enum\n */\nexport enum ECropfacesType {\n thumb = 'thumb',\n crop = 'crop',\n fill = 'fill',\n}\n\n/**\n * SmartCrop mode options enum\n */\nexport enum ESmartCropMode {\n fit = 'fit',\n auto = 'auto',\n}\n\nexport enum EImageWatermarkPosition {\n top = 'top',\n middle = 'middle',\n bottom = 'bottom',\n left = 'left',\n center = 'center',\n right = 'right',\n}\n\n/**\n * Convert to format\n */\nexport enum EVideoTypes {\n h264 = 'h264',\n h264_hi = 'h264.hi',\n webm = 'webm',\n 'webm-hi' = 'webm.hi',\n ogg = 'ogg',\n 'ogg-hi' = 'ogg.hi',\n 'hls-variant' = 'hls.variant',\n mp3 = 'mp3',\n oga = 'oga',\n m4a = 'm4a',\n aac = 'aac',\n hls = 'hls.variant.audio',\n}\n\nexport enum EUrlscreenshotAgent {\n desktop = 'desktop',\n mobile = 'mobile',\n}\n\nexport enum EUrlscreenshotMode {\n all = 'all',\n window = 'window',\n}\n\nexport enum EUrlscreenshotOrientation {\n portrait = 'portrait',\n landscape = 'landscape',\n}\n\n/**\n * Video storage location\n */\nexport enum EVideoLocations {\n s3 = 's3',\n azure = 'azure',\n gcs = 'gcs',\n rackspace = 'rackspace',\n dropbox = 'dropbox',\n}\n\nexport enum EVideoAccess {\n private = 'private',\n public = 'public',\n}\n\nexport enum EVideoAccessMode {\n preserve = 'preserve',\n constrain = 'constrain',\n letterbox = 'letterbox',\n pad = 'pad',\n crop = 'crop',\n}\n\n/**\n * @see https://www.filestack.com/docs/image-transformations\n */\nexport interface TransformOptions {\n flip?: boolean;\n compress?: boolean;\n flop?: boolean;\n no_metadata?: boolean;\n pjpg?: {\n quality: number;\n metadata: boolean;\n };\n smart_crop?: {\n mode?: ESmartCropMode\n width: number;\n height: number;\n };\n watermark?: {\n files: string;\n size?: number;\n position?: EImageWatermarkPosition | EImageWatermarkPosition[];\n };\n imagesize?: boolean;\n enchance?: boolean;\n redeye?: boolean;\n monochrome?: boolean;\n negative?: boolean;\n tags?: boolean;\n sfw?: boolean;\n store?: {\n filename?: string,\n location?: string,\n path?: string,\n container?: string,\n region?: string;\n access?: string;\n base64decode?: boolean;\n };\n resize?: {\n width?: number;\n height?: number;\n fit?: EFitOptions;\n align?: EAlignFacesOptions;\n };\n crop?: {\n dim: [number, number, number, number]\n };\n rotate?: {\n deg: number | string;\n color?: string;\n background?: string;\n };\n detect_faces?: {\n minsize?: number;\n maxsize?: number;\n color?: string;\n export?: boolean;\n } | true;\n crop_faces?: {\n mode?: ECropfacesType;\n width?: number;\n height?: number;\n faces?: number | string;\n buffer?: number;\n };\n pixelate_faces?: {\n faces?: number | string;\n minsize?: number;\n maxsize?: number;\n buffer?: number;\n amount?: number;\n blur?: number;\n type?: EShapeType;\n };\n blur_faces?: {\n faces?: number | string;\n minsize?: number;\n maxsize?: number;\n buffer?: number;\n amount?: number;\n blur?: number;\n type?: EShapeType;\n };\n rounded_corners?: {\n radius?: number;\n blur?: number;\n background?: string;\n } | true;\n vignette?: {\n amount?: number;\n blurmode?: EBlurMode;\n background?: string;\n };\n polaroid?: {\n color?: string;\n rotate?: number;\n background?: string;\n } | true;\n torn_edges?: {\n spread?: [number, number];\n background?: string;\n } | true;\n shadow?: {\n blur?: number;\n opacity?: number;\n vector?: [number, number];\n color?: string;\n background?: string;\n } | true;\n circle?: {\n background?: string;\n } | true;\n border?: {\n width?: number;\n color?: string;\n background?: string;\n } | true;\n sharpen?: {\n amount: number;\n } | true;\n blur?: {\n amount: number;\n } | true;\n blackwhite?: {\n threshold: number;\n } | true;\n sepia?: {\n tone: number;\n } | true;\n pixelate?: {\n amount: number;\n } | true;\n oil_paint?: {\n amount: number;\n } | true;\n modulate?: {\n brightness?: number;\n hue?: number;\n saturation?: number;\n } | true;\n partial_pixelate?: {\n amount?: number;\n blur?: number;\n type?: EShapeType;\n objects?: [[number, number, number, number]];\n };\n partial_blur?: {\n amount: number;\n blur?: number;\n type?: EShapeType;\n objects?: [[number, number, number, number]];\n };\n collage?: {\n margin?: number;\n width?: number;\n height?: number;\n color?: string;\n fit?: EFitOptions,\n files: [string];\n };\n upscale?: {\n upscale?: boolean;\n noise?: ENoiseType;\n style?: EStyleType;\n } | true;\n ascii?: {\n background?: string;\n foreground?: string;\n colored?: boolean;\n size?: number;\n reverse?: boolean;\n } | true;\n quality?: {\n value: number;\n };\n security?: {\n policy: string;\n signature?: string;\n };\n output?: {\n format: string;\n colorspace?: string;\n strip?: boolean;\n quality?: number;\n page?: number;\n compress?: boolean;\n density?: number;\n background?: string;\n secure?: boolean;\n docinfo?: boolean;\n pageformat?: string;\n pageorientation?: string;\n };\n cache?: {\n cache?: boolean;\n expiry: number;\n };\n // audio/video\n video_convert?: {\n aspect_mode: EVideoAccessMode;\n preset?: EVideoTypes;\n force?: boolean;\n title?: string;\n extname?: string;\n filename?: string;\n location?: EVideoLocations;\n path?: string;\n access?: EVideoAccess;\n container?: string;\n audio_bitrate?: number;\n upscale: boolean;\n video_bitrate?: number;\n audio_sample_rate?: number;\n audio_channels?: number;\n clip_length?: string;\n clip_offset?: string;\n width?: number;\n height?: number;\n two_pass?: boolean;\n fps?: number;\n keyframe_interval?: number;\n watermark_url?: string;\n watermark_top?: number;\n watermark_bottom?: number;\n watermark_right?: number;\n watermark_left?: number;\n watermark_width?: number;\n watermark_height?: number;\n };\n urlscreenshot?: {\n agent?: EUrlscreenshotAgent;\n width?: number;\n height?: number;\n mode?: EUrlscreenshotMode;\n delay?: number;\n orientation?: EUrlscreenshotOrientation;\n device?: string;\n } | true;\n pdfinfo?: {\n colorinfo?: boolean\n } | true;\n pdfconvert?: {\n pageorientation?: string\n pageformat?: string\n pages?: (string | number)[]\n };\n}\n\n/**\n * Creates filestack transform url.\n * Transform params can be provided in camelCase or snakeCase style\n *\n * @example\n * ```js\n * // camelCase\n * console.log(transform(session, {\n * partialPixelate: {\n * objects: [[10, 20, 200, 250], [275, 91, 500, 557]],\n * },\n * }, 'testfile'));\n * ```\n * result => https://cdn.filestackcontent.com/partial_pixelate=objects:[[10,20,200,250],[275,91,500,557]]/testfile\n *\n * ```js\n * // snake_case\n * console.log(transform(session, {\n * partial_pixelate: {\n * objects: [[10, 20, 200, 250], [275, 91, 500, 557]],\n * },\n * }, 'testfile'));\n * ```\n * result => https://cdn.filestackcontent.com/partial_pixelate=objects:[[10,20,200,250],[275,91,500,557]]/testfile\n *\n * Client.transform is deprecated. Use Filelink class instead\n *\n * @private\n * @throws Error\n * @param options Transformation options\n * @param url url, handle or array of elements\n */\nexport const transform = (session: Session, url: string | string[], options: TransformOptions = {}, b64: boolean = false): string => {\n options = toSnakeCase(options);\n\n if (session.policy && session.signature) {\n options.security = {\n policy: session.policy,\n signature: session.signature,\n };\n }\n\n const filelink = new Filelink(url, session.apikey);\n filelink.setCname(session.cname);\n filelink.setBase64(b64);\n\n Object.keys(options).forEach((key: keyof TransformOptions) => {\n if (typeof options[key] === 'boolean' && !options[key] && key !== 'cache') {\n return;\n }\n\n filelink.addTask(key, options[key]);\n });\n\n return filelink.toString();\n};\n", "/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport { md5, sanitizeName, SanitizeOptions } from './../../utils';\n\nexport interface UploadTags {\n [key: string]: string;\n}\n\nexport interface FileInstance {\n name: string;\n type: string;\n size: number;\n slice: (start: number, end: number) => Promise<ArrayBuffer>;\n release?: () => void;\n}\n\nexport const enum FileState {\n INIT = 'Initialized',\n PROGRESS = 'Progress',\n STORED = 'Stored',\n INTRANSIT = 'InTransit',\n FAILED = 'Failed',\n}\n\nexport interface FilePartMetadata {\n startByte: number;\n endByte: number;\n partNumber: number;\n size: number;\n}\n\nexport interface FilePart extends FilePartMetadata {\n buffer: Buffer | ArrayBuffer;\n md5?: string;\n}\n\nexport interface FileChunk extends FilePart {\n offset: number; // offset for chunk - from part start\n}\n\n/**\n * File representation to unify file object in nodejs and browser\n *\n * @export\n * @class File\n */\nexport class File {\n\n public status: FileState;\n\n public handle: string;\n\n public url: string;\n\n public container: string;\n\n public key: string;\n\n public workflows: any[];\n\n public uploadTags: UploadTags;\n\n constructor(private readonly _file: FileInstance, private readonly _sanitizeOptions?: SanitizeOptions) {\n this._file.name = sanitizeName(this._file.name, this._sanitizeOptions);\n }\n\n /**\n * Returns file name\n *\n * @returns {string}\n * @memberof File\n */\n public get name(): string {\n return this._file.name;\n }\n\n /**\n * Alias for name getter\n *\n * @readonly\n * @type {string}\n * @memberof File\n */\n public get filename(): string {\n return this.name;\n }\n\n /**\n * Sets new file name and cleanup extra chars\n *\n * @memberof File\n */\n public set name(val: string) {\n this._file.name = sanitizeName(val, this._sanitizeOptions);\n }\n\n /**\n * Sets custom name using string or function\n * Name will be sanitized\n *\n * @memberof File\n */\n public set customName(val: ((file: this) => string) | string) {\n switch (typeof val) {\n case 'string':\n this.name = val;\n break;\n case 'function':\n const newName = val(this);\n if (typeof newName !== 'string') {\n throw new Error(`Name function must return a string. Current return type is ${typeof val}`);\n }\n\n this.name = val(this);\n break;\n }\n }\n\n /**\n * Returns file type\n *\n * @default 'application/octet-stream'\n * @returns {string}\n * @memberof File\n */\n public get type(): string {\n /* istanbul ignore next */\n return this._file.type || 'application/octet-stream';\n }\n\n /**\n * Alias for file type\n *\n * @readonly\n * @type {string}\n * @memberof File\n */\n public get mimetype(): string {\n return this.type;\n }\n\n /**\n * Returns file size\n *\n * @returns {number}\n * @memberof File\n */\n public get size(): number {\n return this._file.size;\n }\n\n /**\n * Returns number of parts according to part size\n *\n * @param {number} size - part size in bytes\n * @returns {number}\n * @memberof File\n */\n public getPartsCount (size: number): number {\n return Math.ceil(this._file.size / size);\n }\n\n /**\n * Returns part metadata\n *\n * @param {number} [partNum=0]\n * @param {*} size\n * @returns {FilePartMetadata}\n * @memberof File\n */\n public getPartMetadata (partNum: number, size: number): FilePartMetadata {\n const startByte = size * partNum;\n\n if (startByte > this._file.size) {\n throw new Error(`Start byte of the part is higher than buffer size`);\n }\n\n const endByte = Math.min(startByte + size, this._file.size);\n\n return {\n partNumber: partNum,\n startByte,\n endByte,\n size: endByte - startByte,\n };\n }\n\n /**\n * Returns part metadata + buffer\n *\n * @param {FilePartMetadata} meta\n * @returns {FilePart}\n * @memberof File\n */\n public async getPartByMetadata(meta: FilePartMetadata, md5Enabled: boolean = true): Promise<FilePart> {\n let slice = await this._file.slice(meta.startByte, meta.endByte);\n\n return Promise.resolve({\n ...meta,\n buffer: slice,\n md5: md5Enabled ? md5(slice) : undefined,\n });\n }\n\n /**\n * Returns part chunk\n *\n * @param {FilePartMetadata} meta\n * @param {number} offset\n * @param {number} chunkSize\n * @returns {FilePart}\n * @memberof File\n */\n public async getChunkByMetadata(meta: FilePartMetadata, offset: number, chunkSize: number, md5Enabled: boolean = true): Promise<FileChunk> {\n const startByte = meta.startByte + offset;\n const endByte = Math.min(startByte + chunkSize, meta.endByte);\n\n let slice = await this._file.slice(startByte, endByte);\n\n return Promise.resolve({\n ...meta,\n buffer: slice,\n md5: md5Enabled ? md5(slice) : undefined,\n size: slice.byteLength,\n startByte,\n endByte,\n offset,\n });\n }\n /**\n * Cleanup file buffer to release memory\n *\n * @memberof File\n */\n public release() {\n if (this._file.release) {\n this._file.release();\n }\n }\n\n public toJSON() {\n return {\n name: this.name,\n status: this.status,\n type: this.type,\n size: this.size,\n url: this.url,\n handle: this.handle,\n uploadTags: this.uploadTags,\n };\n }\n}\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 * from './store.node';\n\nexport enum STORE_TYPE {\n SESSION = 'sessionStorage',\n LOCAL = 'localStorage',\n}\n", "import { __awaiter, __generator } from \"tslib\";\n/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport { File as FsFile } from './file';\nimport { getMimetype } from './../../utils';\nimport { FilestackError } from './../../../filestack_error';\nimport fileType from 'file-type';\nvar base64Regexp = /data:([a-zA-Z]*\\/[a-zA-Z]*);base64,([^\\\"]*)/i;\n/**\n * Check if file is blob\n * @param input\n */\nvar isFileBlob = function (input) { return input.toString() === '[object Blob]'; };\n/**\n * Check if input is instance of browser file\n *\n * @browser\n * @param input\n */\nvar isFileBrowser = function (input) { return input instanceof File; };\n/**\n * Check if file is base64 string\n *\n * @param input\n */\nvar isFileBase = function (input) {\n if (typeof input !== 'string') {\n return false;\n }\n if (input.indexOf('base64') > -1) {\n input = input.match(base64Regexp).pop();\n }\n try {\n return btoa(atob(input)) === input;\n }\n catch (err) {\n /* istanbul ignore next */\n return false;\n }\n};\n/**\n * Check if file is instance of named interface\n *\n * @param input\n */\nvar isFileNamed = function (input) { return input && input['file'] && input['name']; };\n/**\n * Convert encoded base64 string or dataURI to blob\n *\n * @browser\n * @param b64data String to decode\n * @param sliceSize Byte quantity to split data into\n * @private\n * @returns {Blob}\n */\nvar b64toBlob = function (b64Data, sliceSize) {\n if (sliceSize === void 0) { sliceSize = 512; }\n var contentType = '';\n if (b64Data.indexOf('base64') > -1) {\n var matches = b64Data.match(base64Regexp);\n b64Data = matches.pop();\n contentType = matches[1];\n }\n var byteCharacters = atob(b64Data);\n var byteArrays = [];\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n var slice = byteCharacters.slice(offset, offset + sliceSize);\n var byteNumbers = new Array(slice.length);\n for (var i = 0; i < slice.length; i += 1) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n byteArrays.push(new Uint8Array(byteNumbers));\n }\n return new Blob(byteArrays, { type: contentType });\n};\n/**\n * Read file as array buffer\n *\n * @browser\n * @private\n * @param blob\n * @returns {Boolean}\n */\nvar readFile = function (file) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n /* istanbul ignore next */\n if (!File || !FileReader || !Blob) {\n return [2 /*return*/, Promise.reject(new FilestackError('The File APIs are not fully supported by your browser'))];\n }\n return [2 /*return*/, Promise.resolve({\n slice: function (start, end) {\n return readPart(start, end, file);\n },\n release: function () {\n file = null;\n },\n })];\n });\n}); };\n/**\n * Read file par instead of whole file to avoid browser crashing\n *\n * @param start - star byte\n * @param end - end byte\n * @param file - file to slice\n */\nvar readPart = function (start, end, file) {\n return new Promise(function (resolve, reject) {\n var r = new FileReader();\n var blob = file.slice(start, end);\n r.onload = function () { return resolve(r.result); };\n r.onerror = reject;\n r.readAsArrayBuffer(blob);\n });\n};\n/**\n * Accepts b64string or blob file\n *\n * @browser\n * @param {*} fileOrString\n * @returns {Promise<File>}\n */\nexport var getFile = function (input, sanitizeOptions) {\n var filename;\n var file;\n if (isFileNamed(input)) {\n filename = input.name;\n input = input.file;\n }\n if (isFileBrowser(input)) {\n file = input;\n filename = input.name;\n }\n else if (isFileBase(input)) {\n file = b64toBlob(input);\n }\n else if (isFileBlob(input)) {\n file = input;\n }\n else {\n return Promise.reject(new FilestackError('Unsupported input file type'));\n }\n return readFile(file).then(function (res) { return __awaiter(void 0, void 0, void 0, function () {\n var mime, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n mime = file.type;\n if (!(!file.type || file.type.length === 0 || file.type === 'text/plain')) return [3 /*break*/, 2];\n _a = getMimetype;\n return [4 /*yield*/, res.slice(0, fileType.minimumBytes)];\n case 1:\n mime = _a.apply(void 0, [_b.sent(), filename]);\n _b.label = 2;\n case 2: return [2 /*return*/, new FsFile({\n name: filename,\n size: file.size,\n type: mime,\n slice: res.slice,\n release: res.release,\n }, sanitizeOptions)];\n }\n });\n }); });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpL3VwbG9hZC9maWxlX3Rvb2xzLmJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLE9BQU8sRUFBbUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFVakMsSUFBTSxZQUFZLEdBQUcsOENBQThDLENBQUM7QUFFcEU7OztHQUdHO0FBQ0gsSUFBTSxVQUFVLEdBQUcsVUFBQyxLQUFnQixJQUFvQixPQUFBLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxlQUFlLEVBQXBDLENBQW9DLENBQUM7QUFFN0Y7Ozs7O0dBS0c7QUFDSCxJQUFNLGFBQWEsR0FBRyxVQUFDLEtBQWdCLElBQW9CLE9BQUEsS0FBSyxZQUFZLElBQUksRUFBckIsQ0FBcUIsQ0FBQztBQUVqRjs7OztHQUlHO0FBQ0gsSUFBTSxVQUFVLEdBQUcsVUFBQyxLQUFnQjtJQUNsQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQ2hDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQ3pDO0lBRUQsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQztLQUNwQztJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osMEJBQTBCO1FBQzFCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDLENBQUM7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QUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFBOztvQkFBNUQsSUFBSSxHQUFHLGtCQUFZLFNBQXlDLEVBQUUsUUFBUSxFQUFDLENBQUM7O3dCQUcxRSxzQkFBTyxJQUFJLE1BQU0sQ0FDZjt3QkFDRSxJQUFJLEVBQUUsUUFBUTt3QkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsSUFBSSxFQUFFLElBQUk7d0JBQ1YsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO3dCQUNoQixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87cUJBQ3JCLEVBQ0QsZUFBZSxDQUNoQixFQUFDOzs7U0FDSCxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJmaWxlIjoibGliL2FwaS91cGxvYWQvZmlsZV90b29scy5icm93c2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOSBieSBGaWxlc3RhY2suXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IEZpbGUgYXMgRnNGaWxlIH0gZnJvbSAnLi9maWxlJztcbmltcG9ydCB7IFNhbml0aXplT3B0aW9ucywgZ2V0TWltZXR5cGUgfSBmcm9tICcuLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEZpbGVzdGFja0Vycm9yIH0gZnJvbSAnLi8uLi8uLi8uLi9maWxlc3RhY2tfZXJyb3InO1xuaW1wb3J0IGZpbGVUeXBlIGZyb20gJ2ZpbGUtdHlwZSc7XG5cbmV4cG9ydCB0eXBlIFJhd0ZpbGUgPSBCbG9iIHwgQnVmZmVyIHwgRmlsZSB8IHN0cmluZztcbmV4cG9ydCB0eXBlIE5hbWVkSW5wdXRGaWxlID0ge1xuICBuYW1lPzogc3RyaW5nO1xuICBmaWxlOiBSYXdGaWxlO1xufTtcblxudHlwZSBJbnB1dEZpbGUgPSBSYXdGaWxlIHwgTmFtZWRJbnB1dEZpbGU7XG5cbmNvbnN0IGJhc2U2NFJlZ2V4cCA9IC9kYXRhOihbYS16QS1aXSpcXC9bYS16QS1aXSopO2Jhc2U2NCwoW15cXFwiXSopL2k7XG5cbi8qKlxuICogQ2hlY2sgaWYgZmlsZSBpcyBibG9iXG4gKiBAcGFyYW0gaW5wdXRcbiAqL1xuY29uc3QgaXNGaWxlQmxvYiA9IChpbnB1dDogSW5wdXRGaWxlKTogaW5wdXQgaXMgQmxvYiA9PiBpbnB1dC50b1N0cmluZygpID09PSAnW29iamVjdCBCbG9iXSc7XG5cbi8qKlxuICogQ2hlY2sgaWYgaW5wdXQgaXMgaW5zdGFuY2Ugb2YgYnJvd3NlciBmaWxlXG4gKlxuICogQGJyb3dzZXJcbiAqIEBwYXJhbSBpbnB1dFxuICovXG5jb25zdCBpc0ZpbGVCcm93c2VyID0gKGlucHV0OiBJbnB1dEZpbGUpOiBpbnB1dCBpcyBGaWxlID0+IGlucHV0IGluc3RhbmNlb2YgRmlsZTtcblxuLyoqXG4gKiBDaGVjayBpZiBmaWxlIGlzIGJhc2U2NCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gaW5wdXRcbiAqL1xuY29uc3QgaXNGaWxlQmFzZSA9IChpbnB1dDogSW5wdXRGaWxlKTogaW5wdXQgaXMgc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaW5wdXQuaW5kZXhPZignYmFzZTY0JykgPiAtMSkge1xuICAgIGlucHV0ID0gaW5wdXQubWF0Y2goYmFzZTY0UmVnZXhwKS5wb3AoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGJ0b2EoYXRvYihpbnB1dCkpID09PSBpbnB1dDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgZmlsZSBpcyBpbnN0YW5jZSBvZiBuYW1lZCBpbnRlcmZhY2VcbiAqXG4gKiBAcGFyYW0gaW5wdXRcbiAqL1xuY29uc3QgaXNGaWxlTmFtZWQgPSAoaW5wdXQ6IElucHV0RmlsZSk6IGlucHV0IGlzIE5hbWVkSW5wdXRGaWxlID0+IGlucHV0ICYmIGlucHV0WydmaWxlJ10gJiYgaW5wdXRbJ25hbWUnXTtcblxuLyoqXG4gKiBDb252ZXJ0IGVuY29kZWQgYmFzZTY0IHN0cmluZyBvciBkYXRhVVJJIHRvIGJsb2JcbiAqXG4gKiBAYnJvd3NlclxuICogQHBhcmFtIGI2NGRhdGEgICAgIFN0cmluZyB0byBkZWNvZGVcbiAqIEBwYXJhbSBzbGljZVNpemUgICBCeXRlIHF1YW50aXR5IHRvIHNwbGl0IGRhdGEgaW50b1xuICogQHByaXZhdGVcbiAqIEByZXR1cm5zIHtCbG9ifVxuICovXG5jb25zdCBiNjR0b0Jsb2IgPSAoYjY0RGF0YTogc3RyaW5nLCBzbGljZVNpemUgPSA1MTIpOiBCbG9iID0+IHtcbiAgbGV0IGNvbnRlbnRUeXBlID0gJyc7XG5cbiAgaWYgKGI2NERhdGEuaW5kZXhPZignYmFzZTY0JykgPiAtMSkge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBiNjREYXRhLm1hdGNoKGJhc2U2NFJlZ2V4cCk7XG4gICAgYjY0RGF0YSA9IG1hdGNoZXMucG9wKCk7XG4gICAgY29udGVudFR5cGUgPSBtYXRjaGVzWzFdO1xuICB9XG5cbiAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuICBjb25zdCBieXRlQXJyYXlzOiBhbnlbXSA9IFtdO1xuXG4gIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgb2Zmc2V0ICs9IHNsaWNlU2l6ZSkge1xuICAgIGNvbnN0IHNsaWNlID0gYnl0ZUNoYXJhY3RlcnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzbGljZVNpemUpO1xuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KHNsaWNlLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGljZS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBzbGljZS5jaGFyQ29kZUF0KGkpO1xuICAgIH1cblxuICAgIGJ5dGVBcnJheXMucHVzaChuZXcgVWludDhBcnJheShieXRlTnVtYmVycykpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBCbG9iKGJ5dGVBcnJheXMsIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG59O1xuXG4vKipcbiAqIFJlYWQgZmlsZSBhcyBhcnJheSBidWZmZXJcbiAqXG4gKiBAYnJvd3NlclxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBibG9iXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqL1xuY29uc3QgcmVhZEZpbGUgPSBhc3luYyAoZmlsZSk6IFByb21pc2U8YW55PiA9PiB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghRmlsZSB8fCAhRmlsZVJlYWRlciB8fCAhQmxvYikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRmlsZXN0YWNrRXJyb3IoJ1RoZSBGaWxlIEFQSXMgYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQgYnkgeW91ciBicm93c2VyJykpO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgc2xpY2U6IGZ1bmN0aW9uKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gcmVhZFBhcnQoc3RhcnQsIGVuZCwgZmlsZSk7XG4gICAgfSxcbiAgICByZWxlYXNlOiAoKSA9PiB7XG4gICAgICBmaWxlID0gbnVsbDtcbiAgICB9LFxuICB9KTtcbn07XG5cbi8qKlxuICogUmVhZCBmaWxlIHBhciBpbnN0ZWFkIG9mIHdob2xlIGZpbGUgdG8gYXZvaWQgYnJvd3NlciBjcmFzaGluZ1xuICpcbiAqIEBwYXJhbSBzdGFydCAtIHN0YXIgYnl0ZVxuICogQHBhcmFtIGVuZCAgLSBlbmQgYnl0ZVxuICogQHBhcmFtIGZpbGUgLSBmaWxlIHRvIHNsaWNlXG4gKi9cbmNvbnN0IHJlYWRQYXJ0ID0gKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBmaWxlKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIGNvbnN0IGJsb2IgPSBmaWxlLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIHIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyLnJlc3VsdCk7XG4gICAgci5vbmVycm9yID0gcmVqZWN0O1xuICAgIHIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYik7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBBY2NlcHRzIGI2NHN0cmluZyBvciBibG9iIGZpbGVcbiAqXG4gKiBAYnJvd3NlclxuICogQHBhcmFtIHsqfSBmaWxlT3JTdHJpbmdcbiAqIEByZXR1cm5zIHtQcm9taXNlPEZpbGU+fVxuICovXG5leHBvcnQgY29uc3QgZ2V0RmlsZSA9IChpbnB1dDogSW5wdXRGaWxlLCBzYW5pdGl6ZU9wdGlvbnM/OiBTYW5pdGl6ZU9wdGlvbnMpOiBQcm9taXNlPEZzRmlsZT4gPT4ge1xuICBsZXQgZmlsZW5hbWU7XG4gIGxldCBmaWxlOiBCbG9iO1xuXG4gIGlmIChpc0ZpbGVOYW1lZChpbnB1dCkpIHtcbiAgICBmaWxlbmFtZSA9IGlucHV0Lm5hbWU7XG4gICAgaW5wdXQgPSBpbnB1dC5maWxlO1xuICB9XG5cbiAgaWYgKGlzRmlsZUJyb3dzZXIoaW5wdXQpKSB7XG4gICAgZmlsZSA9IGlucHV0O1xuICAgIGZpbGVuYW1lID0gaW5wdXQubmFtZTtcbiAgfSBlbHNlIGlmIChpc0ZpbGVCYXNlKGlucHV0KSkge1xuICAgIGZpbGUgPSBiNjR0b0Jsb2IoaW5wdXQpO1xuICB9IGVsc2UgaWYgKGlzRmlsZUJsb2IoaW5wdXQpKSB7XG4gICAgZmlsZSA9IGlucHV0O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRmlsZXN0YWNrRXJyb3IoJ1Vuc3VwcG9ydGVkIGlucHV0IGZpbGUgdHlwZScpKTtcbiAgfVxuXG4gIHJldHVybiByZWFkRmlsZShmaWxlKS50aGVuKFxuICAgIGFzeW5jIHJlcyA9PiB7XG4gICAgICBsZXQgbWltZSA9IGZpbGUudHlwZTtcbiAgICAgIGlmICghZmlsZS50eXBlICB8fCBmaWxlLnR5cGUubGVuZ3RoID09PSAwIHx8IGZpbGUudHlwZSA9PT0gJ3RleHQvcGxhaW4nKSB7XG4gICAgICAgIG1pbWUgPSBnZXRNaW1ldHlwZShhd2FpdCByZXMuc2xpY2UoMCwgZmlsZVR5cGUubWluaW11bUJ5dGVzKSwgZmlsZW5hbWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IEZzRmlsZShcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGZpbGVuYW1lLFxuICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICB0eXBlOiBtaW1lLFxuICAgICAgICAgIHNsaWNlOiByZXMuc2xpY2UsXG4gICAgICAgICAgcmVsZWFzZTogcmVzLnJlbGVhc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHNhbml0aXplT3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG4gICk7XG59O1xuIl19\n", "/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport Debug from 'debug';\nimport * as EventEmitter from 'eventemitter3';\n\nimport { File, UploadTags } from './../file';\nimport { StoreUploadOptions } from './../types';\nimport { Security } from './../../../client';\nimport { FsRetryConfig } from './../../../request';\nimport { isMobile } from './../../../utils';\nimport { FilestackError } from './../../../../filestack_error';\n\n// regular part size\nexport const DEFAULT_PART_SIZE = 6 * 1024 * 1024;\n\n// Minimum part size for upload by multipart\nexport const MIN_PART_SIZE = 5 * 1024 * 1024;\n\n// when mode is set to fallback or intelligent, this part size is required\nexport const INTELLIGENT_CHUNK_SIZE = 8 * 1024 * 1024;\n\n// Mobile Chunk size for ii\nexport const INTELLIGENT_MOBILE_CHUNK_SIZE = 1024 * 1024;\n\n// minimum intelligent chunk size\nexport const MIN_CHUNK_SIZE = 32 * 1024;\n\nexport const DEFAULT_STORE_LOCATION = 's3';\n\nconst debug = Debug('fs:upload:abstract');\n\nexport const enum UploadMode {\n DEFAULT = 'default',\n INTELLIGENT = 'intelligent',\n FALLBACK = 'fallback',\n}\n\nexport abstract class UploaderAbstract extends EventEmitter {\n // Parts size options\n protected partSize: number = DEFAULT_PART_SIZE;\n\n // chunk size for ii uploads\n protected intelligentChunkSize: number = isMobile() ? INTELLIGENT_MOBILE_CHUNK_SIZE : INTELLIGENT_CHUNK_SIZE;\n\n // upload options\n protected url: string;\n protected timeout: number = 30 * 1000;\n protected uploadMode: UploadMode = UploadMode.DEFAULT;\n\n // application settings\n protected apikey: string;\n protected security: Security;\n\n protected isModeLocked: boolean = false; // if account does not support ii in fallback mode we should abort\n protected retryConfig: FsRetryConfig;\n protected integrityCheck: boolean = true;\n\n protected uploadTags: UploadTags = null;\n\n constructor(protected readonly storeOptions: StoreUploadOptions, protected readonly concurrency: number = 3) {\n super();\n }\n\n public setSecurity(security: Security): void {\n debug('Set security %O', security);\n this.security = security;\n }\n\n public setApikey(apikey: string): void {\n debug(`Set apikey to ${apikey}`);\n this.apikey = apikey;\n }\n\n public setTimeout(timeout: number): void {\n debug(`Set request timeout to ${timeout}`);\n this.timeout = timeout;\n }\n\n public setRetryConfig(cfg: FsRetryConfig) {\n debug(`Set retry config to ${cfg}`);\n this.retryConfig = cfg;\n }\n\n public setUrl(url: string): void {\n debug(`Set upload url to ${url}`);\n this.url = url;\n }\n\n public setUploadTags(tags: UploadTags) {\n debug(`Set tags to %O`, tags);\n this.uploadTags = tags;\n }\n\n /**\n * Set state of checking file integrity\n * @param state\n */\n public setIntegrityCheck(state) {\n this.integrityCheck = state;\n }\n\n /**\n * Sets upload mode\n *\n * @param {UploadMode} mode\n * @param {boolean} [lock=false]\n * @returns\n * @memberof MultipartUploader\n */\n public setUploadMode(mode: UploadMode, lock: boolean = false): void {\n // this shouldnt happend but for safety reasons if will stay\n /* istanbul ignore next */\n if (this.isModeLocked === true) {\n debug(`Cannot switch mode to ${mode}. Locked! Probably mode is not supported at this apikey`);\n return;\n }\n\n this.isModeLocked = lock;\n\n debug(`Set upload mode to ${mode}`);\n\n this.uploadMode = mode;\n }\n\n /**\n * Set upload part size\n * if part size is smaller than minimum 5mb it will throw error\n *\n * @param {number} size\n * @returns {void}\n * @memberof S3Uploader\n */\n public setPartSize(size: number): void {\n if (this.uploadMode !== UploadMode.DEFAULT) {\n debug('Cannot set part size because upload mode is other than default. ');\n return;\n }\n\n debug(`Set part size to ${size}`);\n\n if (size < MIN_PART_SIZE) {\n throw new FilestackError('Minimum part size is 5MB');\n }\n\n this.partSize = size;\n }\n\n /**\n * Returns current part size\n */\n public getPartSize() {\n return this.partSize;\n }\n\n /**\n * Set start part size for ii\n *\n * @param {number} size\n * @memberof S3Uploader\n */\n public setIntelligentChunkSize(size: number): void {\n debug(`Set inteligent chunk size to ${size}`);\n if (size < MIN_CHUNK_SIZE) {\n throw new FilestackError(`Minimum intelligent chunk size is ${MIN_CHUNK_SIZE}`);\n }\n this.intelligentChunkSize = size;\n }\n\n /**\n * Returns intelligent chunk size\n */\n public getIntelligentChunkSize(): number {\n return this.intelligentChunkSize;\n }\n\n /**\n * Returns filestack upload url\n *\n * @private\n * @returns\n * @memberof MultipartUploader\n */\n public getUrl(): string {\n if (!this.url) {\n throw new FilestackError('Upload url not set');\n }\n\n return this.url;\n }\n\n /**\n * Pause upload queue\n *\n * @memberof MultipartUploader\n */\n public abstract pause(): void;\n /**\n * resume upload queue if its paused\n *\n * @memberof MultipartUploader\n */\n public abstract resume(): void;\n\n /**\n * Aborts queue (all pending requests with will be aborted)\n *\n * @memberof MultipartUploader\n */\n public abstract abort(msg?: string): void;\n\n public abstract addFile(file: File): string;\n\n public abstract async execute(): Promise<any>;\n}\n", "/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport Debug from 'debug';\nimport PQueue from 'p-queue';\n\nimport { FilestackError, FilestackErrorType } from './../../../../filestack_error';\nimport { FsCancelToken, FsRequest, FsRequestError, FsRequestErrorCode, FsResponse } from './../../../request';\nimport { shouldRetry } from './../../../request/helpers';\nimport { filterObject, uniqueId, uniqueTime } from './../../../utils';\nimport { File, FilePart, FilePartMetadata, FileState } from './../file';\nimport { StoreUploadOptions } from './../types';\nimport { DEFAULT_STORE_LOCATION, INTELLIGENT_CHUNK_SIZE, MIN_CHUNK_SIZE, UploaderAbstract, UploadMode } from './abstract';\n\nconst debug = Debug('fs:upload:s3');\n\nconst COMPLETE_TIMEOUT = 1000 * 1;\n\nexport interface UploadPart extends FilePartMetadata {\n etag?: string;\n offset?: number;\n progress?: number;\n}\n\nexport interface UploadPayload {\n file: File;\n parts: UploadPart[];\n handle?: string;\n uri?: string;\n region?: string;\n upload_id?: number;\n location_url?: string;\n location_region?: string;\n}\n\nexport class S3Uploader extends UploaderAbstract {\n private partsQueue;\n private cancelToken: FsCancelToken; // global cancel token for all requests\n\n private payloads: { [key: string]: UploadPayload } = {};\n\n constructor(storeOptions: StoreUploadOptions, concurrency?) {\n super(storeOptions, concurrency);\n\n this.partsQueue = new PQueue({\n autoStart: false,\n concurrency: this.concurrency,\n });\n\n this.cancelToken = new FsCancelToken();\n }\n\n /**\n * Pause upload queue\n *\n * @memberof S3Uploader\n */\n public pause(): void {\n this.partsQueue.pause();\n }\n\n /**\n * resume upload queue if its paused\n *\n * @memberof S3Uploader\n */\n public resume(): void {\n /* istanbul ignore next */\n if (this.partsQueue.isPaused) {\n this.partsQueue.start();\n }\n }\n\n /**\n * Aborts queue (all pending requests with will be aborted)\n *\n * @memberof S3Uploader\n */\n public abort(msg?: string): void {\n this.partsQueue.pause();\n this.partsQueue.clear();\n\n this.cancelToken.cancel(msg || 'Aborted by user');\n }\n\n /**\n * Execute all queued files\n *\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n public async execute(): Promise<any> {\n const tasks = Object.keys(this.payloads).map(\n id =>\n new Promise(async resolve => {\n try {\n await this.startRequest(id);\n await this.prepareParts(id);\n await this.startPartsQueue(id);\n await this.completeRequest(id);\n } catch (e) {\n /* istanbul ignore next */\n this.emit('error', e);\n debug(`[${id}] File upload failed. %O, \\nDetails: %O `, e.message, e.details);\n }\n\n const file = this.getPayloadById(id).file;\n\n // release file buffer\n file.release();\n\n // cleanup payloads\n delete this.payloads[id];\n\n resolve(file);\n })\n );\n\n return Promise.all(tasks);\n }\n\n /**\n * Add file to upload queue\n *\n * @param {File} file\n * @returns\n * @memberof S3Uploader\n */\n public addFile(file: File): string {\n debug('Add file to queue: \\n %o', file);\n\n const id = `${uniqueId(15)}_${uniqueTime()}`;\n\n file.status = FileState.INIT;\n\n // split file into parts and set it as waiting\n this.payloads[id] = {\n file,\n parts: [],\n };\n\n return id;\n }\n\n /**\n * Returns host for upload (region based)\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private getUploadUrl(id: string): string {\n const { location_url } = this.getDefaultFields(id, ['location_url']);\n return location_url.indexOf('http') === 0 ? location_url : `https://${location_url}`;\n }\n\n /**\n * Returns formatted store options\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private getStoreOptions(id: string): StoreUploadOptions {\n let options = {\n location: DEFAULT_STORE_LOCATION, // this parameter is required, if not set use default one\n ...this.storeOptions,\n };\n\n if (this.storeOptions.disableStorageKey) {\n const payload = this.getPayloadById(id);\n\n if (options.path && options.path.substr(-1) !== '/') {\n options.path = `${options.path}/`;\n }\n\n options.path = `${options.path ? options.path : '/'}${payload.file.name}`;\n\n delete options.disableStorageKey;\n }\n\n return options;\n }\n\n /**\n * Returns all default fields for filestack requests\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private getDefaultFields(id: string, requiredFields: string[], fiiFallback: boolean = false) {\n const payload = this.getPayloadById(id);\n\n let fields = {\n ...this.security,\n apikey: this.apikey,\n uri: payload.uri,\n location_url: payload.location_url,\n upload_id: payload.upload_id,\n region: payload.region,\n };\n\n if (this.uploadMode === UploadMode.INTELLIGENT || (this.uploadMode === UploadMode.FALLBACK && fiiFallback)) {\n fields['fii'] = true;\n }\n\n return {\n ...filterObject(fields, requiredFields),\n store: this.getStoreOptions(id),\n };\n }\n\n /**\n * Returns default headers needed for filestack request\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private getDefaultHeaders(id: string) {\n let headers = {};\n const file = this.getPayloadById(id);\n\n if (file.location_region) {\n headers['Filestack-Upload-Region'] = file.location_region;\n }\n\n return headers;\n }\n\n private getPayloadById(id: string): UploadPayload {\n return this.payloads[id];\n }\n\n /**\n * Split file onto parts for uploading with multipart mechanism and setup start\n *\n * @private\n * @memberof S3Uploader\n */\n private prepareParts(id: string): Promise<void> {\n const file = this.getPayloadById(id).file;\n\n // for intelligent or fallback mode we cant overwrite part size - requires 8MB\n if ([UploadMode.INTELLIGENT, UploadMode.FALLBACK].indexOf(this.uploadMode) > -1) {\n this.partSize = INTELLIGENT_CHUNK_SIZE;\n }\n\n const partsCount = file.getPartsCount(this.partSize);\n\n const parts = [];\n\n for (let i = 0; i < partsCount; i++) {\n parts[i] = {\n ...file.getPartMetadata(i, this.partSize),\n offset: 0,\n };\n }\n\n // split file into parts and set it as waiting\n this.payloads[id].parts = parts;\n\n return Promise.resolve();\n }\n\n /**\n * Make start request for getting needed upload fields\n *\n * @private\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n private startRequest(id: string): Promise<any> {\n const payload = this.getPayloadById(id);\n\n if (payload.file.size === 0) {\n this.setPayloadStatus(id, FileState.FAILED);\n return Promise.reject(new FilestackError(`Invalid file \"${payload.file.name}\" size - 0`, {}, FilestackErrorType.VALIDATION));\n }\n\n debug(`[${id}] Make start request`);\n return FsRequest.post(\n `${this.getUrl()}/multipart/start`,\n {\n filename: payload.file.name,\n mimetype: payload.file.type,\n size: payload.file.size,\n ...this.getDefaultFields(id, ['apikey', 'policy', 'signature', 'fii'], true),\n },\n {\n timeout: this.timeout,\n cancelToken: this.cancelToken,\n headers: this.getDefaultHeaders(id),\n retry: this.retryConfig,\n }\n )\n .then(({ data }) => {\n if (!data || !data.location_url || !data.region || !data.upload_id || !data.uri) {\n debug(`[${id}] Incorrect start response: \\n%O\\n`, data);\n this.setPayloadStatus(id, FileState.FAILED);\n return Promise.reject(new FilestackError('Incorrect start response', data, FilestackErrorType.REQUEST));\n }\n\n debug(`[${id}] Assign payload data: \\n%O\\n`, data);\n\n this.updatePayload(id, data);\n\n // ii is not enabled in backend switch back to default upload mode\n if ([UploadMode.INTELLIGENT, UploadMode.FALLBACK].indexOf(this.uploadMode) > -1 && (!data.upload_type || data.upload_type !== 'intelligent_ingestion')) {\n debug(`[${id}] Intelligent Ingestion is not enabled on account, switch back to regular upload and lock mode change`);\n this.setUploadMode(UploadMode.DEFAULT, true);\n }\n\n return data;\n })\n .catch(err => {\n debug(`[${id}] Start request error %O`, err);\n this.setPayloadStatus(id, FileState.FAILED);\n\n return this.rejectUpload('Cannot upload file. Start request failed', err);\n });\n }\n\n /**\n * Enqueue file parts to upload\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private async startPartsQueue(id: string): Promise<any> {\n const payload = this.getPayloadById(id);\n const parts = payload.parts;\n const waitingLength = parts.length;\n\n debug(`[${id}] Create uploading queue from file. parts count - %d`, waitingLength);\n\n return new Promise(async (resolve, reject) => {\n parts.forEach(part =>\n this.partsQueue\n .add(() => this.startPart(id, part.partNumber))\n .catch(e => {\n this.setPayloadStatus(id, FileState.FAILED);\n debug(`[${id}] Failed to upload part %s`, e.message);\n\n this.partsQueue.pause();\n this.partsQueue.clear();\n return reject(e);\n })\n );\n\n debug(`[${id}] All tasks for %s enqueued. Start processing main upload queue`, id);\n this.emit('start');\n this.partsQueue.start();\n\n resolve(await this.partsQueue.onIdle());\n });\n }\n\n /**\n * Decide if upload should be made using ii or regular upload\n * It allows change upload mode during upload queue\n *\n * @private\n * @param {number} partNumber\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n private startPart(id: string, partNumber: number): Promise<any> {\n debug(`[${id}] Start processing part ${partNumber} with mode ${this.uploadMode}`);\n\n let payload = this.getPayloadById(id);\n\n payload.file.status = FileState.PROGRESS;\n return (this.uploadMode !== UploadMode.INTELLIGENT ? this.uploadRegular : this.uploadIntelligent).apply(this, [id, partNumber]);\n }\n\n /**\n * Returns part data needed for upload\n *\n * @private\n * @param {string} id - id of a currently uploading file\n * @param {FilePart} part\n * @returns\n * @memberof S3Uploader\n */\n private getS3PartMetadata(id: string, part: FilePart, offset?: number): Promise<any> {\n const url = this.getUploadUrl(id);\n\n debug(`[${id}] Get data for part ${part.partNumber}, url ${url}, Md5: ${part.md5}, Size: ${part.size}`);\n\n const data = {\n ...this.getDefaultFields(id, ['apikey', 'uri', 'region', 'signature', 'policy', 'upload_id', 'fii']),\n // method specific keys\n part: part.partNumber + 1,\n size: part.size,\n offset,\n };\n\n if (this.integrityCheck && part.md5) {\n data.md5 = part.md5;\n }\n\n return FsRequest.post(`${url}/multipart/upload`, data, {\n headers: this.getDefaultHeaders(id),\n cancelToken: this.cancelToken,\n timeout: this.timeout,\n retry: this.retryConfig,\n }).catch(err => {\n this.setPayloadStatus(id, FileState.FAILED);\n\n return this.rejectUpload('Cannot get part metadata', err);\n });\n }\n\n /**\n * Regular multipart request to amazon\n *\n * @private\n * @param {number} partNumber\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n private async uploadRegular(id: string, partNumber: number): Promise<any> {\n let payload = this.getPayloadById(id);\n const partMetadata = payload.parts[partNumber];\n let part = await payload.file.getPartByMetadata(partMetadata, this.integrityCheck);\n\n const { data, headers } = await this.getS3PartMetadata(id, part);\n debug(`[${id}] Received part ${partNumber} info body: \\n%O\\n headers: \\n%O\\n`, data, headers);\n return FsRequest.put(data.url, part.buffer, {\n cancelToken: this.cancelToken,\n timeout: this.timeout,\n headers: data.headers,\n filestackHeaders: false,\n // for now we cant test progress callback from upload\n /* istanbul ignore next */\n onProgress: (pr: ProgressEvent) => this.onProgressUpdate(id, partNumber, pr.loaded),\n retry: this.retryConfig && this.uploadMode !== UploadMode.FALLBACK ? this.retryConfig : undefined,\n })\n .then(res => {\n if (res.headers.etag) {\n this.setPartETag(id, partNumber, res.headers.etag);\n } else {\n // release memory\n part = null;\n throw new FilestackError('Cannot upload file, check S3 bucket settings', 'Etag header is not exposed in CORS settings', FilestackErrorType.REQUEST);\n }\n\n debug(`[${id}] S3 Upload response headers for ${partNumber}: \\n%O\\n`, res.headers);\n\n this.onProgressUpdate(id, partNumber, part.size);\n\n // release memory\n part = null;\n\n return res;\n })\n .catch(err => {\n const resp = err && err.response ? err.response : null;\n\n /* istanbul ignore next */\n if (resp && resp.status === 403) {\n if (resp.data && resp.data.Error && resp.data.Error.code) {\n let code = resp.data.Error.code;\n\n if (Array.isArray(code)) {\n code = code.pop();\n }\n\n switch (code) {\n case 'RequestTimeTooSkewed':\n return this.startPart(id, partNumber);\n default:\n return Promise.reject(new FilestackError('Cannot upload file', resp.data.Error, FilestackErrorType.REQUEST));\n }\n }\n }\n\n // release memory\n part = null;\n\n if (err instanceof FilestackError) {\n return Promise.reject(err);\n }\n // reset upload progress on failed part\n this.onProgressUpdate(id, partNumber, 0);\n\n // if fallback, set upload mode to intelligent and restart current part\n if ((this.uploadMode === UploadMode.FALLBACK && !this.isModeLocked) || this.uploadMode === UploadMode.INTELLIGENT) {\n debug(`[${id}] Regular upload failed. Switching to intelligent ingestion mode`);\n this.setUploadMode(UploadMode.INTELLIGENT);\n // restart part\n return this.startPart(id, partNumber);\n }\n\n return this.rejectUpload('Cannot upload file part', err);\n });\n }\n\n /**\n * Upload file using intelligent mechanism\n *\n * @private\n * @param {string} id\n * @param {number} partNumber\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n private async uploadIntelligent(id: string, partNumber: number): Promise<any> {\n return this.uploadNextChunk(id, partNumber).then(() => this.commitPart(id, partNumber));\n }\n\n /**\n * Recursively upload file in chunk mode (intelligent ingession)\n *\n * @private\n * @param {string} id\n * @param {number} partNumber\n * @param {number} chunkSize\n * @returns\n * @memberof S3Uploader\n */\n private async uploadNextChunk(id: string, partNumber: number, chunkSize: number = this.intelligentChunkSize) {\n const payload = this.getPayloadById(id);\n let part = payload.parts[partNumber];\n chunkSize = Math.min(chunkSize, part.size - part.offset);\n\n let chunk = await payload.file.getChunkByMetadata(part, part.offset, chunkSize, this.integrityCheck);\n\n debug(\n `[${id}] PartNum: ${partNumber}, PartSize: ${part.size}, StartByte: ${part.startByte}, Offset: ${part.offset}, ChunkSize: ${chunk.size},\n Left: ${part.size - part.offset - chunk.size}`\n );\n\n // catch error for debug purposes\n const { data } = await this.getS3PartMetadata(id, chunk, part.offset).catch(err => {\n debug(`[${id}] Getting chunk data for ii failed %O, Chunk size: ${chunkSize}, offset ${part.offset}, part ${partNumber}`, err);\n return Promise.reject(err);\n });\n\n return FsRequest.put(data.url, chunk.buffer, {\n cancelToken: this.cancelToken,\n timeout: this.timeout,\n headers: data.headers,\n filestackHeaders: false,\n // for now we cant test progress callback from upload\n /* istanbul ignore next */\n onProgress: (pr: ProgressEvent) => part ? this.onProgressUpdate(id, partNumber, part.offset + pr.loaded) : null,\n })\n .then(res => {\n this.onProgressUpdate(id, partNumber, part.offset + chunk.size);\n const newOffset = Math.min(part.offset + chunkSize, part.size);\n debug(`[${id}] S3 Chunk uploaded! offset: ${part.offset}, part ${partNumber}! response headers for ${partNumber}: \\n%O\\n`, res.headers);\n this.setPartData(id, partNumber, 'offset', newOffset);\n\n // if all chunks was uploaded then return resolve\n if (newOffset === part.size) {\n return Promise.resolve(res);\n }\n\n // release memory\n part = null;\n chunk = null;\n\n return this.uploadNextChunk(id, partNumber, chunkSize);\n })\n .catch(err => {\n const resp = err && err.response ? err.response : null;\n /* istanbul ignore next */\n if (resp && resp.status === 403) {\n if (resp.data && resp.data.Error && resp.data.Error.code) {\n let code = resp.data.Error.code;\n\n if (Array.isArray(code)) {\n code = code.pop();\n }\n\n switch (code) {\n case 'RequestTimeTooSkewed':\n return this.startPart(id, partNumber);\n default:\n return Promise.reject(new FilestackError('Cannot upload file', resp.data.Error, FilestackErrorType.REQUEST));\n }\n }\n }\n\n // reset progress on failed upload\n this.onProgressUpdate(id, partNumber, part.offset);\n const nextChunkSize = Math.ceil(chunkSize / 2);\n\n if (nextChunkSize < MIN_CHUNK_SIZE) {\n debug(`[${id}] Minimal chunk size limit. Upload file failed!`);\n return Promise.reject(new FilestackError('Min chunk size reached', err.data, FilestackErrorType.REQUEST));\n }\n\n if (shouldRetry(err)) {\n debug(`[${id}] Request network error. Retry with new chunk size: ${nextChunkSize}`);\n return this.uploadNextChunk(id, partNumber, nextChunkSize);\n }\n\n // release memory\n part = null;\n chunk = null;\n\n return this.rejectUpload('Cannot upload file part (FII)', err);\n });\n }\n\n /**\n * Commit after upload all chunks of the part in ii mode\n *\n * @private\n * @param {string} id\n * @param {FilePart} part\n * @returns\n * @memberof S3Uploader\n */\n private commitPart(id: string, partNumber: number) {\n const payload = this.getPayloadById(id);\n const part = payload.parts[partNumber];\n\n return FsRequest.post(\n `${this.getUploadUrl(id)}/multipart/commit`,\n {\n ...this.getDefaultFields(id, ['apikey', 'region', 'upload_id', 'policy', 'signature', 'uri']),\n size: payload.file.size,\n part: part.partNumber + 1,\n },\n {\n cancelToken: this.cancelToken,\n timeout: this.timeout,\n headers: this.getDefaultHeaders(id),\n retry: this.retryConfig,\n }\n )\n .then((res: FsResponse) => {\n debug(`[${id}] Commit Part number ${part.partNumber}. Response: %O`, res.data);\n\n return res;\n })\n .catch(err => {\n return this.rejectUpload('Cannot commit file part metadata', err);\n });\n }\n\n /**\n * Complete request to merge all parts and get file handle etc\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private completeRequest(id: string): Promise<any> {\n const payload = this.getPayloadById(id);\n let parts = [];\n\n debug(`[${id}] Run complete request`);\n\n const partsHandle = payload.parts;\n const partLen = partsHandle.length;\n\n for (let i = 0; i < partLen; i++) {\n if (partsHandle[i].etag) {\n parts.push({ part_number: i + 1, etag: partsHandle[i].etag });\n }\n }\n\n debug(`[${id}] Etags %O`, parts);\n\n return FsRequest.post(\n `${this.getUploadUrl(id)}/multipart/complete`,\n {\n ...this.getDefaultFields(id, ['apikey', 'policy', 'signature', 'uri', 'region', 'upload_id', 'fii'], true),\n // method specific keys\n filename: payload.file.name,\n mimetype: payload.file.type,\n size: payload.file.size,\n upload_tags: this.uploadTags && Object.keys(this.uploadTags).length ? this.uploadTags : undefined,\n parts: parts.length ? parts : undefined,\n },\n {\n timeout: this.timeout,\n cancelToken: this.cancelToken,\n headers: this.getDefaultHeaders(id),\n retry: this.retryConfig,\n }\n )\n .then(res => {\n // if parts hasnt been merged, retry complete request again\n if (res.status === 202) {\n return new Promise((resolve, reject) => {\n setTimeout(\n () =>\n this.completeRequest(id)\n .then(resolve)\n .catch(reject),\n COMPLETE_TIMEOUT\n );\n });\n }\n\n // update file object\n let file = this.getPayloadById(id).file;\n\n file.handle = res.data.handle;\n file.url = res.data.url;\n file.container = res.data.container;\n file.key = res.data.key;\n file.uploadTags = res.data.upload_tags;\n file.workflows = res.data.workflows;\n file.status = res.data.status;\n\n return file;\n })\n .catch(err => {\n this.setPayloadStatus(id, FileState.FAILED);\n\n return this.rejectUpload('Cannot complete file', err);\n });\n }\n\n /**\n * UUpgrade upload progress and run progress event\n *\n * @private\n * @param {string} id\n * @param {number} partNumber\n * @param {number} loaded\n * @memberof S3Uploader\n */\n private onProgressUpdate(id: string, partNumber: number, loaded: number) {\n this.setPartData(id, partNumber, 'progress', loaded);\n this.emitProgress();\n }\n\n /**\n * Emits normalized progress event\n *\n * @private\n * @memberof S3Uploader\n */\n private emitProgress() {\n let totalSize = 0;\n let totalBytes = 0;\n\n let filesProgress = {};\n for (let i in this.payloads) {\n const payload = this.payloads[i];\n // omit all failed files in progress event\n // this shouldn't happend because of promises rejection in execute. Left to be sure\n /* istanbul ignore next */\n if (payload.file.status === FileState.FAILED) {\n continue;\n }\n\n const totalParts = payload.parts.map(p => p.progress || 0).reduce((a, b) => a + b, 0);\n\n totalBytes = totalBytes + totalParts;\n\n filesProgress[i] = {\n totalBytes: totalParts,\n totalPercent: Math.round((totalParts * 100) / payload.file.size) || 0,\n };\n\n totalSize = totalSize + payload.file.size;\n }\n\n const res = {\n totalBytes: totalBytes || 0,\n totalPercent: Math.round((totalBytes * 100) / totalSize) || 0,\n files: filesProgress,\n };\n\n debug(`Upload progress %O`, res);\n this.emit('progress', res);\n }\n\n /**\n * Apply provided data to given payload\n *\n * @private\n * @param {string} id\n * @param {*} data\n * @memberof S3Uploader\n */\n private updatePayload(id: string, data: any) {\n this.payloads[id] = {\n ...this.payloads[id],\n ...data,\n };\n }\n\n /**\n * Sets etag for part\n *\n * @private\n * @param {number} partNumber\n * @param {string} etag\n * @memberof S3Uploader\n */\n private setPartETag(id: string, partNumber: number, etag: string) {\n debug(`[${id}] Set ${etag} etag for part ${partNumber}`);\n this.getPayloadById(id).parts[partNumber].etag = etag;\n }\n\n /**\n * Sets part value for a key\n *\n * @private\n * @param {number} partNumber\n * @param {string} etag\n * @memberof S3Uploader\n */\n private setPartData(id: string, partNumber: number, key: string, value: any) {\n debug(`[${id}] Set ${key} = ${value} for part ${partNumber}`);\n\n const payload = this.getPayloadById(id);\n\n /* istanbul ignore next */\n if (!payload) {\n debug(`[${id}] Cannot set ${key} = ${value} for part ${partNumber}`);\n return;\n }\n\n payload.parts[partNumber][key] = value;\n }\n\n /**\n * Set payload file state\n *\n * @param id\n * @param status\n */\n private setPayloadStatus(id: string, status: FileState) {\n debug(`[${id}] Set payload status to ${status}`);\n /* istanbul ignore next: additional check in case if file will be deleted before setting status */\n if (!this.payloads[id]) {\n return;\n }\n\n this.payloads[id].file.status = status;\n }\n\n /**\n * Returns error details if response exists\n *\n * @param err\n */\n private parseError(err: FsRequestError) {\n if (!err.response) {\n return {};\n }\n\n return {\n code: err.response.status,\n data: err.response.data,\n headers: err.response.headers,\n };\n }\n\n private rejectUpload(message: string, err: FsRequestError) {\n if (err instanceof FsRequestError && err.code === FsRequestErrorCode.ABORTED) {\n return Promise.reject(new FilestackError(message, { reason: err.message }, FilestackErrorType.ABORTED));\n }\n return Promise.reject(new FilestackError(message, this.parseError(err), FilestackErrorType.REQUEST));\n }\n}\n", "/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\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 * http://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 { EventEmitter } from 'eventemitter3';\nimport { Session, Security } from '../../client';\nimport { S3Uploader } from './uploaders/s3';\nimport { FilestackError, FilestackErrorType } from './../../../filestack_error';\nimport { SanitizeOptions } from './../../utils';\n\nimport { UploadOptions, StoreUploadOptions } from '../upload/types';\nimport { getFile, InputFile } from './file_tools';\nimport { FileState, UploadTags } from './file';\nimport { UploadMode } from './uploaders/abstract';\nimport { getValidator, UploadParamsSchema, StoreParamsSchema } from './../../../schema';\n\nexport interface ProgressEvent {\n totalPercent: number;\n totalBytes: number;\n files?: { (key: string): ProgressEvent };\n}\n\nconst DEFAULT_PROGRESS_INTERVAL = 1000;\n\nconst normalizeProgress = (current, last) => {\n current.totalBytes = Math.max(current.totalBytes, last.totalBytes);\n current.totalPercent = Math.max(current.totalPercent, last.totalPercent);\n\n return current;\n};\n\n/**\n * Uploader main class for now its supporting only s3 upload type\n *\n * @export\n * @class Upload\n */\nexport class Upload extends EventEmitter {\n\n /**\n * Uploader instance\n *\n * @private\n * @type {S3Uploader}\n * @memberof Upload\n */\n private uploader: S3Uploader;\n\n /**\n * Should we overwrite file name\n *\n * @private\n * @memberof Upload\n */\n private overrideFileName;\n\n private lastProgress: ProgressEvent = {\n totalBytes: 0,\n totalPercent: 0,\n };\n\n private progressIntervalHandler;\n private sanitizerOptions: SanitizeOptions;\n\n constructor(private readonly options: UploadOptions = {}, private storeOptions: StoreUploadOptions = {}) {\n super();\n\n // do not delete filename from original options reference - copy it first\n this.storeOptions = Object.assign({}, storeOptions);\n\n const validateRes = getValidator(UploadParamsSchema)(options);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid upload params`, validateRes.errors, FilestackErrorType.VALIDATION);\n }\n\n const storeValidateRes = getValidator(StoreParamsSchema)(storeOptions);\n if (storeValidateRes.errors.length) {\n throw new FilestackError(`Invalid store upload params`, storeValidateRes.errors, FilestackErrorType.VALIDATION);\n }\n\n if (storeOptions.filename) {\n this.overrideFileName = storeOptions.filename;\n delete this.storeOptions.filename;\n }\n\n if (this.storeOptions.sanitizer) {\n this.sanitizerOptions = this.storeOptions.sanitizer;\n delete this.storeOptions.sanitizer;\n }\n\n this.uploader = new S3Uploader(this.storeOptions, options.concurrency);\n\n this.uploader.setRetryConfig({\n retry: options.retry || 10,\n onRetry: options.onRetry, // @todo bind file to retry in s3 uploader\n retryFactor: options.retryFactor || 2,\n retryMaxTime: options.retryMaxTime || 15000,\n });\n\n this.uploader.setTimeout(options.timeout || 120000);\n\n if (options.partSize) {\n this.uploader.setPartSize(options.partSize);\n }\n\n if (options.intelligentChunkSize) {\n this.uploader.setIntelligentChunkSize(options.intelligentChunkSize);\n }\n\n if (options.disableIntegrityCheck) {\n this.uploader.setIntegrityCheck(false);\n }\n\n if (options.intelligent) {\n this.uploader.setUploadMode(options.intelligent === 'fallback' ? UploadMode.FALLBACK : UploadMode.INTELLIGENT);\n }\n\n this.uploader.setUploadTags(options.tags);\n\n this.uploader.on('start', () => this.emit('start'));\n this.uploader.on('error', (e) => this.emit('error', e));\n this.uploader.on('progress', this.handleProgress.bind(this));\n }\n\n /**\n * Set session object to uploader\n *\n * @deprecated\n * @param {Session} session\n * @memberof Upload\n */\n setSession(session: Session) {\n this.uploader.setApikey(session.apikey);\n\n if (session.policy && session.signature) {\n this.uploader.setSecurity({\n policy: session.policy,\n signature: session.signature,\n });\n }\n\n this.uploader.setUrl(session.urls.uploadApiUrl);\n }\n\n /**\n * Set cancel token to controll upload flow\n *\n * @param {*} token\n * @returns\n * @memberof Upload\n */\n public setToken(token: any) {\n if (!token || token !== Object(token)) {\n throw new Error('Incorrect upload token. Must be instance of object');\n }\n\n token.pause = () => this.uploader.pause();\n token.resume = () => this.uploader.resume();\n token.cancel = () => this.uploader.abort();\n\n return token;\n }\n\n /**\n * Sets security to uploader instance\n *\n * @param {Security} security\n * @memberof Upload\n */\n public setSecurity(security: Security) {\n this.uploader.setSecurity(security);\n }\n\n /**\n * Set upload tags\n *\n * @param {Tags} tags\n * @memberof Upload\n */\n public setUploadTags(tags: UploadTags) {\n this.uploader.setUploadTags(tags);\n }\n\n /**\n * Upload single file\n *\n * @param {(InputFile)} file\n * @returns {Promise<any>}\n * @memberof Upload\n */\n async upload(input: InputFile): Promise<any> {\n\n const f = await getFile(input, this.sanitizerOptions);\n f.customName = this.overrideFileName;\n this.uploader.addFile(f);\n\n this.startProgressInterval();\n const res = (await this.uploader.execute()).shift();\n this.stopProgressInterval();\n\n this.uploader.removeAllListeners();\n\n if (res.status === FileState.FAILED) {\n return Promise.reject(res);\n }\n\n return Promise.resolve(res);\n }\n\n /**\n * Upload multiple files at once\n *\n * @param {(InputFile[])} input\n * @returns {Promise<any>}\n * @memberof Upload\n */\n async multiupload(input: InputFile[]): Promise<any> {\n for (let i in input) {\n /* istanbul ignore next */\n if (!input.hasOwnProperty(i)) {\n continue;\n }\n\n const f = await getFile(input[i], this.sanitizerOptions);\n f.customName = this.overrideFileName;\n this.uploader.addFile(f);\n }\n\n this.startProgressInterval();\n const res = await this.uploader.execute();\n this.stopProgressInterval();\n\n this.uploader.removeAllListeners();\n\n return Promise.resolve(res);\n }\n\n /**\n * RUn progress with userdefined interval\n *\n * @private\n * @returns\n * @memberof Upload\n */\n private startProgressInterval() {\n if (typeof this.options.onProgress !== 'function') {\n return;\n }\n\n this.progressIntervalHandler = setInterval(() => {\n this.options.onProgress(this.lastProgress);\n }, this.options.progressInterval || DEFAULT_PROGRESS_INTERVAL);\n\n this.options.onProgress(this.lastProgress);\n }\n\n /**\n * Stop progress interval after upload\n *\n * @private\n * @memberof Upload\n */\n private stopProgressInterval() {\n clearInterval(this.progressIntervalHandler);\n }\n\n /**\n * Handle upload interval and normalize values\n *\n * @private\n * @param {ProgressEvent} progress\n * @memberof Upload\n */\n private handleProgress(progress: ProgressEvent) {\n // get max progress data to avoid progress jumps on any part error\n progress = normalizeProgress(progress, this.lastProgress);\n\n if (this.lastProgress.files) {\n for (let i in progress.files) {\n if (this.lastProgress.files[i]) {\n progress.files[i] = normalizeProgress(progress.files[i], this.lastProgress.files[i]);\n }\n }\n }\n\n this.lastProgress = progress;\n }\n}\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 { Security, Session } from '../client';\nimport { removeEmpty } from '../utils';\nimport { getValidator, PreviewParamsSchema } from './../../schema';\nimport { FilestackError, FilestackErrorType } from './../../filestack_error';\n\nexport interface PreviewOptions {\n /**\n * Id for DOM element to embed preview into.\n * Omit this to open the preview in a new tab\n */\n id: string;\n /**\n * URL to custom CSS\n */\n css?: string;\n}\n\n/**\n * Returns file preview url\n *\n * @private\n * @param session\n * @param handle\n * @param opts\n * @param security\n */\nexport const getUrl = (\n session: Session,\n handle: string,\n opts?: any,\n security?: Security\n) => {\n const options = { ...opts };\n const policy = security && security.policy || session.policy;\n const signature = security && security.signature || session.signature;\n const hasSecurity = signature && policy;\n const baseUrl = [session.urls.cdnUrl];\n const css = options.css && encodeURIComponent(`\"${options.css}\"`);\n const previewTask = css ? `preview=css:${css}` : 'preview';\n\n // @todo move to utils?\n if (handle.indexOf('src:') !== -1) {\n baseUrl.push(`${session.apikey}/${previewTask}`);\n } else {\n baseUrl.push(previewTask);\n }\n if (hasSecurity) {\n baseUrl.push(`security=policy:${policy},signature:${signature}`);\n }\n\n baseUrl.push(handle);\n return baseUrl.join('/');\n};\n\n/**\n * Appends image preview into page\n *\n * @private\n * @param session\n * @param handle\n * @param opts\n */\nexport const preview = (session: Session, handle?: string, opts?: PreviewOptions) => {\n if (!handle || typeof handle !== 'string') {\n throw new Error('A valid Filestack handle or storage alias is required for preview');\n }\n\n const validateRes = getValidator(PreviewParamsSchema)(opts);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid preview params`, validateRes.errors, FilestackErrorType.VALIDATION);\n }\n\n const options = removeEmpty(opts || {});\n const url = getUrl(session, handle, options);\n\n if (options && options.id) {\n const id = options.id;\n const iframe = document.createElement('iframe');\n const domElement = document.getElementById(id);\n\n iframe.src = url;\n iframe.width = '100%';\n iframe.height = '100%';\n\n if (!domElement) {\n throw new Error(`DOM Element with id \"${id}\" not found.`);\n }\n return domElement.appendChild(iframe);\n }\n return window.open(url, handle);\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport Debug from 'debug';\nimport { STORE_TYPE } from './store';\nvar debug = Debug('fs:storage');\nvar Store = /** @class */ (function () {\n function Store() {\n this.availableTypes = [];\n if (window.localStorage !== undefined) {\n this.availableTypes.push(STORE_TYPE.LOCAL);\n debug('Local storage exists');\n }\n if (window.sessionStorage !== undefined) {\n this.availableTypes.push(STORE_TYPE.SESSION);\n debug('Session storage exists');\n }\n debug('availableTypes - %O', this.availableTypes);\n }\n Store.prototype.hasAccess = function (prefType) {\n debug('Checking access to storage for %s. Available types: %O', prefType, this.availableTypes);\n if (prefType) {\n return this.availableTypes.indexOf(prefType) > -1;\n }\n return !!this.availableTypes.length;\n };\n Store.prototype.getItem = function (key, prefType) {\n var store = this.getStore(prefType);\n debug('getItem %s from %O', key, store);\n if (!store) {\n return undefined;\n }\n return store.getItem(key);\n };\n Store.prototype.setItem = function (key, value, prefType) {\n var store = this.getStore(prefType);\n debug('setItem %s to %O', key, store);\n if (!store) {\n return undefined;\n }\n return store.setItem(key, value);\n };\n Store.prototype.removeItem = function (key, prefType) {\n var store = this.getStore(prefType);\n debug('removeItem %s from %O', key, store);\n if (!store) {\n return undefined;\n }\n return store.removeItem(key);\n };\n Store.prototype.getStore = function (prefType) {\n debug('get store with pref type - %s', prefType);\n if (!this.hasAccess(prefType)) {\n debug('User dont have access to any storage');\n return undefined;\n }\n switch (prefType) {\n case STORE_TYPE.LOCAL:\n return window.localStorage;\n case STORE_TYPE.SESSION:\n return window.sessionStorage;\n default:\n // @ts-ignore\n return window[this.availableTypes[0]];\n }\n };\n return Store;\n}());\nexport { Store };\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMvc3RvcmUuYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxJQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFbEM7SUFJRTtRQUZRLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRzFCLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDakM7UUFFRCxLQUFLLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSx5QkFBUyxHQUFoQixVQUFpQixRQUFxQjtRQUNwQyxLQUFLLENBQUMsd0RBQXdELEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUvRixJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUN0QyxDQUFDO0lBRU0sdUJBQU8sR0FBZCxVQUFlLEdBQVcsRUFBRSxRQUFxQjtRQUMvQyxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSx1QkFBTyxHQUFkLFVBQWUsR0FBVyxFQUFFLEtBQWEsRUFBRSxRQUFxQjtRQUM5RCxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sMEJBQVUsR0FBakIsVUFBa0IsR0FBVyxFQUFFLFFBQXFCO1FBQ2xELElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLHdCQUFRLEdBQWhCLFVBQWlCLFFBQXFCO1FBQ3BDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3QixLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUM5QyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssVUFBVSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQztZQUM3QixLQUFLLFVBQVUsQ0FBQyxPQUFPO2dCQUNyQixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDL0I7Z0JBQ0UsYUFBYTtnQkFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFZLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBQ0gsWUFBQztBQUFELENBL0VBLEFBK0VDLElBQUEiLCJmaWxlIjoibGliL3V0aWxzL3N0b3JlLmJyb3dzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4IGJ5IEZpbGVzdGFjay5cbiAqIFNvbWUgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IFNUT1JFX1RZUEUgfSBmcm9tICcuL3N0b3JlJztcblxuY29uc3QgZGVidWcgPSBEZWJ1ZygnZnM6c3RvcmFnZScpO1xuXG5leHBvcnQgY2xhc3MgU3RvcmUge1xuXG4gIHByaXZhdGUgYXZhaWxhYmxlVHlwZXMgPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmF2YWlsYWJsZVR5cGVzLnB1c2goU1RPUkVfVFlQRS5MT0NBTCk7XG4gICAgICBkZWJ1ZygnTG9jYWwgc3RvcmFnZSBleGlzdHMnKTtcbiAgICB9XG5cbiAgICBpZiAod2luZG93LnNlc3Npb25TdG9yYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXZhaWxhYmxlVHlwZXMucHVzaChTVE9SRV9UWVBFLlNFU1NJT04pO1xuICAgICAgZGVidWcoJ1Nlc3Npb24gc3RvcmFnZSBleGlzdHMnKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnYXZhaWxhYmxlVHlwZXMgLSAlTycsIHRoaXMuYXZhaWxhYmxlVHlwZXMpO1xuICB9XG5cbiAgcHVibGljIGhhc0FjY2VzcyhwcmVmVHlwZT86IFNUT1JFX1RZUEUpOiBib29sZWFuIHtcbiAgICBkZWJ1ZygnQ2hlY2tpbmcgYWNjZXNzIHRvIHN0b3JhZ2UgZm9yICVzLiBBdmFpbGFibGUgdHlwZXM6ICVPJywgcHJlZlR5cGUsIHRoaXMuYXZhaWxhYmxlVHlwZXMpO1xuXG4gICAgaWYgKHByZWZUeXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5hdmFpbGFibGVUeXBlcy5pbmRleE9mKHByZWZUeXBlKSA+IC0xO1xuICAgIH1cblxuICAgIHJldHVybiAhIXRoaXMuYXZhaWxhYmxlVHlwZXMubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW0oa2V5OiBzdHJpbmcsIHByZWZUeXBlPzogU1RPUkVfVFlQRSkge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5nZXRTdG9yZShwcmVmVHlwZSk7XG4gICAgZGVidWcoJ2dldEl0ZW0gJXMgZnJvbSAlTycsIGtleSwgc3RvcmUpO1xuXG4gICAgaWYgKCFzdG9yZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RvcmUuZ2V0SXRlbShrZXkpO1xuICB9XG5cbiAgcHVibGljIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHByZWZUeXBlPzogU1RPUkVfVFlQRSkge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5nZXRTdG9yZShwcmVmVHlwZSk7XG4gICAgZGVidWcoJ3NldEl0ZW0gJXMgdG8gJU8nLCBrZXksIHN0b3JlKTtcblxuICAgIGlmICghc3RvcmUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0b3JlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSXRlbShrZXk6IHN0cmluZywgcHJlZlR5cGU/OiBTVE9SRV9UWVBFKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKHByZWZUeXBlKTtcbiAgICBkZWJ1ZygncmVtb3ZlSXRlbSAlcyBmcm9tICVPJywga2V5LCBzdG9yZSk7XG5cbiAgICBpZiAoIXN0b3JlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBzdG9yZS5yZW1vdmVJdGVtKGtleSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0b3JlKHByZWZUeXBlPzogU1RPUkVfVFlQRSk6IGZhbHNlIHwgU3RvcmFnZSB7XG4gICAgZGVidWcoJ2dldCBzdG9yZSB3aXRoIHByZWYgdHlwZSAtICVzJywgcHJlZlR5cGUpO1xuXG4gICAgaWYgKCF0aGlzLmhhc0FjY2VzcyhwcmVmVHlwZSkpIHtcbiAgICAgIGRlYnVnKCdVc2VyIGRvbnQgaGF2ZSBhY2Nlc3MgdG8gYW55IHN0b3JhZ2UnKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcmVmVHlwZSkge1xuICAgICAgY2FzZSBTVE9SRV9UWVBFLkxPQ0FMOlxuICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgIGNhc2UgU1RPUkVfVFlQRS5TRVNTSU9OOlxuICAgICAgICByZXR1cm4gd2luZG93LnNlc3Npb25TdG9yYWdlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gd2luZG93W3RoaXMuYXZhaWxhYmxlVHlwZXNbMF1dIGFzIFN0b3JhZ2U7XG4gICAgfVxuICB9XG59XG4iXX0=\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 { removeEmpty } from '../utils';\nimport { StoreParams } from '../filelink';\nimport { ClientOptions, Session } from '../client';\nimport { FilestackError } from './../../filestack_error';\nimport { UploadTags } from './upload/file';\nimport { FsRequest, FsCancelToken } from '../request';\nimport { Store, STORE_TYPE } from './../utils/store';\n\n/**\n * @private\n */\nexport const PICKER_KEY = '__fs_picker_token';\n\n/**\n * key for picker callback url (specifies which tab will be opened after opening picker)\n * @private\n */\nexport const CALLBACK_URL_KEY = 'fs-tab';\n\n/**\n * @private\n */\nexport class CloudClient {\n session: Session;\n cloudApiUrl: string;\n\n /**\n * Returns flag if token should be cached in local storage\n *\n * @private\n * @type {boolean}\n * @memberof CloudClient\n */\n private cache: boolean = false;\n\n /**\n * Token returned from api for accessing clouds\n *\n * @private\n * @type {string}\n * @memberof CloudClient\n */\n private _token: string;\n\n /**\n * Store adapter instance\n *\n * @private\n * @type {Store}\n * @memberof CloudClient\n */\n private storeAdapter: Store;\n\n constructor(session: Session, options?: ClientOptions) {\n this.session = session;\n this.storeAdapter = new Store();\n\n this.cloudApiUrl = session.urls.cloudApiUrl;\n\n if (options && options.sessionCache) {\n this.cache = options.sessionCache;\n }\n }\n\n get token() {\n if (this.cache) {\n const token = this.storeAdapter.getItem(PICKER_KEY, STORE_TYPE.LOCAL);\n if (token) return token;\n }\n\n if (this.isInAppBrowser) {\n return this.storeAdapter.getItem(PICKER_KEY, STORE_TYPE.SESSION);\n }\n\n return this._token;\n }\n\n set token(key) {\n if (this.cache) {\n this.storeAdapter.setItem(PICKER_KEY, key, STORE_TYPE.LOCAL);\n }\n\n if (this.isInAppBrowser) {\n this.storeAdapter.setItem(PICKER_KEY, key, STORE_TYPE.SESSION);\n }\n\n this._token = key;\n }\n\n /**\n * Return information is inappbrowser flag is set\n *\n * @readonly\n * @memberof CloudClient\n */\n private get isInAppBrowser() {\n if (this.session\n && this.session.prefetch\n && this.session.prefetch.settings\n && this.session.prefetch.settings.inapp_browser) {\n return this.session.prefetch.settings.inapp_browser;\n }\n\n return false;\n }\n\n list(clouds: any, cancelTokenInput?: any, accept?: string[] | string) {\n const payload: any = {\n apikey: this.session.apikey,\n clouds,\n flow: 'web',\n token: this.token,\n };\n\n if (accept) {\n if (!Array.isArray(accept)) {\n accept = [accept];\n }\n // filtering mimetypes in clouds\n payload.accept = accept;\n }\n\n if (this.isInAppBrowser) {\n payload.appurl = this.currentAppUrl();\n }\n\n if (this.session.policy && this.session.signature) {\n payload.policy = this.session.policy;\n payload.signature = this.session.signature;\n }\n\n let options: any = {};\n\n if (cancelTokenInput) {\n const cancelToken = new FsCancelToken();\n cancelTokenInput.cancel = cancelToken.cancel.bind(cancelToken);\n options.cancelToken = cancelToken;\n }\n\n return FsRequest.post(`${this.cloudApiUrl}/folder/list`, payload, options).then(res => {\n if (res.data && res.data.token) {\n this.token = res.data.token;\n }\n\n return res.data;\n });\n }\n\n store(name: string, path: string, options: StoreParams = {}, customSource: any = {}, cancelTokenInput?: any, uploadTags: UploadTags = null) {\n // Default to S3\n if (options.location === undefined) {\n options.location = 's3';\n }\n\n const payload: any = {\n apikey: this.session.apikey,\n token: this.token,\n flow: 'web',\n upload_tags: uploadTags ? uploadTags : undefined,\n clouds: {\n [name]: {\n path,\n store: removeEmpty(options),\n },\n },\n };\n\n if (name === 'customsource' && customSource.customSourcePath) {\n payload.clouds.customsource.customSourcePath = customSource.customSourcePath;\n }\n\n if (name === 'customsource' && customSource.customSourceContainer) {\n payload.clouds.customsource.customSourceContainer = customSource.customSourceContainer;\n }\n\n if (this.session.policy && this.session.signature) {\n payload.policy = this.session.policy;\n payload.signature = this.session.signature;\n }\n\n let requestOptions: any = {};\n\n if (cancelTokenInput) {\n const cancelToken = new FsCancelToken();\n cancelTokenInput.cancel = cancelToken.cancel.bind(cancelToken);\n requestOptions.cancelToken = cancelToken;\n }\n\n return FsRequest.post(`${this.cloudApiUrl}/store/`, payload, requestOptions).then(res => {\n if (res.data && res.data.token) {\n this.token = res.data.token;\n }\n\n if (res.data && res.data[name]) {\n return res.data[name];\n }\n\n return res.data;\n });\n }\n\n logout(name?: string) {\n const payload: any = {\n apikey: this.session.apikey,\n flow: 'web',\n token: this.token,\n };\n\n if (name) {\n payload.clouds = { [name]: {} };\n } else {\n if (this.cache) {\n // No name means logout of ALL clouds. Clear local session.\n this.storeAdapter.removeItem(PICKER_KEY, STORE_TYPE.LOCAL);\n }\n\n if (this.isInAppBrowser) {\n this.storeAdapter.removeItem(PICKER_KEY, STORE_TYPE.SESSION);\n }\n }\n\n return FsRequest.post(`${this.cloudApiUrl}/auth/logout`, payload).then(res => {\n if (res.data && res.data[name]) {\n return res.data[name];\n }\n return res.data;\n });\n }\n\n metadata(url: string, headers?: {[key: string]: string}) {\n const payload: any = {\n apikey: this.session.apikey,\n url,\n headers,\n };\n\n if (this.session.policy && this.session.signature) {\n payload.policy = this.session.policy;\n payload.signature = this.session.signature;\n }\n\n return FsRequest.post(`${this.cloudApiUrl}/metadata`, payload).then(res => res.data);\n }\n\n // OpenTok API Endpoints\n tokInit(type: string) {\n if (type !== 'video' && type !== 'audio') {\n throw new FilestackError('Type must be one of video or audio.');\n }\n return FsRequest.post(`${this.cloudApiUrl}/recording/${type}/init`).then(res => res.data);\n }\n\n tokStart(type: string, key: string, sessionId: string) {\n if (type !== 'video' && type !== 'audio') {\n throw new FilestackError('Type must be one of video or audio.');\n }\n const payload = {\n apikey: key,\n session_id: sessionId,\n };\n\n return FsRequest.post(`${this.cloudApiUrl}/recording/${type}/start`, payload).then(res => res.data);\n }\n\n tokStop(type: string, key: string, sessionId: string, archiveId: string) {\n if (type !== 'video' && type !== 'audio') {\n throw new FilestackError('Type must be one of video or audio.');\n }\n\n const payload = {\n apikey: key,\n session_id: sessionId,\n archive_id: archiveId,\n };\n\n return FsRequest.post(`${this.cloudApiUrl}/recording/${type}/stop`, payload).then(res => res.data);\n }\n\n private currentAppUrl() {\n if (!window.URLSearchParams) {\n return undefined;\n }\n\n // set init string for clouds backend,\n // After this cloud service can make redirect back to current page url with selected tab for given cloud\n // if param exists and its value is init, backend will fill it with cloud name\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.set(CALLBACK_URL_KEY, 'init');\n\n return `${window.location.protocol}//${window.location.host}${window.location.pathname}?${searchParams.toString()}`;\n }\n}\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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// import Debug from 'debug';\nimport { FilestackError } from './../../filestack_error';\nimport { Session, Security, Client } from './../client';\nimport { PickerOptions } from './../picker';\nimport { FsRequest } from '../request';\nimport { cleanUpCallbacks } from './../utils';\nimport * as cloneDeep from 'lodash.clonedeep';\n\n// const debug = Debug('fs:prefetch');\n\nexport type PrefetchSettings = {\n inapp_browser?: boolean;\n};\n\nexport type PrefetchPermissions = {\n intelligent_ingestion?: boolean;\n whitelabel?: boolean;\n transforms_ui?: boolean;\n enhance?: boolean;\n advanced_enhance?: boolean;\n};\n\nexport enum PrefetchEvents {\n PICKER = 'picker',\n TRANSFORM_UI = 'transform_ui',\n}\n\nexport type PrefetchOptions = {\n pickerOptions?: PickerOptions;\n settings?: Array<keyof PrefetchSettings>;\n permissions?: Array<keyof PrefetchPermissions>;\n events?: PrefetchEvents[];\n};\n\ninterface PrefetchRequest {\n apikey: string;\n security?: Security;\n permissions?: Array<keyof PrefetchPermissions>;\n settings?: Array<keyof PrefetchSettings>;\n events?: PrefetchEvents[];\n picker_config?: PickerOptions;\n}\n\nexport type PrefetchResponse = {\n blocked?: boolean | string;\n settings?: PrefetchSettings;\n permissions?: PrefetchPermissions;\n pickerOptions: PickerOptions;\n};\n\n/**\n * @private\n */\nexport class Prefetch {\n\n private session: Session;\n\n constructor(param: Session | Client) {\n if (param instanceof Client) {\n this.session = param.session;\n } else {\n this.session = param;\n }\n }\n\n /**\n * Returns filestack options from backend according to input params\n *\n * @param param0\n */\n async getConfig({ pickerOptions, settings, permissions, events }: PrefetchOptions): Promise<PrefetchResponse> {\n let paramsToSend: PrefetchRequest = {\n apikey: this.session.apikey,\n };\n\n if (this.session.policy && this.session.signature) {\n paramsToSend.security = { policy: this.session.policy, signature: this.session.signature };\n }\n\n // if (this.session.prefetch && events) {\n // return FsRequest.post(`${this.session.urls.uploadApiUrl}/prefetch`, { ...paramsToSend, events }).then(() => this.session.prefetch);\n // }\n\n // we should always ask for this setting for picker\n if (!settings) {\n settings = ['inapp_browser'];\n } else {\n settings = settings.concat(['inapp_browser']);\n // make arrray unique\n settings = settings.filter((v, i) => settings.indexOf(v) === i);\n }\n\n let pickerOptionsToSend;\n if (pickerOptions && Object.keys(pickerOptions).length) {\n pickerOptionsToSend = cleanUpCallbacks(cloneDeep({ ...pickerOptions }));\n }\n\n paramsToSend = {\n ...paramsToSend,\n permissions,\n settings,\n picker_config: pickerOptionsToSend,\n events,\n };\n\n this.session.prefetch = null;\n\n return FsRequest.post(`${this.session.urls.uploadApiUrl}/prefetch`, paramsToSend).then((res) => {\n /* istanbul ignore if */\n if (res.status !== 200) {\n throw new FilestackError('There is a problem with prefetch request');\n }\n\n let data = res.data;\n\n // if backend not returning updated_config cay we take old config and return\n if (data.updated_config) {\n // reassign callback from old config to new one returned from backend\n data.pickerOptions = this.reassignCallbacks(pickerOptions, data.updated_config || {});\n delete data.updated_config;\n } else {\n data.pickerOptions = pickerOptions;\n }\n\n this.session.prefetch = data;\n\n return data;\n });\n }\n\n /**\n * Reassign callbacks from old picker configuration\n *\n * @param objOld\n * @param objTarget\n */\n private reassignCallbacks(objOld, objTarget) {\n if (!objOld || Object.keys(objOld).length === 0) {\n return objOld;\n }\n\n for (const k in objOld) {\n if (typeof objOld[k] === 'function') {\n objTarget[k] = objOld[k];\n }\n\n if (objOld[k] === Object(objOld[k])) {\n objTarget[k] = this.reassignCallbacks(objOld[k], objTarget[k]);\n }\n }\n\n return objTarget;\n }\n}\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 { loadModule, FILESTACK_MODULES } from '@filestack/loader';\nimport { FilestackError, FilestackErrorType } from './../filestack_error';\nimport { Client } from './client';\nimport { FSProgressEvent, UploadOptions, WorkflowConfig } from './api/upload/types';\nimport { getValidator, PickerParamsSchema } from './../schema';\n\nexport interface PickerInstance {\n /**\n * Close picker. This operation is idempotent.\n */\n close: () => Promise<void>;\n\n /**\n * Cancel picker uploads. This operation is idempotent.\n */\n cancel: () => Promise<void>;\n\n /**\n * Open picker. This operation is idempotent.\n */\n open: () => Promise<void>;\n\n /**\n * Specify a list of files to open in the picker for cropping\n *\n * ### Example\n *\n * ```js\n * // <input id=\"fileSelect\" type=\"file\">\n *\n * const inputEl = document.getElementById('fileSelect');\n * const picker = client.picker({\n * onUploadDone: res => console.log(res),\n * });\n *\n * inputEl.addEventListener('change', (e) => {\n * picker.crop(e.target.files);\n * });\n *\n * // Or pass an array of URL strings\n * const urls = [\n * 'https://d1wtqaffaaj63z.cloudfront.net/images/fox_in_forest1.jpg',\n * 'https://d1wtqaffaaj63z.cloudfront.net/images/sail.jpg',\n * ];\n * picker.crop(urls);\n * ```\n */\n crop: (files: any[]) => Promise<void>;\n}\n\nexport interface PickerCroppedData {\n cropArea: {\n /**\n * [x, y]\n */\n position: [number, number];\n /**\n * [width, height]\n */\n size: [number, number];\n };\n /**\n * [width, height]\n */\n originalImageSize: [number, number];\n}\n\nexport enum RotateDirection {\n cw = 'CW',\n ccw= 'CCW',\n}\n\nexport interface PickerRotatedData {\n /**\n * Amount rotated in degrees.\n */\n value: number;\n /**\n * Can be CW or CCW (clockwise / counter-clockwise)\n */\n direction: RotateDirection;\n}\n\nexport interface PickerFileMetadata {\n /**\n * The cloud container for the uploaded file.\n */\n container?: string;\n /**\n * Position and size information for cropped images.\n */\n cropped?: PickerCroppedData;\n /**\n * Name of the file.\n */\n filename: string;\n /**\n * Filestack handle for the uploaded file.\n */\n handle: string;\n /**\n * The hash-prefixed cloud storage path.\n */\n key?: string;\n /**\n * The MIME type of the file.\n */\n mimetype: string;\n /**\n * Properties of the local binary file. Also see the pick option `exposeOriginalFile` if you want the underlying `File` object.\n */\n originalFile?: object | File;\n /**\n * The origin of the file, e.g. /Folder/file.jpg.\n */\n originalPath: string;\n /**\n * Direction and value information for rotated images.\n */\n rotated?: PickerRotatedData;\n /**\n * Size in bytes of the uploaded file.\n */\n size: number;\n /**\n * The source from where the file was picked.\n */\n source: string;\n /**\n * Indicates Filestack transit status.\n */\n status?: string;\n /**\n * A uuid for tracking this file in callbacks.\n */\n uploadId: string;\n /**\n * The Filestack CDN URL for the uploaded file.\n */\n url: string;\n}\n\nexport interface CustomAuthTextOptions {\n [key: string]: {\n top?: string[],\n bottom?: string[]\n };\n}\n\nexport interface PickerResponse {\n filesUploaded: PickerFileMetadata[];\n filesFailed: PickerFileMetadata[];\n}\n\nexport interface PickerFileCallback {\n (file: PickerFileMetadata): void | Promise<any>;\n}\nexport interface PickerFileWithTokenCallback {\n (file: PickerFileMetadata, token?: {pause?: () => void, resume?: () => void, cancel?: () => void}): void | Promise<any>;\n}\n\nexport interface PickerFileCancelCallback {\n (file: PickerFileMetadata): void;\n}\n\nexport interface PickerFileErrorCallback {\n (file: PickerFileMetadata, error: Error): void;\n}\n\nexport interface PickerFileProgressCallback {\n (file: PickerFileMetadata, event: FSProgressEvent): void;\n}\n\nexport interface PickerUploadStartedCallback {\n (files: PickerFileMetadata[]): void;\n}\n\nexport interface PickerUploadDoneCallback {\n (files: PickerResponse): void;\n}\n\nexport enum PickerDisplayMode {\n inline = 'inline',\n overlay = 'overlay',\n dropPane = 'dropPane',\n}\n\nexport interface PickerDropPaneOptions {\n /**\n * Toggle the crop UI for dropped files.\n */\n cropFiles?: boolean;\n /**\n * Customize the text content in the drop pane.\n */\n customText?: string;\n /**\n * Disable the file input on click. This does not disable the `onClick` callback.\n */\n disableClick?: boolean;\n /**\n * Toggle the full-page drop zone overlay.\n */\n overlay?: boolean;\n onDragEnter?: (evt: DragEvent) => void;\n onDragLeave?: () => void;\n onDragOver?: (evt: DragEvent) => void;\n onDrop?: (evt: DragEvent) => void;\n /**\n * `onSuccess` must be used instead of `onUploadDone`. The drop pane uses its own callbacks for compatibility purposes. This might eventually change.\n */\n onSuccess?: (files: PickerFileMetadata[]) => void;\n onError?: (files: PickerFileMetadata[]) => void;\n onProgress?: (percent: number) => void;\n onClick?: (evt: any) => void;\n /**\n * Toggle icon element in drop pane.\n */\n showIcon?: boolean;\n /**\n * Toggle upload progress display.\n */\n showProgress?: boolean;\n}\n\nexport interface PickerStoreOptions {\n /**\n * Location for stored file. One of 's3', 'gcs', 'azure', 'rackspace', or 'dropbox'.\n */\n location?: string;\n /**\n * Specify storage container.\n */\n container?: string;\n /**\n * Set container path. Indicate a folder by adding a trailing slash. Without a trailing slash all files will be stored to the same object.\n */\n path?: string;\n /**\n * Specify S3 region.\n */\n region?: string;\n /**\n * S3 container access. 'public' or 'private'.\n */\n access?: string;\n\n /**\n * Workflows ids to run after upload\n */\n workflows?: string[] | WorkflowConfig[];\n}\n\nexport interface PickerCustomText {\n // Actions\n Upload?: string;\n 'Upload more'?: string;\n 'Deselect All'?: string;\n 'View/Edit Selected'?: string;\n 'Sign Out'?: string;\n\n // Source Labels\n 'My Device'?: string;\n 'Web Search'?: string;\n 'Take Photo'?: string;\n 'Link (URL)'?: string;\n 'Record Video'?: string;\n 'Record Audio'?: string;\n\n // Custom Source\n 'Custom Source'?: string;\n\n // Footer Text\n Add?: string;\n 'more file'?: string;\n 'more files'?: string;\n\n // Cloud\n 'Connect {providerName}'?: string;\n 'Select Files from {providerName}'?: string;\n 'You need to authenticate with {providerName}.'?: string;\n 'A new page will open to connect your account.'?: string;\n 'We only extract images and never modify or delete them.'?: string;\n 'To disconnect from {providerName} click \"Sign out\" button in the menu.'?: string;\n 'Sign in with Google'?: string;\n 'Go back'?: string;\n 'This folder is empty.'?: string;\n\n // Summary\n Files?: string;\n Images?: string;\n Uploaded?: string;\n Uploading?: string;\n Completed?: string;\n Filter?: string;\n 'Cropped Images'?: string;\n 'Edited Images'?: string;\n 'Selected Files'?: string;\n 'Crop is required on images'?: string;\n\n // Transform\n Crop?: string;\n Circle?: string;\n Rotate?: string;\n Mask?: string;\n Revert?: string;\n Edit?: string;\n Reset?: string;\n Done?: string;\n Save?: string;\n Next?: string;\n 'Edit Image'?: string;\n 'This image cannot be edited'?: string;\n\n // Retry messaging\n 'Connection Lost'?: string;\n 'Failed While Uploading'?: string;\n 'Retrying in'?: string;\n 'Try again'?: string;\n 'Try now'?: string;\n\n // Local File Source\n 'Drag and Drop, Copy and Paste Files'?: string;\n 'or Drag and Drop, Copy and Paste Files'?: string;\n 'Select Files to Upload'?: string;\n 'Select From'?: string;\n 'Drop your files anywhere'?: string;\n\n // Input placeholders\n 'Enter a URL'?: string;\n 'Search images'?: string;\n\n // Webcam Source\n 'Webcam Disabled'?: string;\n 'Webcam Not Supported'?: string;\n 'Please enable your webcam to take a photo.'?: string;\n 'Your current browser does not support webcam functionality.'?: string;\n 'We suggest using Chrome or Firefox.'?: string;\n\n // Error Notifications\n 'File {displayName} is not an accepted file type. The accepted file types are {types}'?: string;\n 'File {displayName} is too big. The accepted file size is less than {roundFileSize}'?: string;\n 'Our file upload limit is {maxFiles} {filesText}'?: string;\n 'No search results found for \"{search}\"'?: string;\n 'An error occurred. Please try again.'?: string;\n}\n\nexport interface PickerOptions {\n /**\n * Restrict file types that are allowed to be picked. Formats accepted:\n * - .pdf <- any file extension\n * - image/jpeg <- any mime type commonly known by browsers\n * - image/* <- accept all types of images\n * - video/* <- accept all types of video files\n * - audio/* <- accept all types of audio files\n * - application/* <- accept all types of application files\n * - text/* <- accept all types of text files\n */\n accept?: string | string[];\n /**\n * Custom accept check function\n * ```javascript\n * acceptFn: (file, options) => {\n * return options.mimeFromMagicBytes(file.originalFile).then((res) => { // we can check mimetype from magic bytes\n * //console.log(options.mimeFromExtension(file.originalFile.name)); // or check extension from filestack extensions database\n * // throw new Error('Cannot accept that file') // we can throw exception to block file upload\n * // return Promise.reject('Cannot accept that file'') // or reject a promise\n * return Promise.resolve();\n * });\n * }\n * ```\n */\n acceptFn?: (PickerFileMetadata, PickerAcceptFnOptions) => Promise<string>;\n /**\n * Prevent modal close on upload failure and allow users to retry.\n */\n allowManualRetry?: boolean;\n /**\n * Valid sources are:\n * - local_file_system - Default\n * - url - Default\n * - imagesearch - Default\n * - facebook - Default\n * - instagram - Default\n * - googledrive - Default\n * - dropbox - Default\n * - webcam - Uses device menu on mobile. Not currently supported in Safari and IE.\n * - video - Uses device menu on mobile. Not currently supported in Safari and IE.\n * - audio - Uses device menu on mobile. Not currently supported in Safari and IE.\n * - box\n * - github\n * - gmail\n * - googlephotos\n * - onedrive\n * - onedriveforbusiness\n * - customsource - Configure this in your Filestack Dev Portal.\n * - unsplash\n */\n fromSources?: string[];\n /**\n * Container where picker should be appended. Only relevant for `inline` and `dropPane` display modes.\n */\n container?: string | Node;\n\n /**\n * Turn on cleaning JPEG image exif. Method can keep image orientation or color profiles\n * ```javascript\n * cleanupImageExif: {\n * keepOrientation: true\n * keepICCandAPP: true\n * }\n * ```\n */\n cleanupImageExif?: boolean | {\n keepOrientation?: boolean,\n keepICCandAPP?: boolean\n };\n /**\n * Customize the text on the cloud authentication screen in Picker.\n * Use a cloud source name (see [[PickerOptions.fromSources]])\n * or a 'default' as a key, then put your custom notice or consent\n * to the 'top' or the 'bottom' key to show it respectivly above or under 'Connect button'.\n *\n * ```javascript\n * customAuthText: {\n * // use it for every cloud authentication screen\n * default: {\n * top: [\n * 'default top first line',\n * 'default top second line'\n * ],\n * bottom: [\n * 'default bottom first line',\n * 'default bottom second line'\n * ]\n * },\n * // override a default bottom text for only gmail\n * gmail: {\n * bottom: [\n * 'We need your permission to access your data and',\n * 'process it with our machine learning system.'\n * ]\n * }\n * }\n * ```\n */\n customAuthText?: CustomAuthTextOptions;\n /**\n * Picker display mode, one of `'inline'`, `'overlay'`, `'dropPane'` - default is `'overlay'`.\n */\n displayMode?: PickerDisplayMode;\n /**\n * Max number of files to upload concurrently. Default is 4.\n */\n concurrency?: number;\n /**\n * Set the default container for your custom source.\n */\n customSourceContainer?: string;\n /**\n * Set the default path for your custom source container.\n */\n customSourcePath?: string;\n /**\n * Set the display name for the custom source.\n */\n customSourceName?: string;\n /**\n * Provide an object for mapping picker strings to your own strings.\n * Strings surrounded by brackets, `{ foobar }`, are interpolated with runtime values.\n * Source labels are also available to override, e.g. Facebook, Instagram, Dropbox, etc.\n */\n customText?: PickerCustomText;\n /**\n * set support email to display in case of error\n */\n supportEmail?: string;\n /**\n * When true removes the hash prefix on stored files.\n */\n disableStorageKey?: boolean;\n /**\n * When true removes ability to edit images.\n */\n disableTransformer?: boolean;\n /**\n * Disables local image thumbnail previews in the summary screen.\n */\n disableThumbnails?: boolean;\n /**\n * Configure the drop pane behavior, i.e. when `displayMode` is `dropPane`.\n */\n dropPane?: PickerDropPaneOptions;\n /**\n * When true the `originalFile` metadata will be the actual `File` object instead of a POJO\n */\n exposeOriginalFile?: boolean;\n /**\n * Toggle the drop zone to be active on all views. Default is active only on local file source.\n */\n globalDropZone?: boolean;\n /**\n * Hide the picker modal UI once uploading begins. Defaults to `false`.\n */\n hideModalWhenUploading?: boolean;\n\n /**\n * Specify image dimensions. e.g. [800, 600]. Only for JPEG, PNG, and BMP files.\n * Local and cropped images will be resized (upscaled or downscaled) to the specified dimensions before uploading.\n * The original height to width ratio is maintained. To resize all images based on the width, set [width, null], e.g. [800, null].\n * For the height set [null, height], e.g. [null, 600].\n */\n imageDim?: [number, number];\n /**\n * Specify maximum image dimensions. e.g. [800, 600]. Only for JPEG, PNG, and BMP files.\n * Images bigger than the specified dimensions will be resized to the maximum size while maintaining the original aspect ratio.\n * The output will not be exactly 800x600 unless the imageMax matches the aspect ratio of the original image.\n */\n imageMax?: [number, number];\n /**\n * Specify minimum image dimensions. e.g. [800, 600]. Only for JPEG, PNG, and BMP files.\n * Images smaller than the specified dimensions will be upscaled to the minimum size while maintaining the original aspect ratio.\n * The output will not be exactly 800x600 unless the imageMin matches the aspect ratio of the original image.\n */\n imageMin?: [number, number];\n /**\n * Sets locale. Accepts: ca, da, de, en, es, fr, he, it, ja, ko, nl, no, pl, pt, sv, ru, vi, zh, tr\n */\n lang?: string;\n /**\n * Minimum number of files required to start uploading. Defaults to 1.\n */\n minFiles?: number;\n /**\n * Maximum number of files allowed to upload. Defaults to 1.\n */\n maxFiles?: number;\n /**\n * Restrict selected files to a maximum number of bytes. (e.g. 10 \\* 1024 \\* 1024 for 10MB limit).\n */\n maxSize?: number;\n\n /**\n * Default view type option for file browser\n */\n viewType?: 'grid' | 'list';\n\n /**\n * Timeout for error messages\n */\n errorsTimeout?: number;\n /**\n * Specify [width, height] in pixels of the desktop modal.\n */\n modalSize?: [number, number];\n /**\n * Called when all uploads in a pick are cancelled.\n */\n onCancel?: PickerUploadDoneCallback;\n /**\n * Called when the UI is exited.\n */\n onClose?: () => void;\n /**\n * Called when the UI is mounted.\n * @param PickerInstance application handle\n */\n onOpen?: (handle: PickerInstance) => void;\n /**\n * Called whenever user selects a file.\n * ### Example\n *\n * ```js\n * // Using to veto file selection\n * // If you throw any error in this function it will reject the file selection.\n * // The error message will be displayed to the user as an alert.\n * onFileSelected(file) {\n * if (file.size > 1000 * 1000) {\n * throw new Error('File too big, select something smaller than 1MB');\n * }\n * }\n *\n * // Using to change selected file name\n * // NOTE: This currently only works for local uploads\n * onFileSelected(file) {\n * // It's important to return a new file by the end of this function.\n * return { ...file, name: 'foo' };\n * }\n * ```\n *\n * The callback function can also return a Promise to allow asynchronous validation logic.\n * You can pass a file object to `resolve` for changing the file name, it will behave the same as when\n * the file is returned from the non-async callback.\n *\n * ```js\n * onFileSelected(file) {\n * return new Promise((resolve, reject) => {\n * // Do something async\n * resolve();\n * // Or reject the selection with reject()\n * });\n * }\n * ```\n */\n onFileSelected?: PickerFileCallback;\n /**\n * Called when a file upload has been canceled.\n */\n onFileUploadCancel?: PickerFileCancelCallback;\n /**\n * Called when a file begins uploading.\n */\n onFileUploadStarted?: PickerFileWithTokenCallback;\n /**\n * Called when a file is done uploading.\n */\n onFileUploadFinished?: PickerFileCallback;\n /**\n * Called when uploading a file fails.\n */\n onFileUploadFailed?: PickerFileErrorCallback;\n /**\n * Called during multi-part upload progress events. Local files only.\n */\n onFileUploadProgress?: PickerFileProgressCallback;\n /**\n * Called when file is cropped in picker\n */\n onFileCropped?: PickerFileCallback;\n /**\n * Called when uploading starts (user initiates uploading).\n */\n onUploadStarted?: PickerUploadStartedCallback;\n /**\n * Called when all files have been uploaded.\n */\n onUploadDone?: PickerUploadDoneCallback;\n\n /**\n * Define a unique id for the application mount point.\n * May be useful for more advanced use cases.\n * For example, if you wish to have more than one picker instance open at once,\n * then each will need their own unique rootId.\n *\n * **Note:** This option is ignored when `displayMode` is `dropPane`.\n */\n rootId?: string;\n /**\n * Whether to start uploading automatically when maxFiles is hit. Defaults to `false`.\n */\n startUploadingWhenMaxFilesReached?: boolean;\n /**\n * Options for file storage.\n */\n storeTo?: PickerStoreOptions;\n /**\n * Specify options for images passed to the crop UI.\n */\n transformations?: PickerTransformationOptions;\n /**\n * Options for local file uploads.\n */\n uploadConfig?: UploadOptions;\n /**\n * Start uploading immediately on file selection. Defaults to `true`.\n * @important The feature is can be enabled only if crop is disabled - disableTransformer: true\n */\n uploadInBackground?: boolean;\n /**\n * Sets the resolution of recorded video. One of \"320x240\", \"640x480\" or \"1280x720\". Default is `\"640x480\"`.\n */\n videoResolution?: string;\n /**\n * Use Sentry Breadcrumbs mechanism to log information about occured errors.\n * It can override global objects like console, error etc. Defaults to `true`.\n */\n useSentryBreadcrumbs?: boolean;\n /**\n * Specify which Picker instance should respond to paste event.\n * By default only hovered instance responds to event.\n * @param {boolean = false} pasteToFirstInViewPort If none instance is hovered take first picker instance fully visible in viewport\n * @param {boolean = false} pasteToFirstInstance If none instance is hovered take first picker instance that is initialized\n * @pasteToFirstInViewPort is checked first\n */\n pasteMode?: {\n pasteToFirstInViewPort?: boolean,\n pasteToFirstInstance?: boolean\n };\n}\n\nexport interface PickerCropOptions {\n /**\n * Maintain aspect ratio for crop selection. (e.g. 16/9, 800/600).\n */\n aspectRatio?: number;\n /**\n * Force all images to be cropped before uploading.\n */\n force?: boolean;\n}\n\nexport interface PickerTransformationOptions {\n /**\n * Enable crop. Defaults to `true`.\n */\n crop?: boolean | PickerCropOptions;\n /**\n * Enable circle crop. Disabled if crop.aspectRatio is defined and not 1. Converts to PNG. Defaults to `true`.\n */\n circle?: boolean;\n /**\n * Enable image rotation. Defaults to `true`.\n */\n rotate?: boolean;\n\n /**\n * Global force crop option. Can be use ie with circle\n */\n force?: boolean;\n}\n\nexport interface PickerAcceptFnOptions {\n /**\n * Provided accept string\n */\n accept: string[];\n /**\n * Accept string converted to mimetype\n */\n acceptMime: string[];\n /**\n * Mimetype based magic bytes\n * {@link https://filestack.github.io/filestack-js/globals.html#getmimetype}\n */\n mimeFromMagicBytes: Promise<string>;\n /**\n * Mimetype based on file extension\n * {@link https://filestack.github.io/filestack-js/globals.html#extensiontomime}\n */\n mimeFromExtension: string;\n}\n\n/**\n * @private\n * A synchronous-looking wrapper for loading the picker and calling its methods.\n * This is currently needed because the picker module is loaded asynchronously.\n * Eventually we should offer a bundle with the picker module included.\n */\nclass PickerLoader {\n\n private _initialized: Promise<PickerInstance>;\n constructor(client: Client, options?: PickerOptions) {\n const validateRes = getValidator(PickerParamsSchema)(options);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid picker params`, validateRes.errors, FilestackErrorType.VALIDATION);\n }\n\n this._initialized = this.loadModule(client, options);\n }\n\n async open(): Promise<void> {\n const picker = await this._initialized;\n await picker.open();\n }\n\n async crop(files: any[]): Promise<void> {\n const picker = await this._initialized;\n await picker.crop(files);\n }\n\n async close(): Promise<void> {\n const picker = await this._initialized;\n await picker.close();\n }\n\n async cancel(): Promise<void> {\n const picker = await this._initialized;\n await picker.cancel();\n }\n\n private async loadModule(client: Client, options?: PickerOptions): Promise<PickerInstance> {\n const { session: { urls: { pickerUrl: url } } } = client;\n const Picker = await loadModule(FILESTACK_MODULES.PICKER, url);\n return new Picker(client, options);\n }\n}\n\n/**\n * Loads and creates picker instance\n *\n * @private\n * @param client\n * @param options\n */\nexport const picker = (client: Client, options?: PickerOptions): PickerInstance => {\n return new PickerLoader(client, options);\n};\n", "/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\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 * http://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 { EventEmitter } from 'eventemitter3';\nimport * as Sentry from '@sentry/minimal';\nimport { config, Hosts } from '../config';\nimport { FilestackError } from './../filestack_error';\nimport { metadata, MetadataOptions, remove, retrieve, RetrieveOptions, download } from './api/file';\nimport { transform, TransformOptions } from './api/transform';\nimport { storeURL } from './api/store';\nimport * as Utils from './utils';\nimport { Upload, InputFile, UploadOptions, StoreUploadOptions, UploadTags } from './api/upload';\nimport { preview, PreviewOptions } from './api/preview';\nimport { CloudClient } from './api/cloud';\nimport { Prefetch, PrefetchResponse, PrefetchOptions } from './api/prefetch';\nimport { FsResponse } from './request/types';\nimport { StoreParams } from './filelink';\n\nimport { picker, PickerInstance, PickerOptions } from './picker';\n\n/* istanbul ignore next */\nSentry.addBreadcrumb({ category: 'sdk', message: 'filestack-js-sdk scope' });\n\nexport interface Session {\n apikey: string;\n urls: Hosts;\n cname?: string;\n policy?: string;\n signature?: string;\n prefetch?: PrefetchResponse;\n}\n\nexport interface Security {\n policy: string;\n signature: string;\n}\n\nexport interface ClientOptions {\n [option: string]: any;\n /**\n * Security object with policy and signature keys.\n * Can be used to limit client capabilities and protect public URLs.\n * It is intended to be used with server-side policy and signature generation.\n * Read about [security policies](https://www.filestack.com/docs/concepts/security).\n */\n security?: Security;\n /**\n * Domain to use for all URLs. __Requires the custom CNAME addon__.\n * If this is enabled then you must also set up your own OAuth applications\n * for each cloud source you wish to use in the picker.\n */\n cname?: string;\n /**\n * Enable/disable caching of the cloud session token. Default is false.\n * This ensures that users will be remembered on your domain when calling the cloud API from the browser.\n * Please be aware that tokens stored in localStorage are accessible by other scripts on the same domain.\n */\n sessionCache?: boolean;\n\n /**\n * Enable forwarding error logs to sentry\n * @default false\n */\n forwardErrors?: boolean;\n}\n\n/**\n * The Filestack client, the entry point for all public methods. Encapsulates session information.\n *\n * ### Example\n * ```js\n * // ES module\n * import * as filestack from 'filestack-js';\n * const client = filestack.init('apikey');\n * ```\n *\n * ```js\n * // UMD module in browser\n * <script src=\"https://static.filestackapi.com/filestack-js/3.x.x/filestack.min.js\"></script>\n * const client = filestack.init('apikey');\n * ```\n */\nexport class Client extends EventEmitter {\n public session: Session;\n private cloud: CloudClient;\n private prefetchInstance: Prefetch;\n\n private forwardErrors: boolean = true;\n\n /**\n * Returns filestack utils\n *\n * @readonly\n * @memberof Client\n */\n get utils() {\n return Utils;\n }\n\n constructor(apikey: string, private options?: ClientOptions) {\n super();\n\n /* istanbul ignore if */\n if (options && options.forwardErrors) {\n this.forwardErrors = options.forwardErrors;\n }\n\n if (!apikey || typeof apikey !== 'string' || apikey.length === 0) {\n throw new Error('An apikey is required to initialize the Filestack client');\n }\n const { urls } = config;\n this.session = { apikey, urls };\n\n if (options) {\n const { cname, security } = options;\n\n this.setSecurity(security);\n this.setCname(cname);\n }\n\n this.prefetchInstance = new Prefetch(this.session);\n this.cloud = new CloudClient(this.session, options);\n }\n\n /**\n * Make basic prefetch request to check permissions\n *\n * @param params\n */\n prefetch(params: PrefetchOptions) {\n return this.prefetchInstance.getConfig(params);\n }\n\n /**\n * Set security object\n *\n * @param {Security} security\n * @memberof Client\n */\n setSecurity(security: Security) {\n if (security && !(security.policy && security.signature)) {\n throw new FilestackError('Both policy and signature are required for client security');\n }\n\n if (security && security.policy && security.signature) {\n this.session.policy = security.policy;\n this.session.signature = security.signature;\n }\n }\n\n /**\n * Set custom cname\n *\n * @param {string} cname\n * @returns\n * @memberof Client\n */\n setCname(cname: string) {\n if (!cname || cname.length === 0) {\n return;\n }\n\n this.session.cname = cname;\n this.session.urls = Utils.resolveHost(this.session.urls, cname);\n }\n\n /**\n * Clear all current cloud sessions in the picker.\n * Optionally pass a cloud source name to only log out of that cloud source.\n * This essentially clears the OAuth authorization codes from the Filestack session.\n * @param name Optional cloud source name.\n */\n logout(name?: string) {\n return this.cloud.logout(name);\n }\n /**\n * Retrieve detailed data of stored files.\n *\n * ### Example\n *\n * ```js\n * client\n * .metadata('DCL5K46FS3OIxb5iuKby')\n * .then((res) => {\n * console.log(res);\n * })\n * .catch((err) => {\n * console.log(err);\n * }));\n * ```\n * @see [File API - Metadata](https://www.filestack.com/docs/api/file#metadata).\n * @param handle Valid Filestack handle.\n * @param options Metadata fields to enable on response.\n * @param security Optional security override.\n */\n metadata(handle: string, options?: MetadataOptions, security?: Security) {\n /* istanbul ignore next */\n return metadata(this.session, handle, options, security);\n }\n /**\n * Construct a new picker instance.\n */\n picker(options?: PickerOptions): PickerInstance {\n /* istanbul ignore next */\n return picker(this, options);\n }\n /**\n * Used for viewing files via Filestack handles or storage aliases, __requires Document Viewer addon to your Filestack application__.\n * Opens document viewer in new window if id option is not provided.\n *\n * ### Example\n *\n * ```js\n * // <div id=\"preview\"></div>\n *\n * client.preview('DCL5K46FS3OIxb5iuKby', { id: 'preview' });\n * ```\n * @param handle Valid Filestack handle.\n * @param options Preview options\n */\n preview(handle: string, options?: PreviewOptions) {\n /* istanbul ignore next */\n return preview(this.session, handle, options);\n }\n /**\n * Remove a file from storage and the Filestack system.\n *\n * __Requires a valid security policy and signature__. The policy and signature will be pulled from the client session, or it can be overridden with the security parameter.\n *\n * ### Example\n *\n * ```js\n * client\n * .remove('DCL5K46FS3OIxb5iuKby')\n * .then((res) => {\n * console.log(res);\n * })\n * .catch((err) => {\n * console.log(err);\n * }));\n * ```\n * @see [File API - Delete](https://www.filestack.com/docs/api/file#delete)\n * @param handle Valid Filestack handle.\n * @param security Optional security override.\n */\n remove(handle: string, security?: Security): Promise<any> {\n /* istanbul ignore next */\n return remove(this.session, handle, false, security);\n }\n /**\n * Remove a file **only** from the Filestack system. The file remains in storage.\n *\n * __Requires a valid security policy and signature__. The policy and signature will be pulled from the client session, or it can be overridden with the security parameter.\n *\n * ### Example\n *\n * ```js\n * client\n * .removeMetadata('DCL5K46FS3OIxb5iuKby')\n * .then((res) => {\n * console.log(res);\n * })\n * .catch((err) => {\n * console.log(err);\n * }));\n * ```\n * @see [File API - Delete](https://www.filestack.com/docs/api/file#delete)\n * @param handle Valid Filestack handle.\n * @param security Optional security override.\n */\n removeMetadata(handle: string, security?: Security): Promise<any> {\n /* istanbul ignore next */\n return remove(this.session, handle, true, security);\n }\n /**\n * Store a file from its URL.\n *\n * ### Example\n *\n * ```js\n * client\n * .storeURL('https://d1wtqaffaaj63z.cloudfront.net/images/NY_199_E_of_Hammertown_2014.jpg')\n * .then(res => console.log(res));\n * ```\n * @see [File API - Store](https://www.filestack.com/docs/api/file#store)\n * @param url Valid URL to a file.\n * @param options Configure file storage.\n * @param token Optional control token to call .cancel()\n * @param security Optional security override.\n * @param uploadTags Optional tags visible in webhooks.\n * @param headers Optional headers to send\n * @param workflowIds Optional workflowIds to send\n */\n storeURL(url: string, storeParams?: StoreParams, token?: any, security?: Security, uploadTags?: UploadTags, headers?: {[key: string]: string}, workflowIds?: string[]): Promise<Object> {\n return storeURL({\n session: this.session,\n url,\n storeParams,\n token,\n security,\n uploadTags,\n headers,\n workflowIds,\n });\n }\n\n /**\n * Access files via their Filestack handles.\n *\n * If head option is provided - request headers are returned in promise\n * If metadata option is provided - metadata object is returned in promise\n * Otherwise file blob is returned\n * Metadata and head options cannot be mixed\n *\n * ### Example\n *\n * ```js\n * client.retrieve('fileHandle', {\n * metadata: true,\n * }).then((response) => {\n * console.log(response);\n * }).catch((err) => {\n * console.error(err);\n * })\n * ```\n *\n * @see [File API - Download](https://www.filestack.com/docs/api/file#download)\n * @deprecated use metadata or download methods instead\n * @param handle Valid file handle\n * @param options RetrieveOptions\n * @param security Optional security override.\n * @throws Error\n */\n retrieve(handle: string, options?: RetrieveOptions, security?: Security): Promise<Object | Blob> {\n /* istanbul ignore next */\n return retrieve(this.session, handle, options, security);\n }\n\n /**\n * Download file by handle\n *\n *\n * ### Browser Example\n *\n * ```js\n * client.download('fileHandle').then((response) => {\n * const img = new Image();\n * img.src = URL.createObjectURL(res.data)\n * document.body.appendChild(img);\n * }).catch((err) => {\n * console.error(err);\n * })\n * ```\n *\n * @see [File API - Download](https://www.filestack.com/docs/api/file#download)\n * @param handle Valid file handle\n * @throws Error\n */\n download(handle: string, security?: Security): Promise<FsResponse> {\n /* istanbul ignore next */\n return download(this.session, handle, security);\n }\n\n /**\n * Interface to the Filestack [Processing API](https://www.filestack.com/docs/api/processing).\n * Convert a URL, handle, or storage alias to another URL which links to the transformed file.\n * You can optionally store the returned URL with client.storeURL.\n *\n * Transform params can be provided in camelCase or snakeCase style ie: partial_pixelate or partialPixelate\n *\n * ### Example\n *\n * ```js\n * const transformedUrl = client.transform(url, {\n * crop: {\n * dim: [x, y, width, height],\n * },\n * vignette: {\n * blurmode: 'gaussian',\n * amount: 50,\n * },\n * flip: true,\n * partial_pixelate: {\n * objects: [[10, 20, 200, 250], [275, 91, 500, 557]],\n * },\n * };\n *\n * // optionally store the new URL\n * client.storeURL(transformedUrl).then(res => console.log(res));\n * ```\n * @see [Filestack Processing API](https://www.filestack.com/docs/api/processing)\n * @param url Single or multiple valid URLs (http(s)://), file handles, or storage aliases (src://) to an image.\n * @param options Transformations are applied in the order specified by this object.\n * @param b64 Use new more safe format for generating transforms url (default=false) Note: If there will be any issues with url please test it with enabled b64 support\n * @returns A new URL that points to the transformed resource.\n */\n transform(url: string | string[], options: TransformOptions, b64: boolean = false) {\n /* istanbul ignore next */\n return transform(this.session, url, options, b64);\n }\n\n /**\n * Initiates a multi-part upload flow. Use this for Filestack CIN and FII uploads.\n *\n * In Node runtimes the file argument is treated as a file path.\n * Uploading from a Node buffer is not yet implemented.\n *\n * ### Example\n *\n * ```js\n * const token = {};\n * const onRetry = (obj) => {\n * console.log(`Retrying ${obj.location} for ${obj.filename}. Attempt ${obj.attempt} of 10.`);\n * };\n *\n * client.upload(file, { onRetry }, { filename: 'foobar.jpg' }, token)\n * .then(res => console.log(res));\n *\n * client.upload({file, name}, { onRetry }, { filename: 'foobar.jpg' }, token)\n * .then(res => console.log(res));\n *\n * token.pause(); // Pause flow\n * token.resume(); // Resume flow\n * token.cancel(); // Cancel flow (rejects)\n * ```\n * @param {InputFile} file Must be a valid [File | Blob | Buffer | string]\n * @param uploadOptions Uploader options.\n * @param storeOptions Storage options.\n * @param token A control token that can be used to call cancel(), pause(), and resume().\n * @param security Optional security policy and signature override.\n *\n * @returns {Promise}\n */\n upload(file: InputFile, options?: UploadOptions, storeOptions?: StoreUploadOptions, token?: any, security?: Security) {\n let upload = new Upload(options, storeOptions);\n upload.setSession(this.session);\n\n if (token) {\n upload.setToken(token);\n }\n\n if (security) {\n upload.setSecurity(security);\n }\n\n upload.on('start', () => this.emit('upload.start'));\n /* istanbul ignore next */\n upload.on('error', e => {\n if (this.forwardErrors) {\n Sentry.withScope(scope => {\n scope.setTag('filestack-apikey', this.session.apikey);\n scope.setTag('filestack-version', Utils.getVersion());\n scope.setExtra('filestack-options', this.options);\n scope.setExtras({ uploadOptions: options, storeOptions, details: e.details });\n e.message = `FS-${e.message}`;\n\n Sentry.captureException(e);\n });\n }\n\n this.emit('upload.error', e);\n });\n\n return upload.upload(file);\n }\n\n /**\n * Initiates a multi-part upload flow. Use this for Filestack CIN and FII uploads.\n *\n * In Node runtimes the file argument is treated as a file path.\n * Uploading from a Node buffer is not yet implemented.\n *\n * ### Example\n *\n * ```js\n * const token = {};\n * const onRetry = (obj) => {\n * console.log(`Retrying ${obj.location} for ${obj.filename}. Attempt ${obj.attempt} of 10.`);\n * };\n *\n * client.multiupload([file], { onRetry }, token)\n * .then(res => console.log(res));\n *\n * client.multiupload([{file, name}], { onRetry }, token)\n * .then(res => console.log(res));\n *\n * token.pause(); // Pause flow\n * token.resume(); // Resume flow\n * token.cancel(); // Cancel flow (rejects)\n * ```\n * @param {InputFile[]} file Must be a valid [File | Blob | Buffer | string (base64)]\n * @param uploadOptions Upload options.\n * @param storeOptions Storage options.\n * @param token A control token that can be used to call cancel(), pause(), and resume().\n * @param security Optional security policy and signature override.\n *\n * @returns {Promise}\n */\n multiupload(file: InputFile[], options?: UploadOptions, storeOptions?: StoreUploadOptions, token?: any, security?: Security) {\n let upload = new Upload(options, storeOptions);\n\n upload.setSession(this.session);\n\n if (token) {\n upload.setToken(token);\n }\n\n if (security) {\n upload.setSecurity(security);\n }\n\n upload.on('start', () => this.emit('upload.start'));\n /* istanbul ignore next */\n upload.on('error', e => {\n Sentry.withScope(scope => {\n scope.setTag('filestack-apikey', this.session.apikey);\n scope.setTag('filestack-version', Utils.getVersion());\n scope.setExtra('filestack-options', this.options);\n scope.setExtras(e.details);\n scope.setExtras({ uploadOptions: options, storeOptions });\n Sentry.captureException(e);\n });\n\n this.emit('upload.error', e);\n });\n\n return upload.multiupload(file);\n }\n}\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 { Security, Session } from '../client';\nimport { Filelink, StoreParams } from './../filelink';\nimport { FilestackError } from './../../filestack_error';\nimport { getValidator, StoreParamsSchema } from './../../schema';\nimport { FsRequest, FsCancelToken } from '../request';\nimport { UploadTags } from './upload/file';\n\nexport type StoreUrlParams = {\n session: Session;\n url?: string;\n storeParams?: StoreParams;\n token?: any;\n security?: Security;\n uploadTags?: UploadTags;\n headers?: {[key: string]: string},\n workflowIds?: string[]\n};\n\n/**\n * Store given url with options and\n *\n * @param session\n * @param url\n * @param storeOpts\n * @param token\n * @param security\n * @param uploadTags\n * @param workflowIds\n */\nexport const storeURL = ({\n session,\n url,\n storeParams,\n token,\n security,\n uploadTags,\n headers,\n workflowIds,\n}: StoreUrlParams): Promise<any> => {\n if (!url || typeof url !== 'string') {\n return Promise.reject(new FilestackError('url is required for storeURL'));\n }\n\n const validateRes = getValidator(StoreParamsSchema)(storeParams);\n\n if (validateRes.errors.length) {\n return Promise.reject(new FilestackError(`Invalid store params`, validateRes.errors));\n }\n\n session.policy = security && security.policy || session.policy;\n session.signature = security && security.signature || session.signature;\n\n const filelink = new Filelink(url, session.apikey);\n filelink.store(storeParams);\n\n if (session.policy && session.signature) {\n filelink.security({\n policy: session.policy,\n signature: session.signature,\n });\n }\n\n let options: any = {};\n\n if (token) {\n const cancelToken = new FsCancelToken();\n token.cancel = cancelToken.cancel.bind(cancelToken);\n options.cancelToken = cancelToken;\n }\n\n let sources: any = [ url ];\n\n if (headers) {\n sources = [{\n source: url,\n headers,\n }];\n }\n\n if (workflowIds && workflowIds.length > 0) {\n filelink.addTask('store', { workflows: workflowIds });\n }\n\n return FsRequest.post(`${session.urls.processUrl}/process`, {\n apikey: session.apikey,\n sources,\n tasks: filelink.getTasks(),\n upload_tags: uploadTags,\n }, options).then((res) => {\n if (res.data && res.data.handle) {\n if (res.data.upload_tags) {\n res.data.uploadTags = res.data.upload_tags;\n delete res.data.upload_tags;\n }\n\n return { ...res.data, mimetype: res.data.type };\n }\n\n throw new FilestackError(`Invalid store response ${JSON.stringify(res.data)}`);\n });\n};\n", "/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\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 * http://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 */\nimport { registerModule, FILESTACK_MODULES } from '@filestack/loader';\nimport { SecurityOptions, getSecurity, validateWebhookSignature, WebhookValidatePayload } from './lib/api/security';\nimport { Client, ClientOptions, Security } from './lib/client';\nimport { PickerOptions, PickerInstance, PickerUploadDoneCallback, PickerFileMetadata, PickerResponse, PickerDisplayMode } from './lib/picker';\nimport { TransformSchema } from './schema/transforms.schema';\nimport { TransformOptions } from './lib/api/transform';\nimport { RetrieveOptions, MetadataOptions } from './lib/api/file';\nimport { UploadTags } from './lib/api/upload/file';\nimport { InputFile } from './lib/api/upload/file_tools';\nimport { UploadOptions } from './lib/api/upload/types';\nimport { StoreUploadOptions } from './lib/api/upload';\nimport { PreviewOptions } from './lib/api/preview';\nimport { PrefetchOptions, PrefetchResponse, PrefetchPermissions, PrefetchEvents } from './lib/api/prefetch';\nimport { FilestackError } from './filestack_error';\nimport { getMimetype } from './lib/utils/index';\n\n/**\n * Initialize client with given config\n *\n * @param apikey\n * @param options\n */\nexport const Filestack = (apikey: string, options?: ClientOptions): Client => {\n return new Client(apikey, options);\n};\n\n// This will be deprecated in feature use\nexport const init = Filestack;\n\n/**\n * filestack-js version. Interpolated at build time.\n */\nexport const version = '@{VERSION}';\n\nregisterModule(FILESTACK_MODULES.FILESTACK_SDK, Filestack, { version: '@{VERSION}' });\n\nexport * from './lib/api/transform';\nexport * from './lib/filelink';\nexport * from './filestack_error';\nexport * from './lib/request';\nexport * from './lib/utils';\n\nexport {\n UploadTags,\n TransformSchema,\n SecurityOptions,\n getSecurity,\n validateWebhookSignature,\n WebhookValidatePayload,\n ClientOptions,\n PickerOptions,\n PickerInstance,\n Security,\n TransformOptions,\n RetrieveOptions,\n InputFile,\n UploadOptions,\n StoreUploadOptions,\n MetadataOptions,\n PreviewOptions,\n PickerUploadDoneCallback,\n PickerFileMetadata,\n PickerResponse,\n Client,\n FilestackError,\n PickerDisplayMode,\n getMimetype,\n PrefetchOptions,\n PrefetchResponse,\n PrefetchPermissions,\n PrefetchEvents\n};\n", "import { getGlobalObject } from './misc';\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 = 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 = 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 * 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 const { performance } = getGlobalObject<Window>();\n if (!performance) {\n return undefined;\n }\n if (performance.timeOrigin) {\n return performance.timeOrigin;\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 return (performance.timing && performance.timing.navigationStart) || Date.now();\n})();\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, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName } from './stacktrace';\nimport { truncate } from './string';\n\n/**\n * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacementFactory A function that should be used to wrap a given method, returning the wrapped method which\n * will be substituted in for `source[name]`.\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 wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n });\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 * 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 */\nfunction getWalkSource(\n value: any,\n): {\n [key: string]: any;\n} {\n if (isError(value)) {\n const error = value as ExtendedError;\n const err: {\n [key: string]: any;\n stack: string | undefined;\n message: string;\n name: string;\n } = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n\n for (const i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n\n return err;\n }\n\n 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 const source: {\n [key: string]: any;\n } = {};\n\n source.type = event.type;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event.target)\n ? htmlTreeAsString(event.target)\n : Object.prototype.toString.call(event.target);\n } catch (_oO) {\n source.target = '<unknown>';\n }\n\n try {\n source.currentTarget = isElement(event.currentTarget)\n ? htmlTreeAsString(event.currentTarget)\n : Object.prototype.toString.call(event.currentTarget);\n } catch (_oO) {\n source.currentTarget = '<unknown>';\n }\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event.detail;\n }\n\n for (const i in event) {\n if (Object.prototype.hasOwnProperty.call(event, i)) {\n source[i] = event;\n }\n }\n\n return source;\n }\n\n return value as {\n [key: string]: any;\n };\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 */\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/** JSDoc */\nexport function normalizeToSize<T>(\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 serialized = normalize(object, depth);\n\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return serialized as T;\n}\n\n/**\n * Transform any non-primitive, BigInt, or Symbol-type value into a string. Acts as a no-op on strings, numbers,\n * booleans, null, and undefined.\n *\n * @param value The value to stringify\n * @returns For non-primitive, BigInt, and Symbol-type values, a string denoting the value's type, type and value, or\n * type and `description` property, respectively. For non-BigInt, non-Symbol primitives, returns the original value,\n * unchanged.\n */\nfunction serializeValue(value: any): any {\n const type = Object.prototype.toString.call(value);\n\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n\n const normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\nfunction normalizeValue<T>(value: T, key?: any): T | string {\n if (key === 'domain' && value && typeof value === 'object' && ((value as unknown) as { _events: any })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n if (typeof (global as any) !== 'undefined' && (value as unknown) === global) {\n return '[Global]';\n }\n\n if (typeof (window as any) !== 'undefined' && (value as unknown) === window) {\n return '[Window]';\n }\n\n if (typeof (document as any) !== 'undefined' && (value as unknown) === document) {\n return '[Document]';\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 (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n // symbols and bigints are considered primitives by TS, but aren't natively JSON-serilaizable\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n return value;\n}\n\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function walk(key: string, value: any, depth: number = +Infinity, memo: Memo = new Memo()): any {\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // If value implements `toJSON` method, call it and return early\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n const normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n const source = getWalkSource(value);\n\n // Create an accumulator that will act as a parent for all future itterations of that branch\n const acc = Array.isArray(value) ? [] : {};\n\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n\n // Walk all keys of the source\n for (const innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n (acc as { [key: string]: any })[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n\n // Return accumulated values\n return acc;\n}\n\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function normalize(input: any, depth?: number): any {\n try {\n return JSON.parse(JSON.stringify(input, (key: string, value: any) => walk(key, value, depth)));\n } catch (_oO) {\n return '**non-serializable**';\n }\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(getWalkSource(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 obj = val as { [key: string]: any };\n const rv: { [key: string]: any } = {};\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[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", "import React, { useState, useMemo } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport rooms from 'domains/wall_preview_rooms';\n\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\nimport EditRoomUpload from './EditRoomUpload';\n\nimport type { FeetInchesPair } from 'utils/math_util';\n\ntype EditRoomUploadsModalProps = {\n lastFocusedElementId: string;\n handleChangeRoom: () => void;\n onClose: () => void;\n};\n\nfunction EditRoomUploadsModal(props: EditRoomUploadsModalProps) {\n const { handleChangeRoom, lastFocusedElementId, onClose } = props;\n\n const dispatch = useAppDispatch();\n const drafts = useAppSelector(rooms.selectors.draftRooms);\n\n const [shouldUpdateWidth, setShouldUpdateWidth] = useState(false);\n const [currentWidthDisplay, setCurrentWidthDisplay] = useState<FeetInchesPair>([0, 0]);\n const [updatedWidthDisplay, setUpdatedWidthDisplay] = useState<FeetInchesPair>([0, 0]);\n\n const multipleRooms = drafts.length > 1;\n\n // Save any updated room data and merge response with existing\n function handleUpdateRooms() {\n dispatch(rooms.actions.saveUserRooms.pending());\n handleChangeRoom();\n }\n\n // Clear edits and send back to choose room modal\n function handleCancelEdit() {\n dispatch(rooms.actions.resetEditDrafts());\n onClose();\n }\n\n function updateCalculatedWidthDisplay(\n shouldUpdate: boolean,\n currentWidth: FeetInchesPair,\n updatedWidth: FeetInchesPair\n ) {\n setShouldUpdateWidth(shouldUpdate);\n setCurrentWidthDisplay(currentWidth);\n setUpdatedWidthDisplay(updatedWidth);\n }\n\n const primaryFooterGroup = (\n <React.Fragment>\n <Button type=\"confirm\" onClick={handleUpdateRooms}>\n Save {multipleRooms ? 'all' : ''} with new measurements\n </Button>\n <Button type=\"cancel\" onClick={handleCancelEdit}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n const secondaryFooterGroup = (\n <React.Fragment>\n <FontAwesomeIcon icon=\"ruler\" size=\"lg\" />\n <span>\n Saved width of space:{' '}\n <span className=\"width-label\">\n {currentWidthDisplay[0]}ft {currentWidthDisplay[1]}in\n </span>\n </span>\n {shouldUpdateWidth && <span className=\"separator\">|</span>}\n {shouldUpdateWidth && (\n <span className=\"new-width\">\n New width:{' '}\n <span className=\"width-label\">\n {updatedWidthDisplay[0]}ft {updatedWidthDisplay[1]}in\n </span>\n </span>\n )}\n </React.Fragment>\n );\n\n const roomUploads = useMemo(\n () =>\n drafts.map((draft) => (\n <EditRoomUpload\n key={draft.id}\n room={draft}\n handleChangeRoom={handleChangeRoom}\n updateCalculatedWidthDisplay={updateCalculatedWidthDisplay}\n />\n )),\n [handleChangeRoom, drafts]\n );\n\n return (\n <Modal\n title=\"Information about your room\"\n labelledBy=\"edit-room-upload-modal\"\n modalClass={['edit-room-upload-modal']}\n lastFocusedElementId={lastFocusedElementId}\n onClose={onClose}\n primaryFooterGroup={primaryFooterGroup}\n secondaryFooterGroup={secondaryFooterGroup}\n // if only one room upload, don't use paginated modal\n pageStartIndex={multipleRooms ? 0 : null}\n >\n {roomUploads}\n </Modal>\n );\n}\n\nexport default EditRoomUploadsModal;\n", "import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { clamp } from 'lodash';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { inchesToFeetInches } from 'utils/math_util';\nimport { loadBlobAsImage } from 'utils/image_load';\n\nimport rooms from 'domains/wall_preview_rooms';\nimport ui from 'domains/ui';\n\nimport Spinner from 'components/shared/Spinner';\n\nimport type { EditUserRoomDraft, WallPreviewUserRoom } from 'domains/wall_preview_rooms';\nimport type { FeetInchesPair } from 'utils/math_util';\n\ntype EditRoomUploadProps = {\n room: WallPreviewUserRoom;\n updateCalculatedWidthDisplay: (\n should: boolean,\n current: FeetInchesPair,\n update: FeetInchesPair\n ) => void;\n handleChangeRoom: () => void;\n};\n\nfunction EditRoomUpload(props: EditRoomUploadProps) {\n const { room, updateCalculatedWidthDisplay, handleChangeRoom } = props;\n\n const dispatch = useAppDispatch();\n const previousEdit = useAppSelector((state) => rooms.selectors.editRoomDraftById(state, room.id));\n\n const [isLoading, setIsLoading] = useState(true);\n\n // Rendered image size (not full res)\n const [imageWidth, setImageWidth] = useState(0);\n const [imageHeight, setImageHeight] = useState(0);\n\n // Left(1) and right(2) measurement handle selection & positions\n const [whichHandle, setWhichHandle] = useState<0 | 1 | 2>(0);\n\n // Init the coordinates to the 'previous' value so we can use the paginated modal\n const [x1, setX1] = useState(() => (previousEdit && previousEdit.x1 ? previousEdit.x1 : 0));\n const [y1, setY1] = useState(() => (previousEdit && previousEdit.y1 ? previousEdit.y1 : 0));\n const [x2, setX2] = useState(() => (previousEdit && previousEdit.x2 ? previousEdit.x2 : 0));\n const [y2, setY2] = useState(() => (previousEdit && previousEdit.y2 ? previousEdit.y2 : 0));\n\n // How much to scale the full res image for zooming\n const [imageScale, setImageScale] = useState(0);\n // Pixel measurement of the drawn measurement line\n const [hypotenuse, setHypotenuse] = useState(0);\n // User entered value for the measurement\n const [lengthInput, setLengthInput] = useState(() => {\n return previousEdit && previousEdit.lengthInput ? previousEdit.lengthInput : 60;\n });\n // Calculated width of the room in inches\n const [calculatedWidth, setCalculatedWidth] = useState(room.wall_size);\n // User's description\n const [description, setDescription] = useState(room.description);\n // Set when a user makes an action to change the width -- moving a point or changing the length input\n const [shouldUpdateWidth, setShouldUpdateWidth] = useState(() => {\n return previousEdit && previousEdit.shouldUpdateWidth ? previousEdit.shouldUpdateWidth : false;\n });\n\n const handle1 = useRef({ x: 0, y: 0 });\n const handle2 = useRef({ x: 0, y: 0 });\n\n function setHandle1(x: number, y: number) {\n handle1.current.x = x;\n handle1.current.y = y;\n setX1(handle1.current.x);\n setY1(handle1.current.y);\n }\n\n function setHandle2(x: number, y: number) {\n handle2.current.x = x;\n handle2.current.y = y;\n setX2(handle2.current.x);\n setY2(handle2.current.y);\n }\n\n // Handles setting the x & y of whichever handle is being dragged\n function handleButtonDrag(event: React.MouseEvent<HTMLButtonElement>, handle: 1 | 2) {\n let positionSetter: (x: number, y: number) => void;\n let restrictY: number;\n\n if (handle === 1) {\n positionSetter = setHandle1;\n restrictY = y2;\n } else if (handle === 2) {\n positionSetter = setHandle2;\n restrictY = y1;\n } else {\n // Don't know why typescript can't infer that positionSetter will be set\n // even though it can infer restrictY, but it doesn't so this clears it up\n return;\n }\n\n const imageContainer = document.getElementById('edit-room-image');\n if (!imageContainer) return;\n\n const { x: imageX, y: imageY } = imageContainer.getBoundingClientRect();\n\n // Set the zoom & handle position data on click\n handleZoom(event.clientX - imageX, event.clientY - imageY);\n positionSetter(event.clientX - imageX, event.clientY - imageY);\n setWhichHandle(handle);\n\n setShouldUpdateWidth(true);\n\n function trackmove(e: MouseEvent) {\n const { clientX, clientY, shiftKey } = e;\n const x = clamp(clientX - imageX, 0, imageWidth);\n const y = shiftKey ? restrictY : clamp(clientY - imageY, 0, imageHeight);\n handleZoom(x, y);\n positionSetter(x, y);\n }\n\n document.addEventListener('mousemove', trackmove);\n document.addEventListener(\n 'mouseup',\n () => {\n setWhichHandle(0);\n document.removeEventListener('mousemove', trackmove);\n },\n { once: true }\n );\n }\n\n function handleButtonDragTouch(startEvent: React.TouchEvent<HTMLButtonElement>, handle: 1 | 2) {\n startEvent.preventDefault();\n\n let positionSetter: (x: number, y: number) => void;\n let restrictY: number;\n\n if (handle === 1) {\n positionSetter = setHandle1;\n restrictY = y2;\n } else if (handle === 2) {\n positionSetter = setHandle2;\n restrictY = y1;\n } else {\n // Don't know why typescript can't infer that positionSetter will be set\n // even though it can infer restrictY, but it doesn't so this clears it up\n return;\n }\n\n const imageContainer = document.getElementById('edit-room-image');\n if (!imageContainer) return;\n\n const { x: imageX, y: imageY } = imageContainer.getBoundingClientRect();\n\n // Set the zoom & handle position data on click\n const startTouch = startEvent.touches[0];\n handleZoom(startTouch.clientX - imageX, startTouch.clientY - imageY);\n positionSetter(startTouch.clientX - imageX, startTouch.clientY - imageY);\n setWhichHandle(handle);\n\n setShouldUpdateWidth(true);\n\n const trackmove = (e: TouchEvent) => {\n e.preventDefault();\n const { touches, shiftKey } = e;\n const { clientX, clientY } = touches[0];\n const x = clamp(clientX - imageX, 0, imageWidth);\n const y = shiftKey ? restrictY : clamp(clientY - imageY, 0, imageHeight);\n handleZoom(x, y);\n positionSetter(x, y);\n };\n\n document.addEventListener('touchmove', trackmove, { passive: false });\n document.addEventListener(\n 'touchend',\n () => {\n setWhichHandle(0);\n document.removeEventListener('touchmove', trackmove);\n },\n { once: true }\n );\n }\n\n // Handles slicing a portion out of a full-res image from one canvas and\n // placing it in a second 'zoom' canvas\n function handleZoom(x: number, y: number) {\n const canvas = document.getElementById('edit-room-image-canvas') as HTMLCanvasElement | null;\n const canvas2 = document.getElementById('edit-room-zoom-canvas') as HTMLCanvasElement | null;\n\n const context = canvas2?.getContext('2d');\n if (!context || !canvas) return;\n\n // Cribbed & slightly modified from MDN\n // https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Pixel_manipulation_with_canvas\n const zoom = function zoom(ctx: CanvasRenderingContext2D, zoomX: number, zoomY: number) {\n // Scaling function so we can use the full res image for zooming\n const scaled = (n: number) => n * imageScale;\n\n // How many pixels of the visible image to zoom\n const pixelsToZoom = 5;\n const zoomFrame = pixelsToZoom * 2;\n\n // Scale these once\n const scaledPixels = scaled(pixelsToZoom);\n const scaledFrame = scaled(zoomFrame);\n\n // x and y coordinates to use from the full res canvas\n // Move left & up from the drag handle's position by pixelsToZoom, but bounded by image size\n const sourceX = Math.min(\n Math.max(0, scaled(zoomX) - scaledPixels),\n scaled(imageWidth) - scaledFrame\n );\n const sourceY = Math.min(\n Math.max(0, scaled(zoomY) - scaledPixels),\n scaled(imageHeight) - scaledFrame\n );\n\n // Draw the zoomed image in the second canvas\n ctx.drawImage(\n canvas,\n sourceX,\n sourceY, // full res canvas coordinate for starting the slice\n scaledFrame,\n scaledFrame, // how many pixels of the full res canvas to slice\n 0,\n 0, // place the image at the top left of the zoom canvas\n 100,\n 100 // make the zoom canvas 100px square (we round corners in CSS)\n );\n\n // Draw the target cross inside the zoom canvas\n ctx.beginPath();\n ctx.moveTo(25, 50);\n ctx.lineTo(75, 50);\n ctx.moveTo(50, 25);\n ctx.lineTo(50, 75);\n ctx.closePath();\n ctx.stroke();\n };\n\n zoom(context, x, y);\n }\n\n function setImageSize(e: React.SyntheticEvent<HTMLImageElement>) {\n const { clientHeight, clientWidth } = e.target as HTMLImageElement;\n setImageWidth(clientWidth);\n setImageHeight(clientHeight);\n // Set the starting points for the handles\n if (!previousEdit || !previousEdit.x1) {\n setHandle1(0.25 * clientWidth, 0.5 * clientHeight);\n setHandle2(0.75 * clientWidth, 0.5 * clientHeight);\n }\n }\n\n // Create imaginary right triangle to use for the measurement ratio calculation\n useEffect(() => {\n // horizontal edge\n const a = Math.abs(x1 - x2);\n // vertical edge\n const b = Math.abs(y1 - y2);\n\n // a^2 times b^2 equals c^2\n const hypotenuseToSet = Math.sqrt(a ** 2 + b ** 2);\n setHypotenuse(hypotenuseToSet);\n }, [x1, y1, x2, y2]);\n\n // Use the imaginary right triangle to create a ratio and convert user's measurement to the whole image\n // Image Width (px) : Hypotenuse (px) :: Room Width (in) : User Input Length (in)\n useEffect(() => {\n if (hypotenuse !== 0) {\n const x = (imageWidth / hypotenuse) * lengthInput;\n setCalculatedWidth(x);\n }\n }, [hypotenuse, lengthInput, imageWidth]);\n\n // Init the zoom source canvas\n useEffect(() => {\n async function initZoomCanvas() {\n const canvas = document.getElementById('edit-room-image-canvas') as HTMLCanvasElement | null;\n const ctx = canvas?.getContext('2d');\n if (!ctx) return;\n\n try {\n const image = await loadBlobAsImage(room.url);\n const { naturalHeight, naturalWidth } = image;\n setIsLoading(false);\n setImageScale(naturalWidth / imageWidth);\n ctx.drawImage(image, 0, 0, naturalWidth, naturalHeight);\n } catch (error) {\n dispatch(\n ui.actions.setSiteMessage({\n messageType: 'error',\n message: 'Failed to load image. Refresh the page and try again.',\n })\n );\n dispatch(rooms.actions.resetEditDrafts());\n handleChangeRoom();\n }\n }\n\n if (room.url && imageWidth && imageHeight) {\n initZoomCanvas();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [room, imageWidth, imageHeight, dispatch]);\n\n useEffect(() => {\n let update: EditUserRoomDraft = {\n id: room.id,\n wallSize: calculatedWidth,\n description,\n lengthInput,\n shouldUpdateWidth,\n };\n\n if (x1 !== 0 && x2 !== 0 && y1 !== 0 && y2 !== 0) {\n update = { ...update, x1, x2, y1, y2 };\n }\n\n dispatch(rooms.actions.updateRoomEditDraft({ update, id: room.id }));\n }, [\n x1,\n y1,\n x2,\n y2,\n lengthInput,\n description,\n calculatedWidth,\n shouldUpdateWidth,\n room,\n dispatch,\n ]);\n\n // styles for the 'left' button\n const handle1Style: React.CSSProperties = {\n left: `${x1 - 10}px`,\n top: `${y1 - 10}px`,\n };\n\n // styles for the 'right' button\n const handle2Style: React.CSSProperties = {\n left: `${x2 - 10}px`,\n top: `${y2 - 10}px`,\n };\n\n // Styles for the magnified canvas\n const zoomCanvasStyle: React.CSSProperties = useMemo(() => {\n let left = 0;\n let top = 0;\n let display = 'block';\n\n switch (whichHandle) {\n case 1:\n left = x1;\n top = y1;\n break;\n case 2:\n left = x2;\n top = y2;\n break;\n case 0:\n default:\n display = 'none';\n }\n return {\n border: '1px solid #00a7e1',\n borderRadius: '100px',\n position: 'absolute',\n zIndex: 3,\n display,\n left,\n top,\n };\n }, [whichHandle, x1, x2, y1, y2]);\n\n const spinnerStyle: React.CSSProperties = {\n bottom: '50%',\n height: '50px',\n left: '0',\n margin: 'auto',\n position: 'absolute',\n right: '0',\n top: '0',\n width: '50px',\n };\n\n const imageBoundingStyle: React.CSSProperties = useMemo(() => {\n return {\n height: imageHeight,\n width: imageWidth,\n };\n }, [imageHeight, imageWidth]);\n\n useEffect(() => {\n const currentWidthDisplay = inchesToFeetInches(room.wall_size);\n const updatedWidthDisplay = inchesToFeetInches(calculatedWidth);\n updateCalculatedWidthDisplay(shouldUpdateWidth, currentWidthDisplay, updatedWidthDisplay);\n }, [shouldUpdateWidth, room, calculatedWidth, updateCalculatedWidthDisplay]);\n\n return (\n <React.Fragment>\n {isLoading && <Spinner color=\"black\" size=\"50\" style={spinnerStyle} />}\n <div className={`edit-room-upload ${isLoading ? 'loading' : ''}`}>\n <div className=\"edit-room-canvas-container\" style={imageBoundingStyle}>\n <canvas\n id=\"edit-room-image-canvas\"\n width={imageWidth * imageScale}\n height={imageHeight * imageScale}\n />\n <canvas id=\"edit-room-zoom-canvas\" style={zoomCanvasStyle} width={100} height={100} />\n\n <svg className=\"measurement-line\" viewBox={`0 0 ${imageWidth} ${imageHeight}`}>\n <line\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n stroke=\"black\"\n strokeDasharray=\"6 3\"\n strokeWidth=\"2\"\n />\n </svg>\n\n <img onLoad={setImageSize} id=\"edit-room-image\" src={room.url} alt={room.description} />\n\n <div className=\"edit-room-handle-container\" style={imageBoundingStyle}>\n <button\n className=\"drag-handle\"\n onMouseDown={(e) => handleButtonDrag(e, 1)}\n onTouchStart={(e) => handleButtonDragTouch(e, 1)}\n style={handle1Style}\n >\n <span aria-hidden=\"true\">+</span>\n <span className=\"screen-reader-text\">Drag handle left side</span>\n </button>\n <button\n className=\"drag-handle\"\n onMouseDown={(e) => handleButtonDrag(e, 2)}\n onTouchStart={(e) => handleButtonDragTouch(e, 2)}\n style={handle2Style}\n >\n <span aria-hidden=\"true\">+</span>\n <span className=\"screen-reader-text\">Drag handle right side</span>\n </button>\n </div>\n </div>\n\n <div className=\"edit-guide\">\n <div>\n <FontAwesomeIcon className=\"edit-guide-icon\" icon=\"ruler-combined\" size=\"2x\" />\n <p>Measure an object against the wall in your room</p>\n </div>\n <span>\n <FontAwesomeIcon icon=\"angle-right\" size=\"3x\" />\n </span>\n <div>\n <div className=\"measurement-line-icon\">\n <svg viewBox=\"0 0 100 20\">\n <circle cx=\"5\" cy=\"10\" r=\"4\" strokeWidth=\"2\" />\n <line x1={10} y1={10} x2={55} y2={10} strokeDasharray=\"6 3\" strokeWidth=\"2\" />\n <circle cx=\"60\" cy=\"10\" r=\"4\" strokeWidth=\"2\" />\n </svg>\n </div>\n <p>\n Adjust the width of the line in the uploaded photo to match the object you measured\n </p>\n </div>\n <span>\n <FontAwesomeIcon icon=\"angle-right\" size=\"3x\" />\n </span>\n <div className=\"input-group\">\n <label htmlFor=\"length-measurement\">Enter the width of the object in inches</label>\n <input\n id=\"length-measurement\"\n type=\"number\"\n value={lengthInput}\n onChange={(e) => {\n const value = parseFloat(e.target.value);\n setLengthInput(value);\n setShouldUpdateWidth(true);\n }}\n />\n </div>\n <span>\n <FontAwesomeIcon icon=\"angle-right\" size=\"3x\" />\n </span>\n <div className=\"input-group\">\n <label htmlFor=\"room-name\">Describe your room (ie Bedroom, Living Room)</label>\n <input\n type=\"text\"\n id=\"room-name\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n </div>\n </div>\n </React.Fragment>\n );\n}\n\nexport default EditRoomUpload;\n", "import React, { useEffect, useMemo, useState } from 'react';\n\nimport activeEditor from 'domains/active_editor';\n\nimport crops from 'domains/crops';\nimport session from 'domains/session';\nimport dimensions from 'domains/stage_dimensions';\nimport rooms from 'domains/wall_preview_rooms';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { renderModal } from 'utils/modal_util';\n\nimport Button from 'components/shared/Button';\nimport ShareWallPreviewModal from './ShareWallPreviewModal';\n\nfunction WallPreviewTools() {\n const dispatch = useAppDispatch();\n const isLoggedIn = useAppSelector(session.selectors.isLoggedIn);\n const wallPreviewEnabled = useAppSelector(dimensions.selectors.wallPreviewActive);\n const activeCatalog = useAppSelector(activeEditor.selectors.catalog);\n const activeSubcatalog = useAppSelector(activeEditor.selectors.subcatalog);\n const activeOptions = useAppSelector(activeEditor.selectors.selectedOptions);\n const cropIds = useAppSelector(crops.selectors.selectIds);\n const potentialCropIds = useAppSelector(crops.selectors.potentialCropIds);\n\n const [showShareDialog, setShowShareDialog] = useState(false);\n\n const hasEmptyNodes = useMemo(\n () => cropIds.length !== potentialCropIds.length,\n [cropIds, potentialCropIds]\n );\n\n useEffect(() => {\n if (activeSubcatalog && !activeSubcatalog.wall_display) {\n dispatch(rooms.actions.unsetWhichWallPreview());\n }\n }, [dispatch, activeSubcatalog]);\n\n // This is extremely specific and we need to fix the underlying issue, but to get to release\n // we are targeting these option ids to hide the mask node since it is sized weird on horizontal\n // epic prints with bounds > 0\n // see https://jira.discdrive.bayphoto.com/projects/WWD/issues/WWD-14\n function epicPrintsHack(appStageEl: HTMLElement) {\n const epicPrintsHackClass = 'epic-prints-hack';\n\n if (activeCatalog?.name === 'Epic Prints') {\n appStageEl.classList.add('epic-prints');\n const options = activeOptions.map((option) => option.name);\n\n const noHangerOrInsetSelected = (option: string) => {\n return (\n option.toLowerCase().indexOf('no hanger') !== -1 ||\n option.toLowerCase().indexOf('inset') !== -1\n );\n };\n\n if (options.some(noHangerOrInsetSelected)) {\n appStageEl.classList.add(epicPrintsHackClass);\n } else {\n appStageEl.classList.remove(epicPrintsHackClass);\n }\n }\n }\n\n useEffect(() => {\n const appStageEl = document.getElementById('app_stage');\n\n if (appStageEl) {\n if (wallPreviewEnabled) {\n epicPrintsHack(appStageEl);\n } else {\n appStageEl.classList.remove('epic-prints');\n appStageEl.classList.remove('epic-prints-hack');\n }\n }\n });\n\n function handleExitPreview() {\n dispatch(rooms.actions.unsetWhichWallPreview());\n }\n\n function handleSharePreview() {\n if (!hasEmptyNodes) {\n setShowShareDialog(true);\n }\n }\n\n return (\n <React.Fragment>\n <Button\n type=\"icon\"\n icon=\"wallPreviewShare\"\n size=\"xl\"\n a11yText=\"Save/Share Preview\"\n onClick={handleSharePreview}\n disabled={!isLoggedIn || hasEmptyNodes || !wallPreviewEnabled}\n tooltipProps={{ placement: 'left' }}\n />\n <Button\n type=\"icon\"\n icon=\"wallPreviewClose\"\n size=\"xl\"\n a11yText=\"Exit Wall Preview\"\n onClick={handleExitPreview}\n disabled={!wallPreviewEnabled}\n tooltipProps={{ placement: 'left' }}\n />\n\n {showShareDialog &&\n renderModal(<ShareWallPreviewModal onClose={() => setShowShareDialog(false)} />)}\n </React.Fragment>\n );\n}\n\nexport default WallPreviewTools;\n", "import React, { useEffect, useState } from 'react';\n\nimport Link from 'components/shared/Link';\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\n\nimport Spinner from 'components/shared/Spinner';\n\nimport wallPreviewModule from 'domains/wall_previews';\nimport rooms from 'domains/wall_preview_rooms';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\ntype ShareWallPreviewModalProps = {\n onClose: () => void;\n};\n\nfunction ShareWallPreviewModal(props: ShareWallPreviewModalProps) {\n const { onClose } = props;\n\n const dispatch = useAppDispatch();\n\n const whichWallPreview = useAppSelector(rooms.selectors.whichWallPreview);\n\n const latestPreview = useAppSelector(wallPreviewModule.selectors.latest);\n const previewStatus = useAppSelector(wallPreviewModule.selectors.status);\n\n const [previewName, setPreviewName] = useState('');\n const [sharePreviewLink, setSharePreviewLink] = useState('');\n const [isGeneratingPreviewLink, setIsGeneratingPreviewLink] = useState(false);\n const [sharePreviewError, setSharePreviewError] = useState(false);\n\n if (!whichWallPreview) {\n return null;\n }\n\n const savePreview = () => {\n dispatch(wallPreviewModule.actions.saveWallPreview.pending(previewName));\n setIsGeneratingPreviewLink(true);\n };\n\n // Set values when we have successful preview generated\n useEffect(() => {\n if (isGeneratingPreviewLink && latestPreview && latestPreview.url) {\n setSharePreviewLink(latestPreview.url);\n setPreviewName('');\n setIsGeneratingPreviewLink(false);\n }\n }, [latestPreview, isGeneratingPreviewLink]);\n\n // Handle an error while generating preview\n useEffect(() => {\n if (isGeneratingPreviewLink && previewStatus === 'error') {\n setSharePreviewLink('');\n setPreviewName('');\n setSharePreviewError(true);\n setIsGeneratingPreviewLink(false);\n }\n }, [previewStatus, isGeneratingPreviewLink]);\n\n const disableButtons = isGeneratingPreviewLink || !!sharePreviewLink;\n\n const primaryFooterGroup = (\n <React.Fragment>\n <Button type=\"confirm\" onClick={() => savePreview()} disabled={disableButtons}>\n Save\n </Button>\n <Button type=\"cancel\" onClick={onClose} disabled={disableButtons}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n return (\n <Modal\n title=\"Share Preview\"\n labelledBy=\"generate-share-preview-modal\"\n modalClass={['share-preview-modal']}\n lastFocusedElementId=\"wall-preview-menu-trigger\"\n onClose={onClose}\n primaryFooterGroup={primaryFooterGroup}\n >\n <React.Fragment>\n {!sharePreviewLink && !isGeneratingPreviewLink && !sharePreviewError && (\n <div className=\"share-preview-info\">\n <h2>Share an image of this wall preview with others</h2>\n <form onSubmit={() => savePreview()}>\n <label htmlFor=\"share-preview-name\">Set a name for this preview</label>\n <input\n type=\"text\"\n name=\"share-preview-name\"\n id=\"share-preview-name\"\n value={previewName}\n onChange={(e) => setPreviewName(e.target.value)}\n />\n </form>\n </div>\n )}\n </React.Fragment>\n\n <React.Fragment>\n {!sharePreviewLink && isGeneratingPreviewLink && (\n <div className=\"share-preview-info\">\n <h2>Generating preview...</h2>\n <Spinner color=\"#252525\" size=\"40\" />\n </div>\n )}\n </React.Fragment>\n\n <React.Fragment>\n {sharePreviewError && (\n <div className=\"share-preview-info\">\n <h2>There was a problem generating your preview</h2>\n <p>\n <Link href=\"/wall_previews\" target=\"_blank\" rel=\"noopener noreferrer\">\n View a list of all your previews (opens in new tab)\n </Link>\n or try saving it again.\n </p>\n </div>\n )}\n </React.Fragment>\n\n <React.Fragment>\n {sharePreviewLink && (\n <div className=\"share-preview-info\">\n <h2>Your preview is ready!</h2>\n <img src={sharePreviewLink} alt=\"example of your wall preview\" />\n <p>\n Public link to your wall preview: \n <Link\n href={sharePreviewLink}\n id=\"share-preview-link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {sharePreviewLink}\n </Link>\n </p>\n <p>\n <Link href=\"/wall_previews\" target=\"_blank\" rel=\"noopener noreferrer\">\n View a list of all your previews (opens in new tab)\n </Link>\n </p>\n </div>\n )}\n </React.Fragment>\n </Modal>\n );\n}\n\nexport default ShareWallPreviewModal;\n", "import actions from './wall_previews.actions';\nimport slice from './wall_previews.slice';\nimport selectors from './wall_previews.selectors';\n\nexport * from './wall_previews.types';\n\nconst module = {\n actions: { ...actions, ...slice.actions },\n selectors,\n};\n\nexport { default as slice } from './wall_previews.slice';\n\nexport default module;\n", "import { createAction } from '@reduxjs/toolkit';\n\nimport { createAPIActions } from 'utils/common';\n\nimport type { WallPreview } from './wall_previews.types';\n\nconst getAll = createAPIActions<void, WallPreview[]>('wallPreviews', 'getAll');\n\nconst saveWallPreview = {\n pending: createAction<string>('wallPreviews/saveWallPreview/pending'),\n fulfilled: createAction<WallPreview>('wallPreviews/saveWallPreview/fulfilled'),\n rejected: createAction('wallPreviews/saveWallPreview/rejected'),\n};\n\nconst destroy = createAPIActions<number, number>('wallPreviews', 'destroy');\n\nexport default {\n getAll,\n saveWallPreview,\n destroy,\n};\n", "import { createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nimport wallPreviewsAdapter from './wall_previews.adapter';\nimport actions from './wall_previews.actions';\n\nimport type { WallPreview } from '.';\nimport type { LoadingStatus } from 'types/common_types';\n\ntype WallPreviewsInitialState = {\n status: LoadingStatus;\n};\n\nconst initialState: WallPreviewsInitialState = {\n status: 'idle',\n};\n\nconst wallPreviews = createSlice({\n name: 'wallPreviews',\n initialState: wallPreviewsAdapter.getInitialState(initialState),\n reducers: {\n updateWallPreview(state, { payload }: PayloadAction<WallPreview>) {\n const update = wallPreviewsAdapter.updateOne(state, { id: payload.id, changes: payload });\n\n return update;\n },\n },\n extraReducers(builder) {\n builder\n .addCase(actions.saveWallPreview.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.saveWallPreview.fulfilled, (state, { payload }) => {\n const update = wallPreviewsAdapter.addOne(state, payload);\n\n update.status = 'idle';\n return update;\n })\n .addCase(actions.saveWallPreview.rejected, (state) => {\n return { ...state, status: 'error' };\n })\n .addCase(actions.getAll.pending, (state) => {\n return { ...state, status: 'loading' };\n })\n .addCase(actions.getAll.fulfilled, (state, { payload }) => {\n const update = wallPreviewsAdapter.addMany(state, payload);\n update.status = 'idle';\n return update;\n })\n .addCase(actions.getAll.rejected, (state) => {\n // Handle an error, send more details to sentry, etc\n return { ...state, status: 'error' };\n })\n .addCase(actions.destroy.fulfilled, (state, { payload }) => {\n return wallPreviewsAdapter.removeOne(state, payload);\n });\n },\n});\n\nexport default wallPreviews;\n", "import { createEntityAdapter } from '@reduxjs/toolkit';\nimport type { WallPreview } from './wall_previews.types';\n\nconst wallPreviewsAdapter = createEntityAdapter<WallPreview>();\n\nexport default wallPreviewsAdapter;\n", "import { combineReducers, compose, createSelector } from '@reduxjs/toolkit';\n\nimport wallPreviewsAdapter from './wall_previews.adapter';\nimport slice from './wall_previews.slice';\n\nimport { selectCartPhotos } from 'selectors/cart_photos';\nimport { selectDefaultPPI } from 'selectors/ppi';\n\nimport canvases from 'domains/canvases';\nimport products from 'domains/products';\nimport dimensions from 'domains/stage_dimensions';\n\nimport { notNull, validCustomSize } from 'utils/type_guards';\n\nimport type { RootState } from 'store/wos_store';\nimport type { Point } from 'types/common_types';\n\n/** Represents the slice as it exists in the final store's reducer */\nconst combined = combineReducers({ [slice.name]: slice.reducer });\ntype GlobalState = ReturnType<typeof combined>;\n\n/** Get the local state for the current domain */\nconst localState = (state: GlobalState) => state[slice.name];\ntype LocalState = ReturnType<typeof localState>;\n\nconst selectWallPreviewStatus = (state: LocalState) => state.status;\nconst selectLatestWallPreview = (state: LocalState) => {\n const latestId = state.ids[state.ids.length - 1];\n return state.entities[latestId];\n};\n\n/**\n * For saved wall preview rendering, we currently need to send the pixel\n * position of a canvas within the wall preview, accounting for the possibility\n * of margins between the stage area and the image background.\n *\n * We are returning these in an object keyed by the canvas ID so when mapping\n * the canvases array when saving a wall preview, we can just pluck the right one.\n */\nconst selectAdjustedCanvasPositionsForWallPreview = (state: RootState) => {\n const screenDimensions = dimensions.selectors.screenDimensions(state);\n const wallPreviewDimensions = dimensions.selectors.wallPreviewDimensions(state);\n const allCanvases = canvases.selectors.selectAll(state);\n const arrangementPosition = canvases.selectors.arrangementPosition(state);\n const ppi = selectDefaultPPI(state);\n\n if (!wallPreviewDimensions) return {};\n\n const xMarginAdjust = screenDimensions.width / 2 - wallPreviewDimensions.width / 2;\n const yMarginAdjust = screenDimensions.height / 2 - wallPreviewDimensions.height / 2;\n\n const adjustedPositions: Record<string, Point> = {};\n\n allCanvases.forEach((canvas) => {\n adjustedPositions[canvas.id] = {\n x: canvas.position.x * ppi + arrangementPosition.x * ppi - xMarginAdjust,\n y: canvas.position.y * ppi + arrangementPosition.y * ppi - yMarginAdjust,\n };\n });\n\n return adjustedPositions;\n};\n\nconst selectCanvasesForSaveWallPreview = createSelector(\n [\n canvases.selectors.selectAll,\n selectAdjustedCanvasPositionsForWallPreview,\n products.selectors.selectEntities,\n selectCartPhotos,\n selectDefaultPPI,\n ],\n (allCanvases, canvasPositionsById, productsById, cartPhotos, ppi) => {\n return allCanvases\n .map((canvas) => {\n if (!canvas.product || !canvas.options) return null;\n\n const canvasProduct = productsById[canvas.product];\n if (!canvasProduct) return null;\n\n const productSize = products.utils.calculateProductSize(canvasProduct, canvas);\n const customSize =\n products.utils.isCustomSizeProduct(canvasProduct) && validCustomSize(canvas)\n ? { height: canvas.height, width: canvas.width }\n : null;\n\n const canvasId = canvas.id;\n const canvasPosition = canvasPositionsById[canvasId];\n if (!canvasPosition) return null;\n\n const photos = cartPhotos\n .filter((photo) => photo.canvasId === canvasId)\n .map((photo) => photo.cartCrop);\n\n return {\n crop_data: {\n canvasDegreesRotated: canvas.rotation,\n borderColor: canvas.borderColor,\n photos,\n },\n option_ids: Object.values(canvas.options).filter(notNull),\n custom_size: customSize,\n product_id: canvasProduct.id,\n template_id: canvas.product,\n product_dimensions: { width: productSize.width * ppi, height: productSize.height * ppi },\n position: canvasPosition,\n };\n })\n .filter(notNull);\n }\n);\n\nexport default {\n ...wallPreviewsAdapter.getSelectors(localState),\n status: compose(selectWallPreviewStatus, localState),\n latest: compose(selectLatestWallPreview, localState),\n forSave: selectCanvasesForSaveWallPreview,\n};\n", "import type { Dimension, Point } from 'types/common_types';\nimport type { CartPhoto } from 'types/photo_types';\n\nexport type WallPreview = {\n id: number;\n customer_id: string;\n name: string;\n created_at: string;\n updated_at: string;\n url?: string;\n};\n\nexport type SaveWallPreviewPOSTData = {\n name: string;\n wall_preview: {\n is_user_background: boolean;\n background_image: string;\n background_dimensions: Dimension;\n products: WallPreviewCanvas[];\n };\n};\n\nexport type WallPreviewCanvas = {\n crop_data: {\n canvasDegreesRotated: number;\n borderColor?: string;\n photos: CartPhoto[];\n };\n option_ids: (string | number)[];\n custom_size: Dimension | null;\n product_id: number;\n template_id: number;\n product_dimensions: Dimension;\n position: Point;\n};\n", "import React, { useMemo, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { renderModal } from 'utils/modal_util';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { formatDateModified } from 'utils/format_date';\nimport slug from 'utils/slug';\n\nimport wallPreviewModule from 'domains/wall_previews';\n\nimport Modal from 'components/shared/Modal';\nimport Alert from 'components/shared/Alert';\nimport NavigationTile from 'components/shared/NavigationTile';\n\nimport type { WallPreview } from 'domains/wall_previews';\nimport type { NavigationTileMenuItem } from 'components/shared/NavigationTile/NavigationTile';\n\ntype ManageWallPreviewsModalProps = {\n onClose: () => void;\n};\n\nfunction ManageWallPreviewsModal({ onClose }: ManageWallPreviewsModalProps) {\n const dispatch = useAppDispatch();\n const wallPreviews = useAppSelector(wallPreviewModule.selectors.selectAll);\n\n const [pendingWallPreview, setPendingWallPreview] = useState<WallPreview | null>(null);\n\n function handleSelectWallPreview(wp: WallPreview) {\n window.open(wp.url, '_blank');\n }\n\n function handleDeleteWallPreview() {\n if (!pendingWallPreview) return;\n\n dispatch(wallPreviewModule.actions.destroy.pending(pendingWallPreview.id));\n setPendingWallPreview(null);\n }\n\n const pendingWallPreviewMenuId = useMemo(() => {\n if (!pendingWallPreview) return '';\n\n return `${slug(pendingWallPreview.name)}-${pendingWallPreview.id}-navigation-tile`;\n }, [pendingWallPreview]);\n\n const previewTiles = useMemo(\n () =>\n wallPreviews.map((wp) => {\n const menuItems: NavigationTileMenuItem[] = [\n {\n label: (\n <span>\n Delete <span className=\"screen-reader-text\">{wp.name}</span>\n </span>\n ),\n icon: <FontAwesomeIcon icon=\"trash-alt\" />,\n click: () => {\n setPendingWallPreview(wp);\n },\n },\n ];\n\n return (\n <li key={wp.id}>\n <NavigationTile\n image={wp.url}\n details={`Saved: ${formatDateModified(wp.created_at)}`}\n item={wp}\n menuItems={menuItems}\n name={wp.name}\n clickHandler={() => handleSelectWallPreview(wp)}\n />\n </li>\n );\n }),\n [wallPreviews]\n );\n\n return (\n <Modal\n title=\"Saved Wall Previews\"\n labelledBy=\"saved-wall-previews\"\n lastFocusedElementId=\"content-menu-trigger-saved-wall-previews\"\n onClose={onClose}\n >\n {!!pendingWallPreview &&\n renderModal(\n <Alert\n onClose={() => setPendingWallPreview(null)}\n labelledBy=\"confirm-delete-preview-dialog\"\n lastFocusedElementId={pendingWallPreviewMenuId}\n title=\"Confirm Delete\"\n message=\"Are you sure you want to delete this saved wall preview?\"\n onCancel={() => setPendingWallPreview(null)}\n onContinue={() => handleDeleteWallPreview()}\n />\n )}\n <ul className=\"modal-list-items\">{previewTiles}</ul>\n </Modal>\n );\n}\n\nexport default ManageWallPreviewsModal;\n", "import React, { useMemo, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Alert from 'components/shared/Alert';\nimport Modal from 'components/shared/Modal';\nimport NavigationTile from 'components/shared/NavigationTile';\n\nimport { renderModal } from 'utils/modal_util';\nimport { formatDateModified } from 'utils/format_date';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport slug from 'utils/slug';\n\nimport savedArrangements from 'domains/saved_arrangements';\n\nimport { prepareRestoreArrangement } from 'thunks/arrangement_thunks';\n\nimport EditArrangementModal from './EditArrangementModal';\n\nimport type { SavedArrangement } from 'domains/saved_arrangements';\n\ntype ManageArrangementsModalProps = {\n onClose: () => void;\n};\n\nfunction ManageArrangementsModal({ onClose }: ManageArrangementsModalProps) {\n const dispatch = useAppDispatch();\n const arrangements = useAppSelector(savedArrangements.selectors.selectAll);\n\n const [pendingArrangement, setPendingArrangement] = useState<SavedArrangement | null>(null);\n\n const [showConfirmDeleteDialog, setShowConfirmDeleteDialog] = useState(false);\n\n const [showEditDialog, setShowEditDialog] = useState(false);\n\n const pendingArrangementMenuId = useMemo(() => {\n if (!pendingArrangement) return '';\n\n return `${slug(pendingArrangement.name)}-${pendingArrangement.id}-navigation-tile`;\n }, [pendingArrangement]);\n\n function prepareDeleteArrangement(arrangement: SavedArrangement) {\n setPendingArrangement(arrangement);\n setShowConfirmDeleteDialog(true);\n }\n\n function prepareEditArrangement(arrangement: SavedArrangement) {\n dispatch(prepareRestoreArrangement(arrangement));\n setPendingArrangement(arrangement);\n setShowEditDialog(true);\n }\n\n function handleSelectArrangement(arrangement: SavedArrangement) {\n dispatch(prepareRestoreArrangement(arrangement));\n }\n\n function confirmDeleteArrangement() {\n if (!pendingArrangement) return;\n\n dispatch(savedArrangements.actions.destroy.pending(pendingArrangement.id));\n setPendingArrangement(null);\n setShowConfirmDeleteDialog(false);\n }\n\n function cancelEditArrangement() {\n setPendingArrangement(null);\n setShowEditDialog(false);\n }\n\n function cancelDeleteArrangement() {\n setPendingArrangement(null);\n setShowConfirmDeleteDialog(false);\n }\n\n const arrangementsTiles = arrangements.map((arrangement) => {\n const { preview_url: previewURL, name, id, updated_at: updated, canvases } = arrangement;\n\n const menuItems = [\n {\n label: 'Edit',\n icon: <FontAwesomeIcon icon=\"edit\" />,\n click: () => prepareEditArrangement(arrangement),\n },\n {\n label: (\n <span>\n Delete <span className=\"screen-reader-text\">{name}</span>\n </span>\n ),\n icon: <FontAwesomeIcon icon=\"trash-alt\" />,\n click: () => prepareDeleteArrangement(arrangement),\n },\n ];\n\n return (\n <li key={arrangement.id}>\n <NavigationTile\n image={previewURL}\n imagePending={previewURL === ''}\n details={`${canvases.length} item${canvases.length > 1 ? 's' : ''}`}\n secondaryDetails={`Updated: ${formatDateModified(updated)}`}\n item={arrangement}\n menuItems={menuItems}\n name={name}\n clickHandler={() => handleSelectArrangement(arrangement)}\n />\n </li>\n );\n });\n\n return (\n <React.Fragment>\n <Modal\n title=\"Manage Arrangements\"\n labelledBy=\"manage-arrangements-modal\"\n modalClass={['manage-arrangements-modal']}\n lastFocusedElementId=\"content-menu-trigger-arrangements\"\n onClose={onClose}\n >\n <ul className=\"modal-list-items\">{arrangementsTiles}</ul>\n </Modal>\n\n {showConfirmDeleteDialog &&\n renderModal(\n <Alert\n labelledBy=\"confirm-delete-arrangement-dialog\"\n lastFocusedElementId={pendingArrangementMenuId}\n title=\"Confirm Delete\"\n message=\"Are you sure you want to delete this saved arrangement?\"\n onClose={cancelDeleteArrangement}\n onCancel={cancelDeleteArrangement}\n onContinue={confirmDeleteArrangement}\n />\n )}\n\n {showEditDialog &&\n pendingArrangement &&\n renderModal(\n <EditArrangementModal onClose={cancelEditArrangement} arrangement={pendingArrangement} />\n )}\n </React.Fragment>\n );\n}\n\nexport default ManageArrangementsModal;\n", "import React, { useState } from 'react';\n\nimport Button from 'components/shared/Button';\nimport Input from 'components/shared/Input';\nimport Modal from 'components/shared/Modal';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport savedArrangements from 'domains/saved_arrangements';\n\nimport { selectArrangementHeight, selectArrangementWidth } from 'selectors/ppi';\nimport { selectCartPhotos } from 'selectors/cart_photos';\n\nimport type { SavedArrangement } from 'domains/saved_arrangements';\n\ntype EditArrangementModalProps = {\n onClose: () => void;\n arrangement?: SavedArrangement;\n};\n\nfunction EditArrangementModal({ onClose, arrangement }: EditArrangementModalProps) {\n const dispatch = useAppDispatch();\n const canvases = useAppSelector(savedArrangements.selectors.forSave);\n const arrangementWidth = useAppSelector(selectArrangementWidth);\n const arrangementHeight = useAppSelector(selectArrangementHeight);\n const cartPhotos = useAppSelector(selectCartPhotos);\n\n // Default to true only if we have:\n // Photos in nodes, an existing arrangement loaded, and that arrangement has existing crops\n const [includePhotos, setIncludePhotos] = useState(\n cartPhotos.length > 0 && !!arrangement && arrangement.crops.length > 0\n );\n\n const [name, setName] = useState(() => {\n return arrangement ? arrangement.name : 'My Custom Arrangement';\n });\n\n function handleSaveArrangement(overwrite?: boolean) {\n const toSave = {\n name,\n canvases,\n height: arrangementHeight,\n width: arrangementWidth,\n crops: includePhotos ? cartPhotos : [],\n };\n\n if (overwrite && arrangement?.id) {\n dispatch(savedArrangements.actions.update.pending({ ...toSave, id: arrangement.id }));\n } else {\n dispatch(savedArrangements.actions.create.pending(toSave));\n }\n\n onClose();\n }\n\n const primaryFooterGroup = (\n <React.Fragment>\n {arrangement && (\n <Button type=\"outline\" onClick={() => handleSaveArrangement(true)}>\n Overwrite Current Arrangement\n </Button>\n )}\n <Button type=\"confirm\" onClick={() => handleSaveArrangement()}>\n Save{arrangement ? ' as New' : ''}\n </Button>\n <Button type=\"cancel\" onClick={onClose}>\n Cancel\n </Button>\n </React.Fragment>\n );\n return (\n <Modal\n title=\"Save Arrangement\"\n labelledBy=\"save-arrangement-modal\"\n modalClass={['save-arrangement-modal']}\n lastFocusedElementId=\"save-custom-arrangement-button\"\n onClose={onClose}\n primaryFooterGroup={primaryFooterGroup}\n >\n <Input\n id=\"save-arrangement-name\"\n label=\"Name this arrangement\"\n onChange={(value: string) => setName(value)}\n value={name}\n />\n <React.Fragment>\n {cartPhotos.length > 0 && (\n <label className=\"include-photos-input\">\n <input\n type=\"checkbox\"\n id=\"include-crops-checkbox\"\n onChange={() => setIncludePhotos(!includePhotos)}\n checked={includePhotos}\n />\n Include Selected Photos in this Arrangement\n </label>\n )}\n </React.Fragment>\n </Modal>\n );\n}\n\nexport default EditArrangementModal;\n", "import React, { useEffect, useState, useMemo } from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport Button from 'components/shared/Button';\nimport Alert from 'components/shared/Alert';\n\nimport { calculateAutoFit, prepareAddCanvas } from 'thunks/arrangement_thunks';\nimport savedArrangements from 'domains/saved_arrangements';\n\nimport session from 'domains/session';\nimport dimensions from 'domains/stage_dimensions';\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\n\nimport EditArrangementModal from './EditArrangementModal';\n\nfunction CustomArrangementsTools() {\n const dispatch = useAppDispatch();\n const activeCanvasId = useAppSelector(activeEditor.selectors.canvasId);\n const canvasIds = useAppSelector(canvases.selectors.selectIds);\n const configuredArrangements = useAppSelector(savedArrangements.selectors.forSave);\n const activeSubcatalog = useAppSelector(activeEditor.selectors.subcatalog);\n const activeArrangement = useAppSelector(savedArrangements.selectors.active);\n const isLoggedIn = useAppSelector(session.selectors.isLoggedIn);\n const wallPreviewEnabled = useAppSelector(dimensions.selectors.wallPreviewActive);\n const isCartProduct = useAppSelector(activeEditor.selectors.isCartProduct);\n\n const [shouldPreventDialog, setShouldPreventDialog] = useState(false);\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const [showEditDialog, setShowEditDialog] = useState(false);\n\n const preventDialogLocalStorageKey = 'preventRemoveProductDialog';\n\n // Has the user requested we don't show the confirm dialog\n useEffect(() => {\n const stored = localStorage.getItem(preventDialogLocalStorageKey);\n const should = !(stored === null || stored !== 'true');\n setShouldPreventDialog(should);\n }, []);\n\n function handleAddProduct() {\n dispatch(prepareAddCanvas());\n dispatch(canvases.actions.duplicateActiveCanvas());\n\n if (!wallPreviewEnabled) {\n dispatch(calculateAutoFit());\n }\n }\n\n function handleRemoveProduct() {\n if (activeCanvasId) {\n dispatch(canvases.actions.removeCanvas(activeCanvasId));\n }\n }\n\n function handleRemoveProductClick() {\n if (!shouldPreventDialog) {\n setShowConfirmDialog(true);\n } else {\n handleRemoveProduct();\n }\n }\n\n // Set if user checked the \"don't show again\" checkbox\n function handlePreventDialogChange(checked: boolean) {\n localStorage.setItem(preventDialogLocalStorageKey, checked.toString());\n setShouldPreventDialog(checked);\n }\n\n const shouldShowArrangementButton = useMemo(() => {\n return !isCartProduct && activeSubcatalog && activeSubcatalog.arrangement;\n }, [isCartProduct, activeSubcatalog]);\n\n return (\n <React.Fragment>\n <Button\n type=\"icon\"\n a11yText=\"Add Product\"\n icon=\"arrangementsAdd\"\n onClick={handleAddProduct}\n disabled={!shouldShowArrangementButton}\n size=\"xl\"\n tooltipProps={{\n placement: 'left',\n }}\n />\n <Button\n type=\"icon\"\n id=\"remove-custom-arrangement-product\"\n a11yText=\"Remove Product\"\n icon=\"arrangementsRemove\"\n disabled={canvasIds.length <= 1}\n onClick={handleRemoveProductClick}\n size=\"xl\"\n tooltipProps={{\n placement: 'left',\n }}\n />\n <Button\n type=\"icon\"\n icon=\"arrangementsSave\"\n a11yText=\"Save Custom Arrangement\"\n size=\"xl\"\n id=\"save-custom-arrangement-button\"\n className=\"save-custom-arrangement-button\"\n onClick={() => setShowEditDialog(true)}\n disabled={\n !isLoggedIn || canvasIds.length <= 1 || canvasIds.length !== configuredArrangements.length\n }\n tooltipProps={{\n placement: 'left',\n }}\n />\n\n {showConfirmDialog && (\n <Alert\n title=\"Confirm Remove Product\"\n labelledBy=\"confirm-remove-product-alert\"\n lastFocusedElementId=\"remove-custom-arrangement-product\"\n message=\"Are you sure you want to remove this product?\"\n showPreventDialog\n onPreventDialog={(e) => handlePreventDialogChange(e.target.checked)}\n onContinue={() => {\n setShowConfirmDialog(false);\n handleRemoveProduct();\n }}\n onClose={() => setShowConfirmDialog(false)}\n onCancel={() => setShowConfirmDialog(false)}\n />\n )}\n\n {showEditDialog && (\n <EditArrangementModal\n onClose={() => setShowEditDialog(false)}\n arrangement={activeArrangement}\n />\n )}\n </React.Fragment>\n );\n}\n\nexport default CustomArrangementsTools;\n", "import React, { useCallback, useMemo, useState } from 'react';\nimport { uniqBy } from 'lodash';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport Modal from 'components/shared/Modal';\nimport Button from 'components/shared/Button';\nimport Spinner from 'components/shared/Spinner';\n\nimport savedArrangements from 'domains/saved_arrangements';\n\nimport {\n restoreArrangementAndAutoFit,\n updateUnavailableArrangement,\n} from 'thunks/arrangement_thunks';\n\nimport type { UnavailableArrangementItem } from 'domains/saved_arrangements';\n\ntype UnavailableArrangementModalProps = {\n id: number;\n items: UnavailableArrangementItem[];\n onClose: () => void;\n};\n\ntype DeleteSelection = 'arrangement' | 'discontinued' | 'unavailable' | 'both' | '';\n\nfunction UnavailableArrangementModal(props: UnavailableArrangementModalProps) {\n const { id, items, onClose } = props;\n\n const dispatch = useAppDispatch();\n const arrangement = useAppSelector((state) => savedArrangements.selectors.selectById(state, id));\n\n if (!arrangement) return null;\n\n const unavailableItems = useMemo(\n () => items.filter((item) => item.reason === 'unavailable').map((item) => item.item),\n [items]\n );\n\n const discontinuedItems = useMemo(\n () => items.filter((item) => item.reason === 'discontinued'),\n [items]\n );\n\n const allItemsDiscontinued =\n arrangement && discontinuedItems.length === arrangement.canvases.length;\n const showDiscontinued = !allItemsDiscontinued && discontinuedItems.length > 0;\n const onlyDiscontinued = showDiscontinued && unavailableItems.length === 0;\n const onlyUnavailable = discontinuedItems.length === 0 && unavailableItems.length > 0;\n const showBoth = showDiscontinued && unavailableItems.length > 0;\n const showUnavailable = unavailableItems.length > 0;\n\n const pluralUnavailable = unavailableItems.length > 1;\n\n // Init this value to discontinued if one of the options _must_ be selected\n const [selection, setSelection] = useState<DeleteSelection>(() =>\n showBoth ? 'discontinued' : ''\n );\n const [loading, setLoading] = useState(false);\n\n const disableSelection = useMemo(() => {\n const count = unavailableItems.length + discontinuedItems.length;\n return (\n (selection === 'both' || selection === 'unavailable') &&\n count === arrangement?.canvases.length\n );\n }, [arrangement, discontinuedItems, selection, unavailableItems]);\n\n const handleSelection = useCallback(\n (value: DeleteSelection, e: React.ChangeEvent<HTMLInputElement>) => {\n const { name } = e.target;\n // unavailable selection is a single checkbox, so unset if already set\n if (name === 'selection-check' && selection === value) {\n setSelection('');\n } else {\n setSelection(value);\n }\n },\n [selection]\n );\n\n const handleDeleteSelection = (selected: DeleteSelection) => {\n setLoading(true);\n let ids: string[] = [];\n\n if (selected === 'arrangement') {\n setSelection('arrangement'); // so we can open manage modal in the useeffect\n dispatch(savedArrangements.actions.destroy.pending(id));\n }\n if (selected === 'discontinued' || selected === 'both') {\n const discontinuedIds = discontinuedItems.map((item) => item.item.id);\n ids = ids.concat(discontinuedIds);\n }\n\n if (selected === 'unavailable' || selected === 'both') {\n const unavailableIds = unavailableItems.map((item) => item.id);\n ids = ids.concat(unavailableIds);\n }\n\n if (ids.length > 0) {\n dispatch(updateUnavailableArrangement(ids, arrangement));\n } else {\n dispatch(restoreArrangementAndAutoFit(arrangement));\n }\n\n onClose();\n };\n\n const primaryFooterGroup = (\n <React.Fragment>\n {onlyDiscontinued && (\n <Button type=\"outline\" onClick={() => handleDeleteSelection('discontinued')}>\n Delete Discontinued Items\n </Button>\n )}\n {(onlyUnavailable || showBoth) && (\n <Button\n disabled={disableSelection}\n type=\"outline\"\n onClick={() => handleDeleteSelection(selection)}\n >\n Continue\n </Button>\n )}\n <Button type=\"cancel\" onClick={onClose}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n const secondaryFooterGroup = (\n <Button\n className=\"delete-arrangement\"\n type=\"confirm\"\n onClick={() => handleDeleteSelection('arrangement')}\n >\n Delete Entire Arrangement\n </Button>\n );\n\n const arrangementSummary = (\n <p>\n You are trying to restore the arrangement named <strong>{arrangement.name}</strong>, which has{' '}\n <strong>{arrangement.canvases.length}</strong> products.\n </p>\n );\n\n const allDiscontinuedMessage = (\n <p>\n All the items in this arrangement are permanently discontinued. Confirm if you want to delete\n this arrangement.\n </p>\n );\n\n const discontinuedMessage = (\n <p>\n There are items in this arrangement that have been permanently discontinued. You can choose to\n remove just the affected products, or delete this entire arrangement.\n </p>\n );\n\n const unavailableMessage = (\n <p>\n There {pluralUnavailable ? 'are' : 'is'} {showBoth ? 'also' : ''}\n {` ${unavailableItems.length} `}\n {pluralUnavailable ? ' selections' : ' selection'} in this arrangement that{' '}\n {pluralUnavailable ? 'are' : 'is'} temporarily unavailable. You can choose to remove{' '}\n {pluralUnavailable ? 'these items' : 'this item'}\n {showBoth ? ' as well' : ''}, or load the arrangement and make different selections.\n </p>\n );\n\n const deleteAllMessage = <p>This selection will delete all items in this arrangement.</p>;\n\n const unavailableItemsList = useMemo(() => {\n // Likely that an arrangement could have multiple items with the same option\n // selected, so just show the name once\n const itemsList = uniqBy(unavailableItems, 'name').map((item) => (\n <li key={`${item.id}-${item.name}`}>\n {item.parentName} - {item.name}\n </li>\n ));\n\n return (\n <section>\n <h2>Unavailable Selections</h2>\n <ul>{itemsList}</ul>\n </section>\n );\n }, [unavailableItems]);\n\n const selectionOptions = useMemo(() => {\n let inputs;\n if (showBoth) {\n inputs = (\n <React.Fragment>\n <label>\n <input\n type=\"radio\"\n name=\"selection-radio\"\n checked={selection === 'discontinued'}\n onChange={(e) => handleSelection('discontinued', e)}\n />\n Delete only discontinued\n </label>\n <label>\n <input\n type=\"radio\"\n name=\"selection-radio\"\n checked={selection === 'both'}\n onChange={(e) => handleSelection('both', e)}\n />\n Delete discontinued and unavailable\n </label>\n </React.Fragment>\n );\n } else {\n inputs = (\n <label>\n <input\n type=\"checkbox\"\n name=\"selection-check\"\n checked={selection === 'unavailable'}\n onChange={(e) => handleSelection('unavailable', e)}\n />\n Delete items with unavailable selections\n </label>\n );\n }\n\n return (\n <fieldset>\n <legend className=\"screen-reader-text\">Select action</legend>\n {inputs}\n </fieldset>\n );\n }, [handleSelection, selection, showBoth]);\n\n return (\n <Modal\n title=\"Unavailable Items in Arrangement\"\n labelledBy=\"unavailable-arrangement-modal\"\n lastFocusedElementId={`special-content-menu-item-${id}`}\n modalClass={['unavailable-arrangements-modal']}\n onClose={onClose}\n primaryFooterGroup={primaryFooterGroup}\n secondaryFooterGroup={secondaryFooterGroup}\n >\n <React.Fragment>\n {loading && <Spinner size=\"50\" color=\"#252525\" />}\n {!loading && (\n <div>\n {!allItemsDiscontinued && arrangementSummary}\n {allItemsDiscontinued && allDiscontinuedMessage}\n {showDiscontinued && discontinuedMessage}\n {showUnavailable && unavailableMessage}\n {showUnavailable && unavailableItemsList}\n {showUnavailable && selectionOptions}\n {disableSelection && deleteAllMessage}\n </div>\n )}\n </React.Fragment>\n </Modal>\n );\n}\n\nexport default UnavailableArrangementModal;\n", "import React from 'react';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport Menu from 'components/shared/Menu';\nimport Switch from 'components/shared/Switch';\n\nimport ui from 'domains/ui';\n\nfunction SettingsMenu() {\n const dispatch = useAppDispatch();\n const hideBranding = useAppSelector(ui.selectors.hideBranding);\n const showFilenames = useAppSelector(ui.selectors.showFilenames);\n const theme = useAppSelector(ui.selectors.theme);\n\n function handleToggleBranding() {\n dispatch(ui.actions.toggleHideBranding());\n }\n\n function handleToggleFilenames() {\n dispatch(ui.actions.toggleShowFilenames());\n }\n\n function handleToggleTheme() {\n dispatch(ui.actions.toggleTheme());\n }\n\n const menuItems = [\n <div className=\"settings-item\">\n <div className=\"settings-title\">Prices & Branding</div>\n <Switch\n active={!hideBranding}\n a11yLabel=\"prices and branding\"\n onToggle={handleToggleBranding}\n />\n </div>,\n <div className=\"settings-item\">\n <div className=\"settings-title\">Filenames</div>\n <Switch a11yLabel=\"filenames\" active={showFilenames} onToggle={handleToggleFilenames} />\n </div>,\n <div className=\"settings-item\">\n <div className=\"settings-title\">Light Theme</div>\n <Switch a11yLabel=\"theme\" active={theme === 'light'} onToggle={handleToggleTheme} />\n </div>,\n ];\n\n return (\n <Menu\n menuItems={menuItems}\n className=\"settings-menu\"\n triggerId=\"global-settings\"\n triggerIcon=\"cog\"\n triggerText=\"Open Settings Menu\"\n iconOnlyTrigger\n appearance=\"light\"\n direction=\"up\"\n position=\"left\"\n />\n );\n}\n\nexport default SettingsMenu;\n", "import Switch from './Switch';\n\nexport default Switch;\n", "import React from 'react';\n\nexport type SwitchProps = {\n a11yLabel: string;\n active: boolean;\n onToggle: React.ChangeEventHandler;\n className?: string;\n activeLabel?: string;\n inactiveLabel?: string;\n};\n\nfunction Switch({\n className = '',\n activeLabel,\n inactiveLabel,\n a11yLabel,\n active,\n onToggle,\n}: SwitchProps) {\n return (\n <div className={`switch ${className}`}>\n {inactiveLabel && (\n <div className=\"switch__label switch__label--inactiveLabel\">{inactiveLabel}</div>\n )}\n <label className={`switch__toggle ${active ? 'switch__toggle--on' : ''}`}>\n <span className=\"screen-reader-text\">Toggle {a11yLabel}</span>\n <input\n type=\"checkbox\"\n className=\"screen-reader-text\"\n onChange={onToggle}\n checked={active}\n />\n </label>\n {activeLabel && <div className=\"switch__label switch__label--activeLabel\">{activeLabel}</div>}\n </div>\n );\n}\n\nexport default Switch;\n", "import ImageCollectionsController from './ImageCollectionsController';\n\nexport default ImageCollectionsController;\n", "import React, { useMemo, useState } from 'react';\n\n// import SignInSSO from 'components/shared/SignInSSO';\nimport Link from 'components/shared/Link';\n\nimport session from 'domains/session';\nimport photoModule from 'domains/photos';\n\nimport { renderModal } from 'utils/modal_util';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport CollectionsMenu from './CollectionsMenu';\nimport SaveUncollectedModal from './SaveUncollectedModal';\nimport SingleCollectionManager from './SingleCollectionManager/SingleCollectionManager';\nimport { SelectCollectionModal } from './AllCollectionsManager/SelectCollectionModal';\n\nimport type { CollectionName } from 'domains/photos';\n\nfunction ImageCollectionsController() {\n const dispatch = useAppDispatch();\n const isLoggedIn = useAppSelector(session.selectors.isLoggedIn);\n const collections = useAppSelector(photoModule.selectors.allNamedCollections);\n const uncollected = useAppSelector(photoModule.selectors.uncollectedCollection);\n // const displayCollection = useAppSelector(selectDisplayCollectionName);\n const activeCollection = useAppSelector(photoModule.selectors.activeCollection);\n\n const [showUncollectedDialog, setShowUncollectedDialog] = useState(false);\n const [showCollectionsManagerDialog, setShowCollectionsManagerDialog] = useState(false);\n const [displayCollection, setDisplayCollection] = useState<CollectionName>('');\n\n const showSingleCollectionManager = useMemo(\n () => displayCollection || displayCollection === null, // aka \"Uncollected\"\n [displayCollection]\n );\n\n function handleSaveUncollected() {\n setShowUncollectedDialog(true);\n }\n\n function handleCancelSaveUncollected() {\n setShowUncollectedDialog(false);\n }\n\n function handleSelectCollection(id: CollectionName) {\n dispatch(photoModule.actions.setActiveCollection(id));\n }\n\n function handleShowCollectionsManager() {\n setShowCollectionsManagerDialog(true);\n }\n\n function handleClose(closeAll?: boolean) {\n setDisplayCollection('');\n\n if (!!closeAll) {\n setShowCollectionsManagerDialog(false);\n }\n }\n\n return (\n <React.Fragment>\n <div className=\"collections_menu_container\">\n {!isLoggedIn ? (\n <Link\n type=\"button\"\n variant=\"cornered\"\n appearance=\"themed\"\n className=\"menu-trigger\"\n href={`/sessions/new?redirect=${encodeURIComponent(\n window.location.href.replace(window.location.origin, '')\n )}`}\n >\n Sign in to create Image Collection\n </Link>\n ) : (\n <CollectionsMenu\n onSelectCollection={handleSelectCollection}\n onSaveUncollected={handleSaveUncollected}\n onShowCollectionsManager={handleShowCollectionsManager}\n activeCollection={activeCollection}\n collections={collections}\n uncollected={uncollected}\n />\n )}\n </div>\n\n {showUncollectedDialog &&\n renderModal(\n <SaveUncollectedModal\n onCancel={handleCancelSaveUncollected}\n lastFocusedElementId=\"collections-menu-trigger\"\n />\n )}\n\n {showCollectionsManagerDialog &&\n showSingleCollectionManager &&\n renderModal(\n <SingleCollectionManager onClose={handleClose} displayCollection={displayCollection} />\n )}\n\n {showCollectionsManagerDialog &&\n !showSingleCollectionManager &&\n renderModal(\n <SelectCollectionModal\n setDisplayCollection={setDisplayCollection}\n onClose={() => handleClose(true)}\n />\n )}\n </React.Fragment>\n );\n}\n\nexport default ImageCollectionsController;\n", "import React, { useMemo } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { findAncestor } from 'utils/dom_utils';\nimport { handleKeyEvents } from 'utils/handlers';\n\nimport Menu from 'components/shared/Menu';\n\nimport type { CollectionName, NamedCollection, UncollectedCollection } from 'domains/photos';\n\nexport type CollectionsMenuProps = {\n onSaveUncollected: () => void;\n onSelectCollection: (id: string | null) => void;\n onShowCollectionsManager: () => void;\n collections: NamedCollection[];\n uncollected: UncollectedCollection;\n activeCollection: CollectionName;\n};\n\nfunction CollectionsMenu({\n onSaveUncollected,\n onSelectCollection,\n onShowCollectionsManager,\n collections,\n uncollected,\n activeCollection,\n}: CollectionsMenuProps) {\n const collectionsMenuSelectNext = (current: EventTarget & HTMLButtonElement) => {\n const menu = findAncestor(current, 'ul');\n if (!menu) return;\n\n const menuLinks = menu.querySelectorAll<HTMLButtonElement>('.collections_menu_link');\n const currentIndex = Array.from(menuLinks).findIndex((m) => m === current);\n const newIndex = currentIndex + 1;\n if (newIndex >= menuLinks.length) {\n const trigger = document.querySelector<HTMLButtonElement>('#collections-menu-trigger');\n if (trigger) {\n trigger.focus();\n }\n } else {\n menuLinks[newIndex].focus();\n menuLinks[newIndex].scrollIntoView();\n }\n };\n\n const collectionsMenuSelectPrevious = (current: EventTarget & HTMLButtonElement) => {\n const menu = findAncestor(current, 'ul');\n if (!menu) return;\n\n const menuLinks = menu.querySelectorAll<HTMLButtonElement>('.collections_menu_link');\n const currentIndex = Array.from(menuLinks).findIndex((m) => m === current);\n const newIndex = currentIndex - 1 <= -1 ? 0 : currentIndex - 1;\n menuLinks[newIndex].focus();\n menuLinks[newIndex].scrollIntoView();\n };\n\n function handleCollectionsMenuNavigate(e: React.KeyboardEvent<HTMLButtonElement>) {\n const { key, currentTarget } = e;\n e.preventDefault();\n const trigger = document.querySelector<HTMLButtonElement>('#collections-menu-trigger');\n\n switch (key) {\n case 'ArrowUp':\n collectionsMenuSelectPrevious(currentTarget);\n break;\n case 'ArrowDown':\n collectionsMenuSelectNext(currentTarget);\n break;\n case 'ArrowRight':\n currentTarget.click();\n if (trigger) {\n trigger.click();\n trigger.focus();\n }\n break;\n default:\n e.preventDefault();\n }\n }\n\n const onlyUncollected = collections.length === 0;\n const noImages = onlyUncollected && uncollected.count === 0;\n\n const menuText = useMemo(() => {\n const collectionText = onlyUncollected\n ? 'Save images as a Collection'\n : activeCollection || 'Uncollected';\n return noImages ? 'Add images to begin' : collectionText;\n }, [activeCollection, noImages, onlyUncollected]);\n\n const collectionsMenuItems = useMemo(() => {\n const menuItems = collections\n .sort((a, b) => (a.name > b.name ? 1 : -1))\n .map((collection) => (\n <button\n key={collection.name}\n className=\"collections_menu_link\"\n role=\"menuitem\"\n data-id={collection.name}\n onClick={() => onSelectCollection(collection.name)}\n onKeyDown={handleKeyEvents({\n open: () => onSelectCollection(collection.name),\n navigate: handleCollectionsMenuNavigate,\n close: () => null,\n })}\n >\n {collection.name}\n <FontAwesomeIcon icon=\"image\" size=\"lg\" />\n <div className=\"count-bubble\">{collection.count}</div>\n </button>\n ));\n\n // Put the uncollected item first in menu\n if (uncollected.count) {\n menuItems.push(\n <button\n className=\"collections_menu_link\"\n role=\"menuitem\"\n onClick={() => onSelectCollection(null)}\n onKeyDown={handleKeyEvents({\n open: () => onSelectCollection(null),\n navigate: handleCollectionsMenuNavigate,\n close: () => null,\n })}\n >\n Uncollected\n <FontAwesomeIcon icon=\"image\" size=\"lg\" />\n <div className=\"count-bubble\">{uncollected.count}</div>\n </button>\n );\n }\n\n // Add the manage button\n menuItems.push(\n <button\n role=\"menuitem\"\n className=\"collections_menu_link admin-link manager-trigger\"\n onClick={onShowCollectionsManager}\n onKeyDown={handleKeyEvents({\n open: onShowCollectionsManager,\n navigate: handleCollectionsMenuNavigate,\n close: () => null,\n })}\n >\n View / Manage Collections\n <FontAwesomeIcon icon={['far', 'copy']} size=\"lg\" />\n </button>\n );\n\n // Add the save uncollected button if needed\n if (activeCollection === null && uncollected.count > 0) {\n menuItems.push(\n <button\n role=\"menuitem\"\n className=\"collections_menu_link admin-link save-trigger\"\n onClick={onSaveUncollected}\n onKeyDown={handleKeyEvents({\n open: onSaveUncollected,\n navigate: handleCollectionsMenuNavigate,\n close: () => null,\n })}\n >\n Save as Collection\n </button>\n );\n }\n\n return menuItems;\n }, [activeCollection, collections, uncollected]);\n\n return (\n <Menu\n menuItems={collectionsMenuItems}\n triggerText={menuText}\n triggerId=\"collections-menu-trigger\"\n direction=\"up\"\n position=\"right\"\n appearance=\"themed\"\n />\n );\n}\n\nexport default CollectionsMenu;\n", "import React, { useState } from 'react';\nimport { includes } from 'lodash';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { GIFT_NOTE_RESERVED_COLLECTION } from 'utils/globals';\n\nimport photoModule from 'domains/photos';\n\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\n\ntype SaveUncollectedModalProps = {\n lastFocusedElementId: string;\n onCancel: () => void;\n};\n\nfunction SaveUncollectedModal(props: SaveUncollectedModalProps) {\n const { lastFocusedElementId, onCancel } = props;\n\n const [pendingName, setPendingName] = useState('');\n\n const dispatch = useAppDispatch();\n const existingNames = useAppSelector(photoModule.selectors.allCollectionNames);\n\n function handleSaveAsNewCollectionClick() {\n dispatch(photoModule.actions.moveUncollectedToCollection(pendingName));\n }\n\n const buttons = (\n <React.Fragment>\n <Button\n type=\"confirm\"\n onClick={handleSaveAsNewCollectionClick}\n disabled={\n pendingName === '' ||\n includes(existingNames, pendingName) ||\n pendingName === GIFT_NOTE_RESERVED_COLLECTION\n }\n >\n Save as New Collection\n </Button>\n <Button type=\"cancel\" onClick={onCancel}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n return (\n <Modal\n title=\"Save Uncollected Photos as a Collection\"\n labelledBy=\"save-uncollected-photos-modal\"\n lastFocusedElementId={lastFocusedElementId}\n onClose={onCancel}\n primaryFooterGroup={buttons}\n >\n <div className=\"collections_manager_container\">\n <p>Your uncollected images will be saved as a new collection.</p>\n <p>Give the new collection a name.</p>\n <div>\n <label htmlFor=\"save-uncollected-name\" className=\"screen-reader-text\">\n New Collection Name\n </label>\n <input\n id=\"save-uncollected-name\"\n name=\"collectionName\"\n placeholder=\"New Collection\"\n onChange={(e) => setPendingName(e.target.value)}\n />\n </div>\n </div>\n </Modal>\n );\n}\n\nexport default SaveUncollectedModal;\n", "import React, { useCallback, useRef, useState } from 'react';\n\nimport Button from 'components/shared/Button';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { renderModal } from 'utils/modal_util';\n\nimport crops from 'domains/crops';\nimport photoModule, { PhotoUpload } from 'domains/photos';\n\nimport CollectionsModal from '../CollectionsModal';\nimport CollectionPhotoTile from './CollectionPhotoTile';\nimport DeletePhotoModal from './DeletePhotoModal';\nimport MovePhotoModal from './MovePhotoModal';\n\nimport type { CollectionName } from 'domains/photos';\n\ntype SingleCollectionManagerProps = {\n displayCollection: CollectionName;\n onClose: (closeAll?: boolean) => void;\n};\n\nfunction SingleCollectionManager({ onClose, displayCollection }: SingleCollectionManagerProps) {\n const elem = useRef<HTMLUListElement>(null);\n\n const [pendingDeletePhoto, setPendingDeletePhoto] = useState<PhotoUpload | undefined>();\n const [pendingMovePhoto, setPendingMovePhoto] = useState<PhotoUpload | undefined>();\n\n const dispatch = useAppDispatch();\n const displayPhotos = useAppSelector((state) =>\n photoModule.selectors.allForCollection(state, displayCollection)\n );\n\n const collections = useAppSelector(photoModule.selectors.allNamedCollections);\n\n // FIXME: this is not working very well, should rework it\n const handleTileDrop = useCallback(\n (e: React.DragEvent) => {\n const eventData = e.dataTransfer.getData('text/plain');\n if (!eventData || !elem.current) return;\n\n let dropTile: PhotoUpload | undefined;\n\n try {\n dropTile = JSON.parse(eventData) as PhotoUpload;\n } catch {}\n\n if (dropTile) {\n const centerPoints = Array.from(elem.current.children).map((e2) => {\n const { x, y, height, width } = e2.getBoundingClientRect();\n return { x: x + width / 2, y: y + height };\n });\n const { clientX, clientY } = e;\n const dropBeforeIndex = centerPoints.findIndex((p) => p.x > clientX && p.y > clientY);\n dispatch(\n photoModule.actions.sortPhotos({\n insertPhotoId: dropTile.id,\n beforeIndex: dropBeforeIndex,\n })\n );\n }\n },\n [displayPhotos, dispatch]\n );\n\n function handleConfirmDeletePhoto(id: number) {\n dispatch(photoModule.actions.removePhoto.pending(id));\n setPendingDeletePhoto(undefined);\n\n if (displayPhotos.length === 1) {\n onClose();\n }\n }\n\n function handleConfirmMovePhoto(id: number, collection: string) {\n dispatch(photoModule.actions.update.pending({ id, collection }));\n setPendingMovePhoto(undefined);\n\n if (displayPhotos.length === 1) {\n onClose();\n }\n }\n\n function handleSelectPhoto(photo: PhotoUpload) {\n dispatch(crops.actions.applyPhotoToActiveNode(photo.id));\n onClose();\n }\n\n const buttons = (\n <React.Fragment>\n <Button\n type=\"outline\"\n onClick={() => {\n dispatch(photoModule.actions.setActiveCollection(displayCollection));\n onClose(true);\n }}\n >\n Load Collection\n </Button>\n <Button type=\"outline\" onClick={() => onClose()}>\n Back to Collections\n </Button>\n </React.Fragment>\n );\n\n return (\n <React.Fragment>\n <CollectionsModal\n title={displayCollection || 'Uncollected'}\n buttons={buttons}\n lastFocusedElementId=\"collections-menu-trigger\"\n onClose={onClose}\n >\n <ul\n className=\"collections_manager_items modal-list-items animated fadeIn items sortable\"\n ref={elem}\n onDragOver={(e) => e.preventDefault()}\n onDrop={handleTileDrop}\n >\n {displayPhotos.map((photo, tab) => (\n <CollectionPhotoTile\n key={photo.id}\n photo={photo}\n onSelect={() => handleSelectPhoto(photo)}\n onMove={() => setPendingMovePhoto(photo)}\n onDelete={() => setPendingDeletePhoto(photo)}\n />\n ))}\n </ul>\n </CollectionsModal>\n\n {pendingDeletePhoto &&\n renderModal(\n <DeletePhotoModal\n photo={pendingDeletePhoto}\n onConfirm={() => handleConfirmDeletePhoto(pendingDeletePhoto.id)}\n onCancel={() => setPendingDeletePhoto(undefined)}\n />\n )}\n\n {pendingMovePhoto &&\n renderModal(\n <MovePhotoModal\n photo={pendingMovePhoto}\n collections={collections}\n onConfirm={handleConfirmMovePhoto}\n onCancel={() => setPendingMovePhoto(undefined)}\n />\n )}\n </React.Fragment>\n );\n}\n\nexport default SingleCollectionManager;\n", "import React, { useMemo } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport Button from 'components/shared/Button/Button';\nimport Modal from 'components/shared/Modal';\n\ntype ModalFilter = {\n hide?: boolean;\n placeholder: string;\n value: string;\n onChange: (value: string) => void;\n};\n\ntype CollectionsModalProps = {\n title: string;\n buttons: JSX.Element;\n lastFocusedElementId: string;\n filter?: ModalFilter;\n children: JSX.Element;\n onClose: () => void;\n};\n\nfunction ModalFilter(props: ModalFilter) {\n const { onChange, value, placeholder, hide } = props;\n\n const showClearButton = useMemo(() => value !== '', [value]);\n\n function clearSearchField() {\n onChange('');\n }\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n const { target } = e;\n onChange(target.value);\n }\n\n if (hide) return null;\n\n return (\n <React.Fragment>\n <label htmlFor=\"collection-modal-filter\" className=\"screen-reader-text\">\n {placeholder || 'Find...'}\n </label>\n <input\n id=\"collection-modal-filter\"\n className=\"modal-filter\"\n onChange={handleChange}\n placeholder={placeholder || 'Find...'}\n value={value}\n />\n {showClearButton && (\n <Button\n type=\"icon\"\n icon=\"times-circle\"\n className=\"clear_search_button\"\n a11yText=\"clear search field\"\n onClick={clearSearchField}\n />\n )}\n <FontAwesomeIcon icon=\"search\" />\n </React.Fragment>\n );\n}\n\nfunction CollectionsModal(props: CollectionsModalProps) {\n const { title, buttons, lastFocusedElementId, filter, onClose, children } = props;\n\n const secondaryFooterGroup = filter ? <ModalFilter {...filter} /> : null;\n\n return (\n <Modal\n title={title}\n labelledBy=\"collections-manager-modal\"\n lastFocusedElementId={lastFocusedElementId}\n onClose={onClose}\n modalClass={['collections-manager']}\n primaryFooterGroup={buttons}\n secondaryFooterGroup={secondaryFooterGroup}\n >\n <div className=\"collections_manager_modal\">\n <div className={`collections_manager_container`}>{children}</div>\n </div>\n </Modal>\n );\n}\n\nexport default CollectionsModal;\n", "import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport NavigationTile from 'components/shared/NavigationTile';\n\nimport type { PhotoUpload } from 'domains/photos';\n\ntype CollectionPhotoTileProps = {\n photo: PhotoUpload;\n onDelete: () => void;\n onMove: () => void;\n onSelect: () => void;\n};\n\nfunction CollectionPhotoTile(props: CollectionPhotoTileProps) {\n const { photo, onDelete, onMove, onSelect } = props;\n\n const menuItems = [\n {\n label: 'Load',\n icon: <FontAwesomeIcon icon=\"film\" />,\n click: onSelect,\n },\n {\n label: (\n <span>\n Delete <span className=\"screen-reader-text\">{photo.original_filename}</span>\n </span>\n ),\n id: `delete-collection-photo-${photo.id}`,\n icon: <FontAwesomeIcon icon=\"trash-alt\" />,\n click: onDelete,\n },\n {\n label: 'Move to...',\n icon: <FontAwesomeIcon icon=\"image\" />,\n click: onMove,\n },\n ];\n\n const handleDragStart = (e: React.DragEvent) => {\n e.dataTransfer.setData('text/plain', JSON.stringify(photo));\n };\n\n return (\n <li draggable=\"true\" onDragStart={handleDragStart}>\n <NavigationTile\n item={photo}\n className={'image'}\n draggable\n image={photo.file_path_thumb}\n name={photo.original_filename}\n clickHandler={onSelect}\n menuItems={menuItems}\n />\n </li>\n );\n}\n\nexport default CollectionPhotoTile;\n", "import React from 'react';\n\nimport Modal from 'components/shared/Modal';\nimport Button from 'components/shared/Button';\n\nimport type { PhotoUpload } from 'domains/photos';\n\ntype DeletePhotoModalProps = {\n photo: PhotoUpload;\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nfunction DeletePhotoModal({ onConfirm, onCancel, photo }: DeletePhotoModalProps) {\n const buttons = (\n <React.Fragment>\n <Button type=\"confirm\" onClick={onConfirm}>\n Confirm\n </Button>\n <Button type=\"cancel\" onClick={onCancel}>\n Cancel\n </Button>\n </React.Fragment>\n );\n return (\n <Modal\n title=\"Confirm Delete Photo\"\n modalClass={['delete-photo-modal']}\n onClose={onCancel}\n primaryFooterGroup={buttons}\n labelledBy=\"confirm-delete-photo\"\n lastFocusedElementId={`delete-collection-photo-${photo.id}`}\n >\n <p>Are you sure you would like to delete this photo? This cannot be undone.</p>\n <img src={photo.file_path_thumb} />\n </Modal>\n );\n}\n\nexport default DeletePhotoModal;\n", "import React, { useMemo, useState } from 'react';\n\nimport Modal from 'components/shared/Modal';\nimport Button from 'components/shared/Button';\n\nimport type { PhotoUpload, NamedCollection } from 'domains/photos';\n\ntype MovePhotoModalProps = {\n photo: PhotoUpload;\n collections: NamedCollection[];\n onCancel: () => void;\n onConfirm: (id: number, collection: string) => void;\n};\n\nfunction MovePhotoModal({ photo, collections, onCancel, onConfirm }: MovePhotoModalProps) {\n const availableCollections = useMemo(\n () => collections.filter((c) => c.name !== photo.collection),\n [photo, collections]\n );\n\n const [selected, setSelected] = useState(() => availableCollections[0].name);\n\n const buttons = (\n <React.Fragment>\n <Button type=\"confirm\" onClick={() => onConfirm(photo.id, selected)}>\n Confirm\n </Button>\n <Button type=\"cancel\" onClick={onCancel}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n return (\n <Modal\n modalClass={['move-photo-modal']}\n labelledBy=\"move-photo-modal\"\n title=\"Change Photo Collection\"\n lastFocusedElementId={`${photo.original_filename}-${photo.id}-navigation-tile`}\n onClose={onCancel}\n primaryFooterGroup={buttons}\n >\n <div>\n <img src={photo.file_path_thumb} />\n </div>\n <p>\n Move <span>{photo.original_filename}</span> from <span>{photo.collection}</span>\n </p>\n\n <label htmlFor=\"select-collection\">to</label>\n <select\n id=\"select-collection\"\n onChange={(e) => setSelected(e.target.value)}\n value={selected}\n onClick={(e) => e.stopPropagation()}\n >\n <option value={undefined}>Select new collection</option>\n {availableCollections.map((collection) => (\n <option\n key={`${collection.name}`}\n value={collection.name}\n onClick={(e) => {\n e.nativeEvent.stopImmediatePropagation();\n }}\n >\n {collection.name} ({collection.count} images)\n </option>\n ))}\n </select>\n </Modal>\n );\n}\n\nexport default MovePhotoModal;\n", "import React, { useState, useMemo, useRef } from 'react';\n\nimport { renderModal } from 'utils/modal_util';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport photoModule from 'domains/photos';\n\nimport CollectionsModal from 'components/features/ImageCollections/CollectionsModal';\nimport CollectionTile from './CollectionTile';\n\nimport DeleteCollectionModal from './DeleteCollectionModal';\nimport RenameCollectionModal from './RenameCollectionModal';\nimport CreateNewCollectionModal from './CreateNewCollectionModal';\n\nimport Button from 'components/shared/Button';\n\nimport type { CollectionName, PendingCollectionAction } from 'domains/photos';\n\nconst collectionFilterStorageKey = 'bp_collection_filter';\n\ntype SelectCollectionModalProps = {\n onClose: () => void;\n setDisplayCollection: (name: CollectionName) => void;\n};\n\nexport function SelectCollectionModal({\n onClose,\n setDisplayCollection,\n}: SelectCollectionModalProps) {\n const elem = useRef<HTMLUListElement>(null);\n\n const [filterValue, setFilterValue] = useState(\n sessionStorage.getItem(collectionFilterStorageKey) || ''\n );\n\n const dispatch = useAppDispatch();\n const namedCollections = useAppSelector(photoModule.selectors.allNamedCollections);\n const uncollected = useAppSelector(photoModule.selectors.uncollectedCollection);\n\n const [pendingEdit, setPendingEdit] = useState<CollectionName | undefined>(undefined);\n const [pendingDelete, setPendingDelete] = useState<string | undefined>(undefined);\n const [pendingCreate, setPendingCreate] = useState(false);\n\n const pendingEditCollection = useMemo(\n () => [...namedCollections, uncollected].find((c) => c.name === pendingEdit),\n [pendingEdit, namedCollections, uncollected]\n );\n\n const pendingDeleteCollection = useMemo(\n () => namedCollections.find((c) => c.name === pendingDelete),\n [pendingDelete, namedCollections]\n );\n\n const collections = useMemo(() => {\n return uncollected.count ? [uncollected, ...namedCollections] : namedCollections;\n }, [uncollected, namedCollections]);\n\n // Sort uncollected first, then all others alphabetically\n const sortedCollections = useMemo(() => {\n return collections\n .filter((c) => c.count)\n .filter((c) => (c.name || 'Uncollected').indexOf(filterValue) > -1)\n .sort((a, b) => {\n if (a.name === null) return -1;\n if (b.name === null) return 1;\n return a.name > b.name ? 1 : -1;\n });\n }, [collections, filterValue]);\n\n function handleCollectionFilter(value: string) {\n setFilterValue(value);\n\n if (value === '') {\n sessionStorage.removeItem(collectionFilterStorageKey);\n } else {\n sessionStorage.setItem(collectionFilterStorageKey, value);\n }\n }\n\n const createNewButton = (\n <Button\n type=\"outline\"\n id=\"create-new-collection\"\n className=\"create-new-collection\"\n onClick={() => setPendingCreate(true)}\n >\n Create New Collection\n </Button>\n );\n\n function handleSelectCollection(collection: CollectionName) {\n dispatch(photoModule.actions.setActiveCollection(collection));\n onClose();\n }\n\n function handleDeleteCollection(collection: string) {\n dispatch(photoModule.actions.removeAllForCollection(collection));\n setPendingDelete(undefined);\n }\n\n function handleEditCollection(current: CollectionName, change: string) {\n dispatch(photoModule.actions.renameCollectionPhotos.pending({ current, change }));\n setPendingEdit(undefined);\n }\n\n function handleCreateCollection(\n name: string,\n action: PendingCollectionAction,\n donorIds: number[]\n ) {\n dispatch(photoModule.actions.createNewCollection({ name, action, donorIds }));\n onClose();\n }\n\n return (\n <React.Fragment>\n <CollectionsModal\n title=\"Your Image Collections\"\n buttons={createNewButton}\n lastFocusedElementId=\"collections-menu-trigger\"\n onClose={onClose}\n filter={{\n placeholder: 'Find Collections',\n onChange: handleCollectionFilter,\n value: filterValue,\n }}\n >\n {namedCollections.length === 0 ? (\n <p>You have no image collections. Start by creating one now.</p>\n ) : (\n <ul\n className=\"collections_manager_items modal-list-items collections animated fadeIn\"\n ref={elem}\n >\n {sortedCollections.map((collection) => (\n <li key={`${collection.name}${collection.count}`}>\n <CollectionTile\n collection={collection}\n onOpen={setDisplayCollection}\n onSelect={handleSelectCollection}\n onEdit={setPendingEdit}\n onDelete={setPendingDelete}\n />\n </li>\n ))}\n </ul>\n )}\n </CollectionsModal>\n\n {pendingCreate &&\n renderModal(\n <CreateNewCollectionModal\n uncollected={uncollected}\n collections={namedCollections}\n onCancel={() => setPendingCreate(false)}\n onConfirm={handleCreateCollection}\n />\n )}\n\n {pendingEditCollection &&\n renderModal(\n <RenameCollectionModal\n collections={namedCollections}\n current={pendingEditCollection}\n onCancel={() => setPendingEdit(undefined)}\n onConfirm={handleEditCollection}\n />\n )}\n\n {pendingDeleteCollection &&\n renderModal(\n <DeleteCollectionModal\n pendingDelete={pendingDeleteCollection}\n onCancel={() => setPendingDelete(undefined)}\n onConfirm={handleDeleteCollection}\n />\n )}\n </React.Fragment>\n );\n}\n", "import React, { useMemo } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport NavigationTile from 'components/shared/NavigationTile';\n\nimport type { Collection, CollectionName } from 'domains/photos';\n\ntype CollectionTileProps = {\n collection: Collection;\n onSelect: (collection: CollectionName) => void;\n onOpen: (collection: CollectionName) => void;\n onDelete: (collection: string) => void;\n onEdit: (collection: CollectionName) => void;\n};\n\nfunction CollectionTile(props: CollectionTileProps) {\n const { collection, onSelect, onOpen, onDelete, onEdit } = props;\n\n const collectionName = useMemo(() => collection.name || 'Uncollected', [collection]);\n\n function tileDetails(imageCount: number) {\n return `${imageCount} ${imageCount !== 1 ? 'images' : 'image'}`;\n }\n\n return (\n <NavigationTile\n item={{ ...collection, id: collectionName }}\n image={collection.thumb || undefined}\n name={collectionName}\n details={tileDetails(collection.count)}\n className=\"collection\"\n clickHandler={() => onOpen(collection.name)}\n menuItems={[\n {\n label: (\n <span>\n Open <span className=\"screen-reader-text\">{collectionName}</span>\n </span>\n ),\n icon: <FontAwesomeIcon icon=\"folder-open\" />,\n click: () => onOpen(collection.name),\n },\n {\n label: (\n <span>\n Load <span className=\"screen-reader-text\">{collectionName}</span>\n </span>\n ),\n icon: <FontAwesomeIcon icon=\"film\" />,\n click: () => onSelect(collection.name),\n },\n {\n label: (\n <span>\n Delete <span className=\"screen-reader-text\">{collectionName}</span>\n </span>\n ),\n disabled: collection.name === null,\n icon: <FontAwesomeIcon icon=\"trash-alt\" />,\n click: () => {\n if (collection.name !== null) {\n onDelete(collection.name);\n }\n },\n },\n {\n label: (\n <span>\n Rename <span className=\"screen-reader-text\">{collectionName}</span>\n </span>\n ),\n icon: <FontAwesomeIcon icon=\"edit\" />,\n click: () => onEdit(collection.name),\n },\n ]}\n />\n );\n}\n\nexport default CollectionTile;\n", "import React from 'react';\n\nimport Modal from 'components/shared/Modal';\nimport Button from 'components/shared/Button';\n\nimport type { NamedCollection } from 'domains/photos';\n\ntype DeleteCollectionModalProps = {\n pendingDelete: NamedCollection;\n onConfirm: (name: string) => void;\n onCancel: () => void;\n};\n\nexport function DeleteCollectionModal(props: DeleteCollectionModalProps) {\n const { pendingDelete, onConfirm, onCancel } = props;\n\n const buttons = (\n <React.Fragment>\n <Button type=\"confirm\" onClick={() => onConfirm(pendingDelete.name)}>\n Confirm\n </Button>\n <Button type=\"cancel\" onClick={onCancel}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n return (\n <Modal\n title={`Remove collection ${pendingDelete.name}`}\n labelledBy=\"delete-collection-modal\"\n modalClass={['collections-manager']}\n primaryFooterGroup={buttons}\n onClose={onCancel}\n lastFocusedElementId=\"collections-menu-trigger\"\n >\n <div className=\"collections_manager_container\">\n <div className=\"collections_manager_items confirm_delete animated fadeIn\">\n <strong className=\"confirm_delete_title\">\n There {pendingDelete.count !== 1 ? 'are' : 'is'} {pendingDelete.count} image\n {pendingDelete.count !== 1 ? 's' : ''} in this collection.{' '}\n {pendingDelete.count !== 1 ? 'They' : 'It'} will be deleted.\n </strong>\n <div className=\"confirm_delete_message\">\n Are you sure you want to remove the collection ‘{pendingDelete.name}’? This\n cannot be undone.\n </div>\n </div>\n </div>\n </Modal>\n );\n}\n\nexport default DeleteCollectionModal;\n", "import React, { useMemo, useState } from 'react';\n\nimport Modal from 'components/shared/Modal';\nimport Button from 'components/shared/Button';\n\nimport type { CollectionName, NamedCollection, UncollectedCollection } from 'domains/photos';\n\ntype RenameCollectionModalProps = {\n collections: NamedCollection[];\n current: NamedCollection | UncollectedCollection;\n onConfirm: (current: CollectionName, change: string) => void;\n onCancel: () => void;\n};\n\nfunction RenameCollectionModal({\n current,\n collections,\n onCancel,\n onConfirm,\n}: RenameCollectionModalProps) {\n const [rename, setRename] = useState('');\n\n const disableConfirm = useMemo(\n () => rename === '' || !!collections.find((c) => c.name === rename),\n [rename, collections]\n );\n\n function handleSubmit(e: React.FormEvent) {\n e.preventDefault();\n if (disableConfirm) return;\n\n onConfirm(current.name, rename);\n }\n\n const buttons = (\n <React.Fragment>\n <Button\n type=\"confirm\"\n htmlType=\"submit\"\n form=\"rename-collection-form\"\n disabled={disableConfirm}\n >\n Confirm\n </Button>\n <Button type=\"cancel\" onClick={onCancel}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n return (\n <Modal\n labelledBy=\"rename-collection-modal\"\n title={`Rename collection: ${current.name || 'Uncollected'}`}\n modalClass={['rename-collection-modal']}\n lastFocusedElementId={`${current.name}-${current.name}-navigation-tile`}\n onClose={onCancel}\n primaryFooterGroup={buttons}\n >\n <form id=\"rename-collection-form\" onSubmit={handleSubmit}>\n <label htmlFor=\"rename-collection\">New Name:</label>\n <input id=\"rename-collection\" onChange={(e) => setRename(e.target.value)} value={rename} />\n </form>\n </Modal>\n );\n}\n\nexport default RenameCollectionModal;\n", "import React, { useMemo, useReducer, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { useAppSelector } from 'utils/hooks';\n\nimport photoModule from 'domains/photos';\n\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\n\nimport type {\n NamedCollection,\n PendingCollectionAction,\n UncollectedCollection,\n} from 'domains/photos';\n\ntype CreateNewCollectionModalProps = {\n uncollected: UncollectedCollection;\n collections: NamedCollection[];\n onCancel: () => void;\n onConfirm: (name: string, action: PendingCollectionAction, donorIds?: number[]) => void;\n};\n\nfunction CreateNewCollectionModal({\n uncollected,\n collections,\n onCancel,\n onConfirm,\n}: CreateNewCollectionModalProps) {\n const [name, setName] = useState('');\n const [createAction, setCreateAction] = useState<PendingCollectionAction>(() =>\n uncollected.count > 0 ? 'create_from_orphans' : 'create_from_upload'\n );\n const [donorCollection, setDonorCollection] = useState<string>();\n const [showDonorPhotos, setShowDonorPhotos] = useState(false);\n const [selectedDonorPhotos, setSelectedDonorPhotos] = useReducer(\n (state: number[], payload: { id?: number; type: 'set' | 'reset' }) => {\n switch (payload.type) {\n case 'reset':\n return [];\n case 'set':\n if (!payload.id) return state;\n if (state.includes(payload.id)) {\n return state.filter((i) => i !== payload.id);\n } else {\n return [...state, payload.id];\n }\n }\n },\n []\n );\n\n // Would rather not use redux directly in this component, but I also don't\n // want to keep all photos in the parent component's state just for the possibility of\n // filtering here. Better solution is likely, just don't know it right now\n const donorPhotos = useAppSelector((state) =>\n photoModule.selectors.allForCollection(state, donorCollection)\n );\n\n const disableConfirm = useMemo(\n () =>\n name === '' ||\n !!collections.find((c) => c.name === name) ||\n (createAction === 'create_from_existing' && !donorCollection),\n [name, collections, createAction, donorCollection]\n );\n\n function handleSubmit(e: React.FormEvent) {\n e.preventDefault();\n if (disableConfirm) return;\n\n if (donorCollection && selectedDonorPhotos.length === 0) {\n setShowDonorPhotos(true);\n return;\n }\n\n onConfirm(name, createAction, selectedDonorPhotos);\n }\n\n function handleCancel() {\n if (showDonorPhotos) {\n setShowDonorPhotos(false);\n setSelectedDonorPhotos({ type: 'reset' });\n } else {\n onCancel();\n }\n }\n\n function toggleDonorPhoto(id: number) {\n setSelectedDonorPhotos({ type: 'set', id });\n }\n\n const buttons = (\n <React.Fragment>\n <Button\n type=\"confirm\"\n htmlType=\"submit\"\n form=\"create-collection-form\"\n disabled={disableConfirm}\n >\n Confirm\n </Button>\n <Button type=\"cancel\" onClick={handleCancel}>\n Cancel\n </Button>\n </React.Fragment>\n );\n\n return (\n <Modal\n lastFocusedElementId=\"create-new-collection\"\n labelledBy=\"create-collection-modal\"\n modalClass={['create-collection-modal']}\n title=\"Create New Collection\"\n primaryFooterGroup={buttons}\n onClose={onCancel}\n >\n <form id=\"create-collection-form\" onSubmit={handleSubmit}>\n {!showDonorPhotos && (\n <React.Fragment>\n <label htmlFor=\"rename-collection\">Collection Name:</label>\n <input id=\"rename-collection\" onChange={(e) => setName(e.target.value)} value={name} />\n\n <label htmlFor=\"create-collection-source\">Collect Images From:</label>\n <select\n id=\"create-collection-source\"\n onChange={(e) => setCreateAction(e.target.value as PendingCollectionAction)}\n value={createAction}\n >\n {uncollected.count > 0 && (\n <option\n value=\"create_from_orphans\"\n title=\"Create new collection from all uncollected images\"\n >\n {`Collect ${uncollected.count} Uncollected`}\n </option>\n )}\n <option value=\"create_from_upload\" title=\"Upload images to create new collection\">\n New From Upload\n </option>\n {collections.length > 0 && (\n <option\n value=\"create_from_existing\"\n title=\"Select images from existing collection to create new collection\"\n >\n Pick From Existing\n </option>\n )}\n </select>\n {createAction === 'create_from_existing' && (\n // <Select\n // isClearable={false}\n // placeholder=\"Select a Collection\"\n // onChange={(v) => setDonorCollection(v?.value)}\n // options={collections.map(({ name }) => ({ value: name, label: name }))}\n // />\n <select\n placeholder=\"select one\"\n onChange={(e) => setDonorCollection(e.target.value)}\n value={donorCollection}\n >\n <option value=\"\">Select a Collection</option>\n {collections.map(({ name }) => (\n <option key={name} value={name}>\n {name}\n </option>\n ))}\n </select>\n )}\n </React.Fragment>\n )}\n\n {showDonorPhotos && (\n <React.Fragment>\n <h2>Select Photos To Move</h2>\n <ul>\n {donorPhotos.map((p) => (\n <li className={selectedDonorPhotos.includes(p.id) ? 'selected' : ''}>\n <label>\n <img src={p.file_path_thumb} />\n {p.original_filename}{' '}\n <input\n type=\"checkbox\"\n checked={selectedDonorPhotos.includes(p.id)}\n className=\"screen-reader-text\"\n onChange={() => toggleDonorPhoto(p.id)}\n />\n {selectedDonorPhotos.includes(p.id) && (\n <FontAwesomeIcon icon={['far', 'check-circle']} size=\"3x\" />\n )}\n </label>\n </li>\n ))}\n </ul>\n </React.Fragment>\n )}\n </form>\n </Modal>\n );\n}\n\nexport default CreateNewCollectionModal;\n", "import Photos from './Photos';\n\nexport default Photos;\n", "import React from 'react';\n\nimport { useAppSelector } from 'utils/hooks';\n\nimport activeEditor from 'domains/active_editor';\nimport photoModule from 'domains/photos';\n\nimport UploadPhotos from './UploadPhotos';\nimport PhotoOptionsMenu from './PhotoOptionsMenu';\nimport Filmstrip from './Filmstrip';\n\nfunction Photos() {\n const photos = useAppSelector(photoModule.selectors.selectAll);\n const isCartProduct = useAppSelector(activeEditor.selectors.isCartProduct);\n\n return (\n <div className=\"user_photos\" id=\"user_photos\" onDrop={(e) => e.preventDefault()}>\n <UploadPhotos />\n {photos.length > 0 && !isCartProduct && <PhotoOptionsMenu />}\n <Filmstrip />\n </div>\n );\n}\n\nexport default Photos;\n", "import React, { useCallback, useEffect, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { FILESTACK_API_KEY, IS_PRODUCTION } from 'utils/globals';\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\nimport { renderModal } from 'utils/modal_util';\n\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\nimport FSPicker from 'components/shared/FSPicker';\n\nimport photoModule from 'domains/photos';\nimport session from 'domains/session';\nimport ui from 'domains/ui';\n\nimport CollectionPicker from './CollectionPicker';\n\nimport { PickerFileMetadata, PickerResponse } from 'filestack-js';\n\nconst options = {\n maxFiles: 50,\n maxSize: 1024 * 1024 * 1024, // 1GB\n accept: ['image/jpeg', 'image/png', 'image/tiff'],\n fromSources: ['local_file_system', 'facebook', 'instagram', 'googledrive', 'dropbox'],\n concurrency: 3, // <number> - Max number of concurrent parts uploading (chunks of files, not whole files).\n disableTransformer: true,\n storeTo: {\n location: 's3',\n path: IS_PRODUCTION ? '/wos-production/' : '/wos-stage/',\n },\n};\n\nfunction UploadPhotos() {\n const dispatch = useAppDispatch();\n const isLoggedIn = useAppSelector(session.selectors.isLoggedIn);\n const showPicker = useAppSelector(ui.selectors.showUploadPhotosDialog);\n\n const collections = useAppSelector(photoModule.selectors.allNamedCollections);\n const uncollected = useAppSelector(photoModule.selectors.uncollectedCollection);\n const pendingUploadCollection = useAppSelector(photoModule.selectors.newUploadsCollection);\n\n const [selectedPickerCollection, setSelectedPickerCollection] = useState<string>('');\n\n // Using a temporary state, unchanging callback, & useEffect prevents the picker from\n // rendering (and re-initializing) every time the selected collection changes.\n const [uploads, setUploads] = useState<PickerFileMetadata[]>();\n const handleUploadDone = useCallback((res: PickerResponse) => setUploads(res.filesUploaded), []);\n\n function handleShowPicker(show: boolean) {\n dispatch(ui.actions.setShowUploadPhotosDialog(show));\n }\n\n useEffect(() => {\n if (uploads) {\n dispatch(\n photoModule.actions.uploadPhotos.pending({\n uploads,\n collection: selectedPickerCollection,\n })\n );\n }\n }, [uploads, selectedPickerCollection]);\n\n return (\n <React.Fragment>\n <div className=\"upload_photos_trigger_container\">\n <Button\n id=\"upload-photos-trigger\"\n type=\"cornered\"\n className=\"upload_photos_trigger\"\n onClick={() => handleShowPicker(true)}\n >\n <FontAwesomeIcon icon=\"cloud-upload-alt\" size=\"lg\" />\n <span>\n Upload\n <br />\n Photos\n </span>\n </Button>\n </div>\n\n {showPicker &&\n renderModal(\n <Modal\n onClose={() => handleShowPicker(false)}\n lastFocusedElementId=\"upload-photos-trigger\"\n labelledBy=\"upload-photos\"\n title=\"Upload Photos\"\n modalClass={['upload-photo-picker']}\n >\n <FSPicker\n apikey={FILESTACK_API_KEY}\n pickerOptions={options}\n onUploadDone={handleUploadDone}\n />\n {isLoggedIn && (\n <CollectionPicker\n onChange={setSelectedPickerCollection}\n collections={collections}\n uncollected={uncollected}\n pending={pendingUploadCollection}\n selected={selectedPickerCollection}\n />\n )}\n </Modal>\n )}\n </React.Fragment>\n );\n}\n\nexport default UploadPhotos;\n", "import React from 'react';\n\nimport type { NamedCollection, UncollectedCollection } from 'domains/photos';\n\ntype CollectionPickerProps = {\n onChange: (name: string) => void;\n collections: NamedCollection[];\n uncollected: UncollectedCollection;\n pending?: string;\n selected?: string;\n};\n\nfunction CollectionPicker({\n onChange,\n collections,\n uncollected,\n pending,\n selected,\n}: CollectionPickerProps) {\n return (\n <div id=\"collection_picker_container\" className=\"collection-picker embedded\">\n <div id=\"collection_picker_wrapper\">\n <label htmlFor=\"collection-picker-select\" className=\"cp-label\">\n Upload to Collection: {pending || selected || 'Uncollected'}\n </label>\n {!pending && (\n <div className=\"cp-inputs\">\n <select\n id=\"collection-picker-select\"\n className=\"cp-select-list untitled-coll\"\n value={selected}\n onChange={(e) => onChange(e.target.value)}\n >\n {[...collections, uncollected].map((collection) => (\n <option\n key={`${collection.name}${collection.count}`}\n value={collection.name || ''}\n className={collection.count === 0 ? 'untitled-coll' : ''}\n >\n {collection.name || 'Uncollected'} (\n {`${collection.count} image${collection.count !== 1 ? 's' : ''}`})\n </option>\n ))}\n </select>\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport default CollectionPicker;\n", "import React, { useCallback, useMemo, useState } from 'react';\nimport { uniqBy } from 'lodash';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\n// TODO: should not be importing this. all that logic should be in epics or a reducer\nimport * as arrangementAPI from 'domains/saved_arrangements/saved_arrangements.api';\n\nimport Button from 'components/shared/Button';\nimport Modal from 'components/shared/Modal';\n\nimport photoModule from 'domains/photos';\nimport multiphotos from 'domains/multiphotos';\nimport crops from 'domains/crops';\n\nimport { renderModal } from 'utils/modal_util';\n\ntype PhotoSelectOption = 'all' | 'none' | 'others' | 'delete';\n\nfunction PhotoOptionsMenu() {\n const [confirmDialog, setConfirmDialog] = useState<React.ReactNode>(null);\n\n const dispatch = useAppDispatch();\n const multiphotoIds = useAppSelector(multiphotos.selectors.selectIds);\n const photos = useAppSelector(photoModule.selectors.allForActiveCollection);\n const selectedPhotoIds = useAppSelector(multiphotos.selectors.selectedPhotoIds) as number[];\n const potentialCropIds = useAppSelector(crops.selectors.potentialCropIds);\n const cropIds = useAppSelector(crops.selectors.selectIds);\n\n const photoIds = useMemo(() => photos.map((p) => p.id), [photos]);\n\n const selectAll = () => {\n if (cropIds.length > 0) {\n dispatch(multiphotos.actions.moveCropsToMultiPhotos(photoIds));\n } else {\n dispatch(multiphotos.actions.createManyMultiPhotos(photoIds));\n }\n };\n\n const selectInverse = () => {\n const inverse = photoIds.filter((id) => {\n return multiphotoIds.indexOf(id) === -1;\n });\n\n dispatch(multiphotos.actions.resetMultiPhotos());\n dispatch(multiphotos.actions.createManyMultiPhotos(inverse));\n };\n\n const selectNone = () => {\n dispatch(multiphotos.actions.resetMultiPhotos());\n dispatch(crops.actions.resetCrops());\n };\n\n const confirmMultipleDelete = useCallback(async () => {\n const linkedArrangements = await arrangementAPI.fromUploads(selectedPhotoIds);\n const uniqueArrangements = uniqBy(linkedArrangements, 'id');\n\n const photoNum = selectedPhotoIds.length;\n\n let titleText = 'You are about to delete a photo';\n let confirmationText = 'You have one photo selected.';\n let detailText = 'Would you like to delete this photo?';\n let buttonText = 'Delete Photo';\n let arrangementsText = `This photo is linked to the following arrangement${\n uniqueArrangements.length > 1 ? 's' : ''\n }:`;\n let arrangementsDeleteText = `Deleting this photo will remove it from the arrangement${\n uniqueArrangements.length > 1 ? 's' : ''\n }.`;\n\n if (photoNum > 1) {\n titleText = `You are about to delete ${photoNum} photos`;\n confirmationText = `You have ${photoNum} photos selected.`;\n detailText = 'Would you like to delete each selected photo?';\n buttonText = 'Delete Multiple Photos';\n arrangementsText = `Some or all of these photos are linked to the following arrangement${\n uniqueArrangements.length > 1 ? 's' : ''\n }:`;\n arrangementsDeleteText = `Deleting these photos will remove them from the arrangement${\n uniqueArrangements.length > 1 ? 's' : ''\n }.`;\n }\n\n const confirmDeleteButtons = (\n <React.Fragment>\n <Button\n type=\"confirm\"\n onClick={() => {\n dispatch(photoModule.actions.removeManyPhotos.pending(selectedPhotoIds));\n setConfirmDialog(null);\n }}\n >\n {buttonText}\n </Button>\n <Button type=\"cancel\" onClick={() => setConfirmDialog(null)}>\n Do Not Delete\n </Button>\n </React.Fragment>\n );\n\n setConfirmDialog(\n <Modal\n title={titleText}\n labelledBy=\"confirm-multiple-delete-modal\"\n lastFocusedElementId=\"delete-multiple-photos-button\"\n onClose={() => setConfirmDialog(null)}\n primaryFooterGroup={confirmDeleteButtons}\n >\n <div className=\"alert-message\">\n <div>\n <strong>{confirmationText}</strong>\n </div>\n {uniqueArrangements.length > 0 && (\n <div className=\"delete-photo-arrangements\">\n <p>{arrangementsText}</p>\n <ul>\n {uniqueArrangements.map(({ id, name }) => (\n <li key={id}>{name}</li>\n ))}\n </ul>\n <p>{arrangementsDeleteText}</p>\n </div>\n )}\n <p>{detailText}</p>\n </div>\n </Modal>\n );\n }, [dispatch, selectedPhotoIds]);\n\n const handleSelectOption = (option: PhotoSelectOption) => {\n switch (option) {\n case 'all':\n selectAll();\n break;\n case 'others':\n selectInverse();\n break;\n case 'none':\n selectNone();\n break;\n case 'delete':\n confirmMultipleDelete();\n break;\n // no default\n }\n };\n\n return (\n <React.Fragment>\n <div className=\"photo-options-menu\">\n <div className=\"options\">\n {photoIds.length > 0 && potentialCropIds.length === 1 && multiphotoIds.length === 0 && (\n <Button\n type=\"icon\"\n icon=\"check-square\"\n appearance=\"themed\"\n a11yText=\"Select all photos\"\n size=\"2x\"\n onClick={() => handleSelectOption('all')}\n />\n )}\n {potentialCropIds.length === 1 && multiphotoIds.length > 0 && (\n <Button\n type=\"icon\"\n icon=\"times\"\n appearance=\"themed\"\n a11yText=\"Unselect all photos\"\n size=\"2x\"\n onClick={() => handleSelectOption('none')}\n />\n )}\n <Button\n type=\"icon\"\n icon=\"trash-alt\"\n className=\"delete-photos-button\"\n id=\"delete-multiple-photos-button\"\n onClick={() => handleSelectOption('delete')}\n appearance=\"themed\"\n a11yText=\"Delete selected photos\"\n size=\"2x\"\n disabled={selectedPhotoIds.length === 0}\n />\n </div>\n </div>\n\n {confirmDialog && renderModal(confirmDialog)}\n </React.Fragment>\n );\n}\n\nexport default PhotoOptionsMenu;\n", "import React, { useState } from 'react';\n\nimport crops from 'domains/crops';\nimport photoModule from 'domains/photos';\nimport activeEditor from 'domains/active_editor';\nimport canvases from 'domains/canvases';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport UserPhotoThumb from './UserPhotoThumb';\n\nexport type PhotoSortIndicator = `${string}-${'left' | 'right'}`;\n\nfunction Filmstrip() {\n const dispatch = useAppDispatch();\n const canvasIds = useAppSelector(canvases.selectors.selectIds);\n const potentialCropIds = useAppSelector(crops.selectors.potentialCropIds);\n const isCartProduct = useAppSelector(activeEditor.selectors.isCartProduct);\n const photos = useAppSelector(photoModule.selectors.allForActiveCollection);\n\n // A dash separated string matching the photo ID and position (left/right) that a dragged photo will sort around\n const [activeSortIndicator, setActiveSortIndicator] = useState<PhotoSortIndicator | null>(null);\n\n const canUseMultiPhotos =\n canvasIds.length === 1 && potentialCropIds.length === 1 && !isCartProduct;\n /*\n * Redux values\n */\n\n const handleImgDrop = (e: React.DragEvent<HTMLDivElement>) => {\n const { currentTarget, clientX } = e;\n setActiveSortIndicator(null);\n\n const dropPhotoId = parseInt(e.dataTransfer.getData('text/plain'));\n const centerPoints = Array.from(currentTarget.querySelectorAll('img')).map((c) => {\n const { x, width } = c.getBoundingClientRect();\n return x + width / 2;\n });\n\n const dropBeforeIndex = centerPoints.findIndex((p) => p > clientX);\n dispatch(\n photoModule.actions.sortPhotos({ insertPhotoId: dropPhotoId, beforeIndex: dropBeforeIndex })\n );\n };\n\n function handleDragOver(e: React.DragEvent) {\n e.preventDefault();\n\n const target = e.target as HTMLImageElement | undefined | null;\n if (!target || !target.getAttribute('data-id')) return;\n\n const { clientX } = e;\n const { x, width } = target.getBoundingClientRect();\n const center = x + width / 2;\n\n // Only try to add this sort indicator if we're very sure we have all the data\n if (clientX && center) {\n const targetPhotoId = target.getAttribute('data-id');\n const sortLocation = clientX > center ? 'right' : 'left';\n setActiveSortIndicator(`${targetPhotoId}-${sortLocation}`);\n }\n }\n\n function handleDragLeave() {\n setActiveSortIndicator(null);\n }\n\n return (\n <div\n className=\"scroll_container thumbs_container\"\n id=\"thumbs_container\"\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleImgDrop}\n >\n <ul className=\"thumbs_list thumbs sortable\" id=\"photos_view\">\n {(photos || []).map((photo, i) => (\n <UserPhotoThumb\n key={photo.id}\n id={i === 0 ? 'first-photo-thumb' : undefined}\n photo={photo}\n canUseMultiPhotos={canUseMultiPhotos}\n activeSortIndicator={activeSortIndicator}\n />\n ))}\n </ul>\n </div>\n );\n}\n\nexport default Filmstrip;\n", "import React, { useMemo, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport multiphotos from 'domains/multiphotos';\nimport crops from 'domains/crops';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport UserImage from './UserImage';\n\nimport type { PhotoUpload } from 'domains/photos';\nimport type { PhotoSortIndicator } from './Filmstrip';\n\ntype UserPhotoThumbProps = {\n id?: 'first-photo-thumb';\n photo: PhotoUpload;\n canUseMultiPhotos: boolean;\n activeSortIndicator: PhotoSortIndicator | null;\n};\n\nfunction UserPhotoThumb(props: UserPhotoThumbProps) {\n const dispatch = useAppDispatch();\n const selectedPhotoIds = useAppSelector(multiphotos.selectors.selectedPhotoIds);\n const multiphotoIds = useAppSelector(multiphotos.selectors.selectIds) as number[];\n const allCrops = useAppSelector(crops.selectors.selectAll);\n const potentialCropIds = useAppSelector(crops.selectors.potentialCropIds);\n\n const { photo, id, canUseMultiPhotos, activeSortIndicator } = props;\n\n const [imageLoadError, setImageLoadError] = useState(false);\n\n const selected = useMemo(\n () => selectedPhotoIds.indexOf(photo.id) !== -1,\n [selectedPhotoIds, photo]\n );\n\n // which indicator is visible if this thumbnail is indicated by Filmstrip as the drag target for sorting\n const indicateSort = useMemo(() => {\n if (activeSortIndicator === null) return false;\n\n const [indicatorId, indicatorPosition] = activeSortIndicator.split('-');\n\n if (parseInt(indicatorId) !== photo.id) return false;\n\n return indicatorPosition;\n }, [activeSortIndicator, photo]);\n\n function handleMultiSelect(e: React.ChangeEvent<HTMLInputElement>) {\n e.stopPropagation();\n\n if (!canUseMultiPhotos) {\n if (selected) {\n dispatch(crops.actions.deleteCropsByPhotoId(photo.id));\n } else {\n dispatch(crops.actions.applyPhotoToActiveNode(photo.id));\n }\n\n // Early return if we're not dealing with multiphotos\n return;\n }\n\n // If we got to here, there should only be one canvas\n const cropsCount = allCrops.length;\n const multiphotosCount = multiphotoIds.length;\n\n if (cropsCount === 0 && multiphotosCount === 0) {\n dispatch(crops.actions.applyPhotoToActiveNode(photo.id));\n }\n\n if (cropsCount > 0) {\n if (selected) {\n dispatch(crops.actions.deleteCropsByPhotoId(photo.id));\n } else {\n // pull all photos from crops and put into multiphotos\n dispatch(multiphotos.actions.moveCropsToMultiPhotos([photo.id]));\n }\n }\n\n if (multiphotosCount > 0) {\n if (selected) {\n // remove from multiphotos\n // if multiphotoscount is 2 (meaning this will leave one after removal), move remaining photo to active photos\n const remaining = multiphotoIds.filter((pid) => pid !== photo.id);\n if (multiphotosCount === 2) {\n const remainingPhotoId = remaining[0];\n dispatch(crops.actions.applyPhotoToActiveNode(remainingPhotoId));\n dispatch(multiphotos.actions.resetMultiPhotos());\n } else {\n dispatch(multiphotos.actions.deleteMultiPhoto(photo.id));\n }\n } else {\n // add to multiphotos\n dispatch(multiphotos.actions.createMultiPhotoCrop(photo.id));\n }\n }\n }\n\n function handlePhotoClick(p: PhotoUpload) {\n if (potentialCropIds.length === 1) {\n dispatch(multiphotos.actions.resetMultiPhotos());\n }\n\n dispatch(crops.actions.applyPhotoToActiveNode(p.id));\n }\n\n if (imageLoadError) {\n return (\n <li key={photo.id} title=\"Image failed to load\">\n <div className=\"image-load-error-icon\">\n <FontAwesomeIcon icon=\"exclamation-circle\" size=\"2x\" />\n </div>\n </li>\n );\n }\n\n return (\n <li\n key={photo.id}\n id={id && id}\n data-id={photo.id}\n data-sort={photo.sort_index}\n className={`user_photo_thumb thumb_container ${selected ? 'active' : ''}`}\n >\n <label className=\"multi-select-container\">\n <span className=\"screen-reader-text\">\n {selected && 'de-'}select photo {photo.original_filename}\n </span>\n <input\n type=\"checkbox\"\n className=\"screen-reader-text\"\n checked={selected}\n onChange={handleMultiSelect}\n />\n <span className=\"fa-layers fa-fw multi-select-trigger\">\n <FontAwesomeIcon icon={selected ? ['fas', 'square'] : ['far', 'square']} size=\"lg\" />\n {selected && <FontAwesomeIcon icon=\"check\" />}\n </span>\n </label>\n <div\n className={`sort-indicator left ${indicateSort && indicateSort === 'left' ? 'active' : ''}`}\n aria-hidden\n />\n <button onClick={() => handlePhotoClick(photo)}>\n <div className=\"thumb_util\">\n <div className=\"thumb_filename\" title={photo.original_filename}>\n <span className=\"filename\">{photo.original_filename}</span>\n </div>\n </div>\n <div className=\"thumb_img_wrap\">\n <UserImage\n setImageLoadError={setImageLoadError}\n id={photo.id}\n path={photo.file_path_thumb}\n alt={photo.original_filename}\n />\n </div>\n </button>\n <div\n className={`sort-indicator right ${\n indicateSort && indicateSort === 'right' ? 'active' : ''\n }`}\n aria-hidden\n />\n </li>\n );\n}\n\nexport default UserPhotoThumb;\n", "import React, { useEffect, useState } from 'react';\nimport { checkResource } from 'utils/image_load';\n\ntype UserImageProps = {\n id: number;\n alt: string;\n path: string;\n setImageLoadError?: (set: boolean) => void;\n};\n\nconst loadThumbTriesMax = 10;\nconst triesDelay = 500;\n\nfunction UserImage({ id, alt, path, setImageLoadError = () => {} }: UserImageProps) {\n const [imgSrc, setImgSrc] = useState(path || '/assets/blank.gif');\n\n // Uploads receive a url for the thumbnails before they're ready.\n // We need to wait for them to exist, so just ping the url until we get a 200,\n // then we can set the image src\n useEffect(() => {\n async function checkImage(tries = 1) {\n if (path && path !== imgSrc && tries <= loadThumbTriesMax) {\n setTimeout(async () => {\n const exists = await checkResource(path);\n if (exists) {\n setImgSrc(path);\n } else {\n checkImage(tries + 1);\n }\n }, tries * triesDelay);\n } else if (tries > loadThumbTriesMax) {\n setImageLoadError(true);\n }\n }\n\n checkImage();\n }, [path, imgSrc]);\n\n const handleDragStart = (e: React.DragEvent<HTMLImageElement>) => {\n const img = new Image();\n img.src = path;\n // Firefox was not adding the ghost image, so adding it manually\n e.dataTransfer.setDragImage(img, 0, 200);\n e.dataTransfer.setData('text/plain', id.toString());\n };\n\n return (\n <img\n className=\"thumb_img\"\n id={`user-image-${id}`}\n src={imgSrc}\n data-id={id}\n alt={alt}\n data-original={path}\n onDragStart={handleDragStart}\n />\n );\n}\n\nexport default UserImage;\n", "import Projects from './Projects';\n\nexport default Projects;\n", "import React from 'react';\n\nimport ProjectsList from 'components/features/Projects/ProjectsList';\n\nimport { useAppDispatch } from 'utils/hooks';\n\nfunction Projects() {\n return (\n <div className=\"cart_page\">\n <div className=\"content\">\n <ProjectsList />\n </div>\n </div>\n );\n}\n\nexport default Projects;\n", "import React, { useEffect, useMemo, useState } from 'react';\n\nimport projects from 'domains/projects';\nimport navigation from 'domains/navigation';\n\nimport { useAppDispatch, useAppSelector } from 'utils/hooks';\n\nimport Button from 'components/shared/Button';\n\nimport ProjectActionAlert from './ProjectActionAlert';\nimport ProjectActionTile from './ProjectActionTile';\n\nimport type { LoadProjectAlertType } from './LoadProjectModal';\nimport type { Project } from 'domains/projects';\n\nfunction ProjectsList() {\n const dispatch = useAppDispatch();\n\n const status = useAppSelector(projects.selectors.status);\n const allProjects = useAppSelector(projects.selectors.selectAll);\n const restoreStatus = useAppSelector(projects.selectors.restoreStatus);\n\n const [showAlert, setShowAlert] = useState(false);\n const [alertType, setAlertType] = useState<LoadProjectAlertType>(null);\n const [activeProject, setActiveProject] = useState<Project | null>(null);\n const [lastFocusedElementId, setLastFocusedElementId] = useState('');\n\n const activeProjects = useMemo(() => allProjects.filter((p) => !p.last_ordered_at), [projects]);\n const orderedProjects = useMemo(() => allProjects.filter((p) => !!p.last_ordered_at), [projects]);\n\n function handleRestore(p: Project) {\n dispatch(projects.actions.restore.pending(p.guid));\n }\n\n function handleDelete(p: Project) {\n dispatch(projects.actions.destroy.pending(p));\n }\n\n function handleBackToCart() {\n dispatch(navigation.actions.navigateTo('cart'));\n }\n\n function handleOpenAlert(whichAlert: LoadProjectAlertType, project: Project) {\n setAlertType(whichAlert);\n setActiveProject(project);\n updateLastFocusedEl(whichAlert);\n setShowAlert(true);\n }\n\n function updateLastFocusedEl(whichAlert: LoadProjectAlertType) {\n switch (whichAlert) {\n case 'restore':\n setLastFocusedElementId('restore-project-button');\n break;\n case 'delete':\n setLastFocusedElementId('remove-project-button');\n break;\n default:\n setLastFocusedElementId('');\n break;\n }\n }\n\n function handleContinue() {\n setShowAlert(false);\n if (!activeProject) return;\n\n if (alertType === 'restore') {\n handleRestore(activeProject);\n }\n\n if (alertType === 'delete') {\n handleDelete(activeProject);\n }\n }\n\n function handleCancel() {\n setAlertType(null);\n setActiveProject(null);\n setShowAlert(false);\n }\n\n useEffect(() => {\n if (restoreStatus === 'complete') {\n handleBackToCart();\n }\n }, [restoreStatus]);\n\n return (\n <React.Fragment>\n <div className=\"projects-list-header\">\n <h1>Projects</h1>\n <Button type=\"link\" icon=\"close\" onClick={handleBackToCart}>\n Back to Cart\n </Button>\n </div>\n\n <div className=\"projects-list\">\n {status !== 'loading' && allProjects.length === 0 && (\n <p>You have 0 active projects. Start creating projects by adding items to your cart.</p>\n )}\n <ul>\n {activeProjects.map((project) => (\n <li key={project.id} aria-label={`project named ${project.name}`}>\n <ProjectActionTile\n project={project}\n appearance=\"dark\"\n onDelete={(project) => handleOpenAlert('delete', project)}\n onRestore={(project) => handleOpenAlert('restore', project)}\n />\n </li>\n ))}\n </ul>\n </div>\n\n {orderedProjects.length > 0 && (\n <React.Fragment>\n <div className=\"projects-list-header\">\n <h2>Previously Ordered Projects</h2>\n </div>\n <div className=\"projects-list\">\n <ul>\n {orderedProjects.map((project) => (\n <li key={project.id} aria-label={`project named ${project.name}`}>\n <ProjectActionTile\n project={project}\n appearance=\"dark\"\n onDelete={(project) => handleOpenAlert('delete', project)}\n onRestore={(project) => handleOpenAlert('restore', project)}\n />\n </li>\n ))}\n </ul>\n </div>\n </React.Fragment>\n )}\n\n {showAlert && alertType && (\n <ProjectActionAlert\n alertType={alertType}\n lastFocusedElementId={lastFocusedElementId}\n onCancel={handleCancel}\n onContinue={handleContinue}\n onClose={handleCancel}\n />\n )}\n </React.Fragment>\n );\n}\n\nexport default ProjectsList;\n", "import SiteMessage from './SiteMessage';\n\nexport default SiteMessage;\n", "import * as React from 'react';\n\nimport Button from 'components/shared/Button';\n\nimport { SiteMessageState } from 'domains/ui';\n\ntype SiteMessageProps = {\n allowClose?: boolean;\n closeSiteMessage?: () => void;\n siteMessage: SiteMessageState;\n};\n\nfunction SiteMessage({\n siteMessage,\n closeSiteMessage = () => {},\n allowClose = true,\n}: SiteMessageProps) {\n return (\n <div className={`mmv ${siteMessage.messageType}`} role=\"alert\">\n <p className=\"mmv__message\">{siteMessage.message}</p>\n {allowClose && (\n <Button\n type=\"icon\"\n icon=\"times\"\n a11yText=\"Close Message\"\n className=\"mmv__close\"\n id=\"mmv__close\"\n onClick={() => closeSiteMessage()}\n />\n )}\n </div>\n );\n}\n\nexport default SiteMessage;\n", "import { AnyAction, ThunkAction, combineReducers, configureStore } from '@reduxjs/toolkit';\nimport { combineEpics, createEpicMiddleware } from 'redux-observable';\nimport { IS_PRODUCTION } from 'utils/globals';\nimport reporter from 'utils/reporter';\n\nimport { slice as canvases } from 'domains/canvases';\nimport { slice as cart } from 'domains/cart';\nimport { slice as cartBilling } from 'domains/cart_billing';\nimport { slice as cartProducts } from 'domains/cart_products';\nimport { slice as cartProductCreator } from 'domains/cart_product_creator';\nimport { slice as cartProductEditor } from 'domains/cart_product_editor';\nimport { slice as catalogs } from 'domains/catalogs';\nimport { slice as crops } from 'domains/crops';\nimport { slice as multiphotos } from 'domains/multiphotos';\nimport { slice as navigation } from 'domains/navigation';\nimport { slice as optionGroups } from 'domains/option_groups';\nimport { slice as photos } from 'domains/photos';\nimport { slice as products } from 'domains/products';\nimport { slice as projects } from 'domains/projects';\nimport { slice as savedArrangements } from 'domains/saved_arrangements';\nimport { slice as session } from 'domains/session';\nimport { slice as stageDimensions } from 'domains/stage_dimensions';\nimport { slice as subcatalogs } from 'domains/subcatalogs';\nimport { slice as svgs } from 'domains/svgs';\nimport { slice as textNodes } from 'domains/text_nodes';\nimport { slice as ui } from 'domains/ui';\nimport { slice as wallPreviews } from 'domains/wall_previews';\nimport { slice as wallPreviewRooms } from 'domains/wall_preview_rooms';\n\nimport activeEditorEpics from 'domains/active_editor/active_editor.epics';\nimport analyticsEpics from 'domains/analytics/analytics.epics';\nimport applicationEpics from 'domains/application/application.epics';\nimport cartEpics from 'domains/cart/cart.epics';\nimport cartBillingEpics from 'domains/cart_billing/cart_billing.epics';\nimport cartOrderOptionEpics from 'domains/cart_order_options/cart_order_options.epics';\nimport cartProductEpics from 'domains/cart_products/cart_products.epics';\nimport cartProductCreatorEpics from 'domains/cart_product_creator/cart_product_creator.epics';\nimport cartProductEditorEpics from 'domains/cart_product_editor/cart_product_editor.epics';\nimport canvasEpics from 'domains/canvases/canvases.epics';\nimport catalogEpics from 'domains/catalogs/catalogs.epics';\nimport cropEpics from 'domains/crops/crops.epics';\nimport optionGroupEpics from 'domains/option_groups/option_groups.epics';\nimport photoEpics from 'domains/photos/photos.epics';\nimport projectsEpics from 'domains/projects/projects.epics';\nimport savedArrangementsEpics from 'domains/saved_arrangements/saved_arrangements.epics';\nimport sessionEpics from 'domains/session/session.epics';\nimport subcatalogEpics from 'domains/subcatalogs/subcatalogs.epics';\nimport svgEpics from 'domains/svgs/svgs.epics';\nimport textNodeEpics from 'domains/text_nodes/text_nodes.epics';\nimport uiEpics from 'domains/ui/ui.epics';\nimport wallPreviewEpics from 'domains/wall_previews/wall_previews.epics';\nimport wallPreviewRoomEpics from 'domains/wall_preview_rooms/wall_preview_rooms.epics';\n\nconst enhancers = [];\nif (IS_PRODUCTION) {\n const sentryReduxEnhancer = reporter.createReduxEnhancer({\n stateTransformer: (state) => {\n return {\n ...state,\n catalogs: { ...state.catalogs, entities: null, ids: null },\n subcatalogs: { ...state.subcatalogs, entities: null, ids: null },\n products: { ...state.products, entities: null, ids: null },\n optionGroups: { ...state.optionGroups, entities: null, ids: null },\n options: { ...state.options, entities: null, ids: null },\n };\n },\n });\n enhancers.push(sentryReduxEnhancer);\n}\n\nconst epicMiddleware = createEpicMiddleware<AnyAction, AnyAction, RootState>();\n\nexport const reducer = combineReducers({\n [canvases.name]: canvases.reducer,\n [cart.name]: cart.reducer,\n [cartBilling.name]: cartBilling.reducer,\n [cartProducts.name]: cartProducts.reducer,\n [cartProductCreator.name]: cartProductCreator.reducer,\n [cartProductEditor.name]: cartProductEditor.reducer,\n [catalogs.name]: catalogs.reducer,\n [crops.name]: crops.reducer,\n [multiphotos.name]: multiphotos.reducer,\n [navigation.name]: navigation.reducer,\n [optionGroups.name]: optionGroups.reducer,\n [photos.name]: photos.reducer,\n [products.name]: products.reducer,\n [projects.name]: projects.reducer,\n [savedArrangements.name]: savedArrangements.reducer,\n [session.name]: session.reducer,\n [stageDimensions.name]: stageDimensions.reducer,\n [subcatalogs.name]: subcatalogs.reducer,\n [svgs.name]: svgs.reducer,\n [textNodes.name]: textNodes.reducer,\n [ui.name]: ui.reducer,\n [wallPreviews.name]: wallPreviews.reducer,\n [wallPreviewRooms.name]: wallPreviewRooms.reducer,\n});\n\nconst wosStore = configureStore({\n reducer,\n middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(epicMiddleware),\n enhancers,\n});\n\nexport const combinedEpics = combineEpics(\n activeEditorEpics,\n analyticsEpics,\n applicationEpics,\n cartEpics,\n cartBillingEpics,\n cartOrderOptionEpics,\n cartProductEpics,\n cartProductCreatorEpics,\n cartProductEditorEpics,\n canvasEpics,\n catalogEpics,\n cropEpics,\n optionGroupEpics,\n photoEpics,\n projectsEpics,\n savedArrangementsEpics,\n sessionEpics,\n subcatalogEpics,\n svgEpics,\n textNodeEpics,\n uiEpics,\n wallPreviewEpics,\n wallPreviewRoomEpics\n);\n\nepicMiddleware.run(combinedEpics);\n\nexport default wosStore;\n\nexport type RootState = ReturnType<typeof reducer>;\nexport type AppDispatch = typeof wosStore.dispatch;\nexport type AppThunk<ReturnType = void> = ThunkAction<ReturnType, RootState, unknown, AnyAction>;\n", "export { createEpicMiddleware } from './createEpicMiddleware';\nexport { StateObservable } from './StateObservable';\nexport { combineEpics } from './combineEpics';\nexport { ofType } from './operators';\n// eslint-disable-next-line camelcase\nexport { resetDeprecationsSeen as __FOR_TESTING__resetDeprecationsSeen } from './utils/console';\n", "import { Subject, from, queueScheduler } from 'rxjs';\nimport { map, mergeMap, observeOn, subscribeOn } from 'rxjs/operators';\nimport { StateObservable } from './StateObservable';\nimport { warn } from './utils/console';\nexport function createEpicMiddleware(options) {\n if (options === void 0) { options = {}; }\n // This isn't great. RxJS doesn't publicly export the constructor for\n // QueueScheduler nor QueueAction, so we reach in. We need to do this because\n // we don't want our internal queuing mechanism to be on the same queue as any\n // other RxJS code outside of redux-observable internals.\n var QueueScheduler = queueScheduler.constructor;\n var uniqueQueueScheduler = new QueueScheduler(queueScheduler.schedulerActionCtor);\n if (process.env.NODE_ENV !== 'production' && typeof options === 'function') {\n throw new TypeError('Providing your root Epic to `createEpicMiddleware(rootEpic)` is no longer supported, instead use `epicMiddleware.run(rootEpic)`\\n\\nLearn more: https://redux-observable.js.org/MIGRATION.html#setting-up-the-middleware');\n }\n var epic$ = new Subject();\n var store;\n var epicMiddleware = function (_store) {\n if (process.env.NODE_ENV !== 'production' && store) {\n // https://github.com/redux-observable/redux-observable/issues/389\n warn('this middleware is already associated with a store. createEpicMiddleware should be called for every store.\\n\\nLearn more: https://goo.gl/2GQ7Da');\n }\n store = _store;\n var actionSubject$ = new Subject();\n var stateSubject$ = new Subject();\n var action$ = actionSubject$\n .asObservable()\n .pipe(observeOn(uniqueQueueScheduler));\n var state$ = new StateObservable(stateSubject$.pipe(observeOn(uniqueQueueScheduler)), store.getState());\n var result$ = epic$.pipe(map(function (epic) {\n var output$ = epic(action$, state$, options.dependencies);\n if (!output$) {\n throw new TypeError(\"Your root Epic \\\"\" + (epic.name ||\n '<anonymous>') + \"\\\" does not return a stream. Double check you're not missing a return statement!\");\n }\n return output$;\n }), mergeMap(function (output$) {\n return from(output$).pipe(subscribeOn(uniqueQueueScheduler), observeOn(uniqueQueueScheduler));\n }));\n result$.subscribe(store.dispatch);\n return function (next) {\n return function (action) {\n // Downstream middleware gets the action first,\n // which includes their reducers, so state is\n // updated before epics receive the action\n var result = next(action);\n // It's important to update the state$ before we emit\n // the action because otherwise it would be stale\n stateSubject$.next(store.getState());\n actionSubject$.next(action);\n return result;\n };\n };\n };\n epicMiddleware.run = function (rootEpic) {\n if (process.env.NODE_ENV !== 'production' && !store) {\n warn('epicMiddleware.run(rootEpic) called before the middleware has been setup by redux. Provide the epicMiddleware instance to createStore() first.');\n }\n epic$.next(rootEpic);\n };\n return epicMiddleware;\n}\n", "/* Operator exports */\nexport { audit } from '../internal/operators/audit';\nexport { auditTime } from '../internal/operators/auditTime';\nexport { buffer } from '../internal/operators/buffer';\nexport { bufferCount } from '../internal/operators/bufferCount';\nexport { bufferTime } from '../internal/operators/bufferTime';\nexport { bufferToggle } from '../internal/operators/bufferToggle';\nexport { bufferWhen } from '../internal/operators/bufferWhen';\nexport { catchError } from '../internal/operators/catchError';\nexport { combineAll } from '../internal/operators/combineAll';\nexport { combineLatestAll } from '../internal/operators/combineLatestAll';\nexport { combineLatest } from '../internal/operators/combineLatest';\nexport { combineLatestWith } from '../internal/operators/combineLatestWith';\nexport { concat } from '../internal/operators/concat';\nexport { concatAll } from '../internal/operators/concatAll';\nexport { concatMap } from '../internal/operators/concatMap';\nexport { concatMapTo } from '../internal/operators/concatMapTo';\nexport { concatWith } from '../internal/operators/concatWith';\nexport { connect, ConnectConfig } from '../internal/operators/connect';\nexport { count } from '../internal/operators/count';\nexport { debounce } from '../internal/operators/debounce';\nexport { debounceTime } from '../internal/operators/debounceTime';\nexport { defaultIfEmpty } from '../internal/operators/defaultIfEmpty';\nexport { delay } from '../internal/operators/delay';\nexport { delayWhen } from '../internal/operators/delayWhen';\nexport { dematerialize } from '../internal/operators/dematerialize';\nexport { distinct } from '../internal/operators/distinct';\nexport { distinctUntilChanged } from '../internal/operators/distinctUntilChanged';\nexport { distinctUntilKeyChanged } from '../internal/operators/distinctUntilKeyChanged';\nexport { elementAt } from '../internal/operators/elementAt';\nexport { endWith } from '../internal/operators/endWith';\nexport { every } from '../internal/operators/every';\nexport { exhaust } from '../internal/operators/exhaust';\nexport { exhaustAll } from '../internal/operators/exhaustAll';\nexport { exhaustMap } from '../internal/operators/exhaustMap';\nexport { expand } from '../internal/operators/expand';\nexport { filter } from '../internal/operators/filter';\nexport { finalize } from '../internal/operators/finalize';\nexport { find } from '../internal/operators/find';\nexport { findIndex } from '../internal/operators/findIndex';\nexport { first } from '../internal/operators/first';\nexport { groupBy, BasicGroupByOptions, GroupByOptionsWithElement } from '../internal/operators/groupBy';\nexport { ignoreElements } from '../internal/operators/ignoreElements';\nexport { isEmpty } from '../internal/operators/isEmpty';\nexport { last } from '../internal/operators/last';\nexport { map } from '../internal/operators/map';\nexport { mapTo } from '../internal/operators/mapTo';\nexport { materialize } from '../internal/operators/materialize';\nexport { max } from '../internal/operators/max';\nexport { merge } from '../internal/operators/merge';\nexport { mergeAll } from '../internal/operators/mergeAll';\nexport { flatMap } from '../internal/operators/flatMap';\nexport { mergeMap } from '../internal/operators/mergeMap';\nexport { mergeMapTo } from '../internal/operators/mergeMapTo';\nexport { mergeScan } from '../internal/operators/mergeScan';\nexport { mergeWith } from '../internal/operators/mergeWith';\nexport { min } from '../internal/operators/min';\nexport { multicast } from '../internal/operators/multicast';\nexport { observeOn } from '../internal/operators/observeOn';\nexport { onErrorResumeNext } from '../internal/operators/onErrorResumeNextWith';\nexport { pairwise } from '../internal/operators/pairwise';\nexport { partition } from '../internal/operators/partition';\nexport { pluck } from '../internal/operators/pluck';\nexport { publish } from '../internal/operators/publish';\nexport { publishBehavior } from '../internal/operators/publishBehavior';\nexport { publishLast } from '../internal/operators/publishLast';\nexport { publishReplay } from '../internal/operators/publishReplay';\nexport { race } from '../internal/operators/race';\nexport { raceWith } from '../internal/operators/raceWith';\nexport { reduce } from '../internal/operators/reduce';\nexport { repeat, RepeatConfig } from '../internal/operators/repeat';\nexport { repeatWhen } from '../internal/operators/repeatWhen';\nexport { retry, RetryConfig } from '../internal/operators/retry';\nexport { retryWhen } from '../internal/operators/retryWhen';\nexport { refCount } from '../internal/operators/refCount';\nexport { sample } from '../internal/operators/sample';\nexport { sampleTime } from '../internal/operators/sampleTime';\nexport { scan } from '../internal/operators/scan';\nexport { sequenceEqual } from '../internal/operators/sequenceEqual';\nexport { share, ShareConfig } from '../internal/operators/share';\nexport { shareReplay, ShareReplayConfig } from '../internal/operators/shareReplay';\nexport { single } from '../internal/operators/single';\nexport { skip } from '../internal/operators/skip';\nexport { skipLast } from '../internal/operators/skipLast';\nexport { skipUntil } from '../internal/operators/skipUntil';\nexport { skipWhile } from '../internal/operators/skipWhile';\nexport { startWith } from '../internal/operators/startWith';\nexport { subscribeOn } from '../internal/operators/subscribeOn';\nexport { switchAll } from '../internal/operators/switchAll';\nexport { switchMap } from '../internal/operators/switchMap';\nexport { switchMapTo } from '../internal/operators/switchMapTo';\nexport { switchScan } from '../internal/operators/switchScan';\nexport { take } from '../internal/operators/take';\nexport { takeLast } from '../internal/operators/takeLast';\nexport { takeUntil } from '../internal/operators/takeUntil';\nexport { takeWhile } from '../internal/operators/takeWhile';\nexport { tap, TapObserver } from '../internal/operators/tap';\nexport { throttle, ThrottleConfig } from '../internal/operators/throttle';\nexport { throttleTime } from '../internal/operators/throttleTime';\nexport { throwIfEmpty } from '../internal/operators/throwIfEmpty';\nexport { timeInterval } from '../internal/operators/timeInterval';\nexport { timeout, TimeoutConfig, TimeoutInfo } from '../internal/operators/timeout';\nexport { timeoutWith } from '../internal/operators/timeoutWith';\nexport { timestamp } from '../internal/operators/timestamp';\nexport { toArray } from '../internal/operators/toArray';\nexport { window } from '../internal/operators/window';\nexport { windowCount } from '../internal/operators/windowCount';\nexport { windowTime } from '../internal/operators/windowTime';\nexport { windowToggle } from '../internal/operators/windowToggle';\nexport { windowWhen } from '../internal/operators/windowWhen';\nexport { withLatestFrom } from '../internal/operators/withLatestFrom';\nexport { zip } from '../internal/operators/zip';\nexport { zipAll } from '../internal/operators/zipAll';\nexport { zipWith } from '../internal/operators/zipWith';\n", "import { __extends } from \"tslib\";\nimport { Observable, Subject } from 'rxjs';\nvar StateObservable = /** @class */ (function (_super) {\n __extends(StateObservable, _super);\n function StateObservable(input$, initialState) {\n var _this = _super.call(this, function (subscriber) {\n var subscription = _this.__notifier.subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(_this.value);\n }\n return subscription;\n }) || this;\n _this.__notifier = new Subject();\n _this.value = initialState;\n input$.subscribe(function (value) {\n // We only want to update state$ if it has actually changed since\n // redux requires reducers use immutability patterns.\n // This is basically what distinctUntilChanged() does but it's so simple\n // we don't need to pull that code in\n if (value !== _this.value) {\n _this.value = value;\n _this.__notifier.next(value);\n }\n });\n return _this;\n }\n return StateObservable;\n}(Observable));\nexport { StateObservable };\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n", "var deprecationsSeen = {};\nexport var resetDeprecationsSeen = function () {\n deprecationsSeen = {};\n};\nvar consoleWarn = (typeof console === 'object' && typeof console.warn === 'function')\n ? function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return console.warn.apply(console, args);\n }\n : function () { };\nexport var deprecate = function (msg) {\n if (!deprecationsSeen[msg]) {\n deprecationsSeen[msg] = true;\n consoleWarn(\"redux-observable | DEPRECATION: \" + msg);\n }\n};\nexport var warn = function (msg) {\n consoleWarn(\"redux-observable | WARNING: \" + msg);\n};\n", "import { merge } from 'rxjs';\n/**\n Merges all epics into a single one.\n */\nexport function combineEpics() {\n var epics = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n epics[_i] = arguments[_i];\n }\n var merger = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return merge.apply(void 0, epics.map(function (epic) {\n var output$ = epic.apply(void 0, args);\n if (!output$) {\n throw new TypeError(\"combineEpics: one of the provided Epics \\\"\" + (epic.name || '<anonymous>') + \"\\\" does not return a stream. Double check you're not missing a return statement!\");\n }\n return output$;\n }));\n };\n // Technically the `name` property on Function's are supposed to be read-only.\n // While some JS runtimes allow it anyway (so this is useful in debugging)\n // some actually throw an exception when you attempt to do so.\n try {\n Object.defineProperty(merger, 'name', {\n value: \"combineEpics(\" + epics.map(function (epic) { return epic.name || '<anonymous>'; }).join(', ') + \")\",\n });\n }\n catch (e) { }\n return merger;\n}\n", "import { Action } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport {\n concatMap,\n debounceTime,\n distinctUntilChanged,\n filter,\n forkJoin,\n from,\n map,\n mergeMap,\n of,\n switchMap,\n take,\n takeUntil,\n withLatestFrom,\n zip,\n} from 'rxjs';\nimport { intersection, isEmpty } from 'lodash';\n\nimport module from './index';\n\nimport canvasModule, { CanvasConfiguration } from 'domains/canvases';\nimport subcatalogsModule from 'domains/subcatalogs';\nimport productsModule from 'domains/products';\nimport optionGroupModule from 'domains/option_groups';\nimport svgsModule from 'domains/svgs';\n\nimport OrderApi from 'models/order_api';\n\nimport { byId, catchAndLogError } from 'utils/common';\nimport { notNull } from 'utils/type_guards';\n\nimport type { RootState } from 'store/wos_store';\nimport type { OptionalPair, Pair, PickRequired } from 'types/common_types';\nimport type { SVGAPIData } from 'domains/svgs';\n\nconst { selectors } = module;\n\nfunction hasCatalogId(c: CanvasConfiguration): c is PickRequired<CanvasConfiguration, 'catalog'> {\n return !!c.catalog;\n}\n\nfunction hasProductId(c: CanvasConfiguration): c is PickRequired<CanvasConfiguration, 'product'> {\n return !!c.product;\n}\n\nfunction hasOptionSelected(pair: OptionalPair<number, number>): pair is Pair<number, number> {\n return !!pair[1];\n}\n\nfunction isSVGIdString(s: string | SVGAPIData): s is string {\n return typeof s === 'string';\n}\n\n/**\n * Kicks off subcatalog fetch if active catalog changes\n */\nconst startFetchSubcatalogsEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(\n (action) =>\n canvasModule.actions.addCanvas.match(action) ||\n canvasModule.actions.changeActiveCanvasConfig.catalog.match(action) ||\n (canvasModule.actions.changeActiveCanvasConfig.multi.match(action) &&\n !!action.payload.catalog)\n ),\n withLatestFrom(state$),\n map(([, state]) => selectors.canvas(state)),\n filter(notNull),\n filter(hasCatalogId),\n distinctUntilChanged(\n (prev, current) => current.id === prev.id && current.catalog === prev.catalog\n ),\n map((c) => subcatalogsModule.actions.fetchSubcatalogs.pending(c.catalog))\n );\n\n/**\n * Configure a default subcatalog when subcatalogs are fetched, if necessary\n */\nconst configureDefaultSubcatalogEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(subcatalogsModule.actions.fetchSubcatalogs.fulfilled.match),\n withLatestFrom(state$),\n map(([, state]) => {\n const catalogId = selectors.catalogId(state);\n if (!catalogId) return null;\n\n const subcatalogs = subcatalogsModule.selectors.allByCatalogId(state)[catalogId];\n if (!subcatalogs) return null;\n\n const currentActiveSubcatalogId = selectors.subcatalogId(state);\n\n // Find the default if current is not in the active catalog\n if (!subcatalogs.find((s) => s.id === currentActiveSubcatalogId)) {\n const { id } = productsModule.utils.findDefaultTemplateId(subcatalogs);\n return id;\n }\n\n // No configuration change required\n return null;\n }),\n filter(notNull),\n map(canvasModule.actions.changeActiveCanvasConfig.subcatalog)\n );\n\n/**\n * Configure a default product when subcatalog changes, if necessary\n */\nconst configureDefaultProductEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(\n (action) =>\n (canvasModule.actions.addCanvas.match(action) && !action.payload.product) ||\n canvasModule.actions.changeActiveCanvasConfig.subcatalog.match(action) ||\n (canvasModule.actions.changeActiveCanvasConfig.multi.match(action) &&\n !!action.payload.subcatalog &&\n !action.payload.product)\n ),\n withLatestFrom(state$),\n map(([, state]) => {\n // Since epics run after the action has updated the redux store, the active subcatalog will be correct\n const subcatalogId = selectors.subcatalogId(state);\n if (!subcatalogId) return null;\n\n return subcatalogId;\n }),\n filter(notNull),\n switchMap((subcatalogId) =>\n // this sets up a second observable that emits when we have\n // products available to search for the next default,\n // and only emits once when one is found\n state$.pipe(\n map((state) => {\n const subcatalog = state.subcatalogs.entities[subcatalogId];\n return subcatalog?.templates\n .map((id) => state.products.entities[id])\n .filter(notNull)\n .filter((p) => !productsModule.utils.isCustomSizeProduct(p));\n }),\n filter(notNull),\n map(productsModule.utils.findDefaultTemplateId),\n map((found) => found.id),\n filter(notNull),\n take(1),\n map(canvasModule.actions.changeActiveCanvasConfig.product)\n )\n )\n );\n\n/**\n * If the product filter changes, we need to identify whether the selected product needs to\n * change as well\n */\nconst productFilterChangeEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(productsModule.actions.setProductFilter.match),\n withLatestFrom(state$),\n map(([action, state]) => {\n const activeProduct = selectors.product(state);\n if (!activeProduct) return;\n\n const productFilter = action.payload;\n const keepCurrentProduct =\n productsModule.utils.getProductFilters(activeProduct).indexOf(productFilter) > -1;\n if (keepCurrentProduct) return;\n\n const subcatalog = state.subcatalogs.entities[activeProduct.parent_id];\n if (!subcatalog) return;\n\n const filteredProducts = subcatalog.templates\n .map((id) => state.products.entities[id])\n .filter(notNull)\n .filter((product) => {\n if (productFilter === 'All' || productFilter === '') {\n return !productsModule.utils.isCustomSizeProduct(product);\n }\n\n return productsModule.utils.getProductFilters(product).indexOf(productFilter) > -1;\n });\n\n const { id } = productsModule.utils.findDefaultTemplateId(filteredProducts);\n return id;\n }),\n filter(notNull),\n map(canvasModule.actions.changeActiveCanvasConfig.product)\n );\n\n/**\n * Sets the product filter when either the subcatalog or product changes, and the current\n * filter does not apply to the selected product.\n *\n * Inverse of productFilterChangeEpic\n */\nconst setDefaultProductFilterEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n state$.pipe(\n map((state) => {\n const subcatalog = selectors.subcatalog(state);\n const product = selectors.product(state);\n const filter = productsModule.selectors.appliedFilter(state);\n\n if (!subcatalog || !product) return null;\n\n return { subcatalog, product, filter };\n }),\n filter(notNull),\n distinctUntilChanged((prev, curr) => {\n return prev.subcatalog.id === curr.subcatalog.id && prev.product.id === curr.product.id;\n }),\n filter(({ subcatalog, product }) => subcatalog.templates.includes(product.id)),\n map(({ subcatalog, product, filter }) => {\n const subcatalogFilters = subcatalog.filter_default.trim().split(',');\n const productFilters = productsModule.utils.getProductFilters(product);\n\n // Current filter still applies, so return null and observable will be dropped\n if (productFilters.includes(filter) && subcatalogFilters.includes(filter)) return null;\n\n // Get the first match of the intersection of the possible filters\n // Set to empty string if there is no matching filter\n const match = intersection(subcatalogFilters, productFilters)[0] || '';\n\n // If the current filter is the same as the matched filter, drop the observable\n return match === filter ? null : match;\n }),\n filter(notNull),\n map(productsModule.actions.setProductFilter)\n );\n\n/**\n * Kicks off option group fetch action when the active product id changes\n */\nconst startFetchOptionGroupEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(\n (action) =>\n canvasModule.actions.changeActiveCanvasConfig.product.match(action) ||\n canvasModule.actions.changeActiveCanvasConfig.multi.match(action) ||\n canvasModule.actions.changeActiveCanvasConfig.priceToolSize.match(action) ||\n canvasModule.actions.addCanvas.match(action)\n ),\n withLatestFrom(state$),\n map(([, state]) => selectors.canvas(state)),\n filter(notNull),\n filter(hasProductId),\n distinctUntilChanged((prev, current) => {\n return current.id === prev.id && current.product === prev.product;\n }),\n map((c) => optionGroupModule.actions.fetchOptionGroups.pending(c.product))\n );\n\n/**\n * Configure default option selections when option groups are fetched.\n *\n * Retain any selected option ids if those exist in a new option group\n */\nconst configureDefaultOptionsEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(optionGroupModule.actions.fetchOptionGroups.fulfilled.match),\n withLatestFrom(state$),\n map(([action, state]) => {\n const { optionGroups } = action.payload;\n\n const productConfig = selectors.canvas(state);\n const requiredOptionGroups = optionGroups.filter((og) => og.required);\n\n if (!productConfig) {\n return null;\n }\n\n const defaultOptions = requiredOptionGroups.map((og) => {\n return [og.id, optionGroupModule.utils.findDefaultOptionId(og.options)] as OptionalPair<\n number,\n number\n >;\n });\n\n // Go straight to defaults if we had nothing previously configured\n if (!productConfig.options) {\n return defaultOptions;\n }\n\n const previousOptionIds = Object.values(productConfig.options).filter(notNull);\n\n const keepOptions = optionGroups\n .map((og) => {\n const theseOptionIds = og.options.map((o) => o.id);\n const matched = intersection(previousOptionIds, theseOptionIds);\n // Should only be possible for one match per option group\n if (matched.length === 1) {\n return [og.id, matched[0]] as Pair<number, number>;\n } else {\n return null;\n }\n })\n .filter(notNull);\n\n return [...defaultOptions, ...keepOptions];\n }),\n filter(notNull),\n map((options) =>\n canvasModule.actions.changeActiveCanvasConfig.options({ options, replace: true })\n )\n );\n\n/**\n * Watch for changes to a canvas's options, and ensure applied option group filters match\n * the selected option\n */\nconst updateAppliedOptionGroupFilters: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(canvasModule.actions.changeActiveCanvasConfig.options.match),\n withLatestFrom(state$),\n map(([{ payload }, state]) => {\n const optionGroupsById = state.optionGroups.entities;\n\n return payload.options\n .filter(hasOptionSelected)\n .reduce((acc: Record<number, string>, [ogid, oid]) => {\n const optionGroup = optionGroupsById[ogid];\n const option = optionGroup?.options.find(byId(oid));\n\n if (!optionGroup || !option) {\n return acc;\n }\n\n const availableFilters = optionGroup.filter_default.trim().split(',');\n const optionFilters = option.filter_group.trim().split(',');\n const filter = intersection(availableFilters, optionFilters)[0];\n\n if (filter) {\n acc[optionGroup.id] = filter;\n }\n\n return acc;\n }, {});\n }),\n filter((appliedFilters) => !isEmpty(appliedFilters)),\n map(optionGroupModule.actions.setAppliedOptionGroupFilters)\n );\n\n/** Kick off the fetch of an SVG image if we have an unfetched svg_id on an active node */\nconst startSVGImageFetchEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n state$.pipe(\n map(selectors.nodes),\n mergeMap((n) => from(n)),\n map((n) => n.svg_id),\n filter(notNull),\n withLatestFrom(state$),\n map(([svgId, state]) => svgsModule.selectors.selectById(state, svgId) ?? svgId),\n filter(isSVGIdString),\n distinctUntilChanged(),\n map(svgsModule.actions.getSVGImage.pending)\n );\n\n/**\n * When the custom size changes, we need to:\n * - validate the size\n * - check custom options\n * - fetch prices\n *\n * Debounced as we're allowing the size to change as much as the user wants.\n *\n * Errors in either validation or fetching price are passed through for the slice\n * reducers to handle\n */\nconst customSizeChangeEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n state$.pipe(\n map((state) => {\n const product = selectors.product(state);\n const optionGroups = selectors.optionGroups(state);\n const configuredOptions = selectors.optionConfig(state);\n if (\n !product ||\n !productsModule.utils.isCustomSizeProduct(product) ||\n optionGroups.length === 0\n )\n return null;\n\n return {\n size: selectors.customSize(state),\n product,\n optionGroups,\n configuredOptions,\n };\n }),\n filter(notNull),\n distinctUntilChanged((prev, current) => {\n return prev.size.height === current.size.height && prev.size.width === current.size.width;\n }),\n debounceTime(1000),\n map((payload) => {\n // validate size, throw error to prevent price requests if invalid\n const { size, product } = payload;\n const customOptions = product.custom_options;\n const valid = productsModule.utils.validateCustomSize(size.width, size.height, customOptions);\n\n if (!valid) {\n return null;\n }\n\n return payload;\n }),\n concatMap((payload) => {\n if (!payload) {\n return of(canvasModule.actions.calculateCustomPrice.rejected('Invalid Size'));\n }\n const { size, product, optionGroups, configuredOptions } = payload;\n return from([\n canvasModule.actions.calculateCustomPrice.pending({ size, product }),\n canvasModule.actions.calculateCustomOptionPrices.pending({\n size,\n optionGroups,\n configuredOptions,\n }),\n ]);\n })\n );\n\n/**\n * Fetch option prices for custom sizes after both actions for size change & disabled option check\n */\nconst customSizeOptionsPriceEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(canvasModule.actions.calculateCustomOptionPrices.pending.match),\n switchMap(({ payload }) =>\n action$.pipe(\n filter(canvasModule.actions.changeActiveCanvasConfig.options.match),\n takeUntil(\n action$.pipe(filter(canvasModule.actions.changeActiveCanvasConfig.product.match))\n ),\n withLatestFrom(state$),\n mergeMap(([_, state]) => {\n const { size, optionGroups } = payload;\n const configuredOptions = selectors.optionConfig(state);\n\n const calculatedPriceOptions = optionGroupModule.utils\n .findCustomSizeOptionsWithCalculatedPrice(optionGroups, configuredOptions)\n .map(([ogid, bc]) => {\n return zip([\n of(ogid),\n from(OrderApi.getCustomSizePrice(size.width, size.height, bc)).pipe(\n map((priceData) => priceData.cost)\n ),\n ]);\n });\n\n return calculatedPriceOptions.length > 0 ? forkJoin(calculatedPriceOptions) : of([]);\n }),\n map(canvasModule.actions.calculateCustomOptionPrices.fulfilled),\n catchAndLogError(canvasModule.actions.calculateCustomOptionPrices.rejected())\n )\n )\n );\n\nconst combined = combineEpics(\n startFetchSubcatalogsEpic,\n configureDefaultSubcatalogEpic,\n configureDefaultProductEpic,\n productFilterChangeEpic,\n setDefaultProductFilterEpic,\n startFetchOptionGroupEpic,\n configureDefaultOptionsEpic,\n updateAppliedOptionGroupFilters,\n startSVGImageFetchEpic,\n customSizeChangeEpic,\n customSizeOptionsPriceEpic\n);\nexport default combined;\n", "import { rootAPI } from 'apis/catalog';\n\nimport type { CustomSizePriceData } from 'types/catalog_types';\n\nconst OrderApi = {\n getCustomSizePrice: async (w: number, h: number, billingCode: string) => {\n // sanitize billing code\n const bc = billingCode.replace('/', '%2F');\n\n // no billing code?\n if (bc === '_') {\n return { cost: 0 };\n }\n\n const response = await rootAPI.get<CustomSizePriceData>(\n `/custom_size_price/calculate/${w}/${h}/${bc}.json`\n );\n return response.data;\n },\n};\n\nexport default OrderApi;\n", "import { Action } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport {\n EMPTY,\n catchError,\n filter,\n from,\n ignoreElements,\n map,\n mergeMap,\n of,\n withLatestFrom,\n} from 'rxjs';\n\nimport { eventsAPI } from 'apis/wos';\n\nimport { notNull } from 'utils/type_guards';\n\nimport utils from './analytics.utils';\n\nimport navigation from 'domains/navigation';\nimport cartBilling from 'domains/cart_billing';\nimport checkout from 'domains/checkout';\n\nimport type { CheckoutRootState } from 'store/checkout_store';\n\nconst sendPageViewEventEpic: Epic<Action> = (action$) =>\n action$.pipe(\n filter(navigation.actions.initializeNavigation.match),\n // A ViewContent event is a pageview for a specific product\n map(({ payload }) => (payload.editor ? 'PageView' : 'ViewContent')),\n mergeMap((event) => from(eventsAPI.post('', { event })).pipe(catchError(() => EMPTY))),\n ignoreElements()\n );\n\nconst sendInitCheckoutEventEpic: Epic<Action> = (action$) =>\n action$.pipe(\n filter(checkout.actions.initCheckout.fulfilled.match),\n mergeMap(() =>\n from(eventsAPI.post('', { event: 'InitiateCheckout' })).pipe(catchError(() => EMPTY))\n ),\n ignoreElements()\n );\n\nconst sendPurchaseAnalyticsEpic: Epic<Action, Action, CheckoutRootState> = (action$, state$) =>\n action$.pipe(\n filter(checkout.actions.submitOrder.fulfilled.match),\n withLatestFrom(state$),\n map(([{ payload }, state]) => {\n utils.submitAnalyticsData(state, payload.order_number);\n return payload;\n }),\n mergeMap((payload) =>\n from(utils.submitMetaConversionData(payload.total)).pipe(\n map(() => checkout.actions.submitOrder.complete(payload.guid)),\n catchError(() => of(checkout.actions.submitOrder.complete(payload.guid)))\n )\n )\n );\n\n/**\n * Analytics for bing UET require their base tag fire a page load event for the page\n * that the custom tag is fired on. This was not working when firing it after the order submit succeeds\n * since the url at that time is /checkout/review, but the base tag fired on /checkout/shipping.\n *\n * The simplest way to resolve this, which also most closely follows their requirements,\n * is to fire the custom event on the confirmation page, which is a full page redirect after\n * the order submits, so it will always have a single page load base event. Microsoft claims\n * any subsequent events will be deduped.\n *\n * This has taken a ton of time & dozens of emails to figure out so we should just leave this alone.\n */\nconst sendBingEpic: Epic<Action, Action, CheckoutRootState> = (action$, state$) =>\n action$.pipe(\n filter(checkout.actions.initConfirmation.fulfilled.match),\n withLatestFrom(state$),\n map(([, state]) => cartBilling.selectors.billing(state)),\n filter(notNull),\n map(utils.submitBingData),\n ignoreElements()\n );\n\nconst combined = combineEpics(\n sendPageViewEventEpic,\n sendInitCheckoutEventEpic,\n sendPurchaseAnalyticsEpic,\n sendBingEpic\n);\nexport default combined;\n", "import { IS_PRODUCTION } from 'utils/globals';\n\nimport { eventsAPI } from 'apis/wos';\n\nimport cartModule from 'domains/cart';\nimport cartBilling from 'domains/cart_billing';\nimport cartProducts from 'domains/cart_products';\n\nimport reporter from 'utils/reporter';\n\nimport type { CartProduct } from 'domains/cart_products';\nimport type { CartBilling } from 'domains/cart_billing';\nimport type { CheckoutRootState } from 'store/checkout_store';\n\ndeclare const dataLayer: any[] | undefined;\n\ndeclare global {\n interface Window {\n orderData: Array<number | undefined>[];\n retailer: string;\n clickId: string | undefined;\n orderKey: string;\n customerID: string;\n uetq: any[];\n }\n}\n\nfunction submitAnalyticsData(state: CheckoutRootState, orderNumber: string) {\n const cps = cartProducts.selectors.selectAll(state);\n const cart = cartModule.selectors.cart(state);\n const billing = cartBilling.selectors.billing(state);\n\n if (!cart || !billing || !cart.customer_id || !cart.customer_email) return;\n\n submitAdlucentData(cps, orderNumber, cart.customer_id);\n submitGoogleData(cps, billing, orderNumber, cart.promo_code);\n}\n\n/**\n * Not entirely sure how this is being used, but it's copied directly from order confirmation page\n */\nfunction submitAdlucentData(cps: CartProduct[], orderNumber: string, customerId: string) {\n // Don't have anything really testable with this, so just break away if we're not in prod\n if (!IS_PRODUCTION) return;\n\n try {\n function getCookieValue(a: string) {\n const b = document.cookie.match('(^|;)\\\\s*' + a + '\\\\s*=\\\\s*([^;]+)');\n return b ? b.pop() : '';\n }\n\n window.orderData = cps.map(cartProductForAdlucent);\n window.retailer = 'sensaria';\n window.clickId = getCookieValue('_adlClkID');\n window.orderKey = orderNumber;\n window.customerID = customerId;\n\n initAdlScript();\n } catch (e) {\n reporter.captureException(e, { tags: { analytics: 'adlucent' } });\n }\n}\n\nfunction initAdlScript() {\n const adl = document.createElement('script');\n adl.type = 'text/javascript';\n adl.async = true;\n adl.src = document.location.protocol + '//tracking.deepsearch.adlucent.com/adl.js';\n const s = document.getElementsByTagName('script')[0];\n s.parentNode?.insertBefore(adl, s);\n}\n\nfunction submitGoogleData(\n cps: CartProduct[],\n billing: CartBilling,\n orderNumber: string,\n promoCode: string | null\n) {\n try {\n if (!dataLayer) return;\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object; uses GTM#\n dataLayer.push({\n event: 'purchase',\n ecommerce: {\n transaction_id: orderNumber,\n affiliation: 'WOS',\n value: billing.subtotal / 100,\n shipping: billing.shipping_total / 100,\n tax: billing.tax / 100,\n coupon: promoCode,\n items: cps.map(cartProductForGoogle),\n },\n });\n } catch (e) {\n reporter.captureException(e, { tags: { analytics: 'google' } });\n }\n}\n\nfunction submitBingData(billing: CartBilling) {\n try {\n const event = {\n revenue_value: billing.subtotal / 100,\n currency: 'USD',\n };\n\n window.uetq.push('event', '', event);\n\n reporter.captureMessage('UET Push Successful', { extra: { event } });\n } catch (e) {\n reporter.captureException(e, { tags: { analytics: 'uet' } });\n }\n}\n\nfunction submitMetaConversionData(total: number) {\n return eventsAPI.post('', {\n event: 'Purchase',\n custom_data: {\n currency: 'USD',\n value: total / 100,\n },\n });\n}\n\nfunction cartProductForGoogle(cp: CartProduct) {\n return {\n item_id: cp.product_api_id,\n item_name: cp.name,\n price: cp.pricing ? cp.pricing.subtotal / 100 : undefined,\n quantity: cp.quantity,\n };\n}\n\nfunction cartProductForAdlucent(cp: CartProduct) {\n return [cp.product_api_id, cp.quantity, cp.pricing ? cp.pricing.subtotal / 100 : undefined];\n}\n\nexport default {\n submitAnalyticsData,\n submitGoogleData,\n submitBingData,\n submitMetaConversionData,\n};\n", "import { Action } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport { combineLatest, distinctUntilChanged, filter, map } from 'rxjs';\n\nimport catalogs from 'domains/catalogs';\nimport session from 'domains/session';\nimport photos from 'domains/photos';\nimport navigation from 'domains/navigation';\nimport cartProducts from 'domains/cart_products';\nimport cart from 'domains/cart';\nimport cartBilling from 'domains/cart_billing';\n\nimport actions from './application.actions';\n\nimport type { RootState } from 'store/wos_store';\n\n/** Kick off session check when app inits */\nexport const initAppSessionCheck: Epic<Action, Action> = (action$) =>\n action$.pipe(\n filter(actions.initApp.match),\n map(() => session.actions.getSession.pending())\n );\n\n/** Kick off shallow catalog fetch when app inits */\nexport const initAppGetCatalogsEpic: Epic<Action, Action> = (action$) =>\n action$.pipe(\n filter(actions.initApp.match),\n map(() => catalogs.actions.getAllShallow.pending())\n );\n\n/** Kick off cart guid check when app inits */\nexport const initAppCheckCartEpic: Epic<Action, Action> = (action$) =>\n action$.pipe(\n filter(actions.initApp.match),\n map(() => cart.actions.check.pending())\n );\n\n/** Kick off photos fetch when app inits */\nexport const initAppGetPhotosEpic: Epic<Action, Action> = (action$) =>\n action$.pipe(\n filter(actions.initApp.match),\n map(() => photos.actions.getAll.pending())\n );\n/**\n * Fetch cart products if we are showing the cart page, and have a cart\n */\nexport const navigateToCartEpic: Epic<Action, Action, RootState> = (action$) =>\n combineLatest([\n action$.pipe(\n filter(\n (a) =>\n (navigation.actions.initializeNavigation.match(a) && !!a.payload.cart) ||\n (navigation.actions.updateCurrentRoute.match(a) && a.payload === 'cart')\n )\n ),\n action$.pipe(filter(cart.actions.get.fulfilled.match)),\n ]).pipe(\n filter(([_, { payload }]) => !!payload && payload.product_ids.length > 0),\n map(() => cartProducts.actions.getAll.pending())\n );\n\n/**\n * Initialize fetch for cart billing if we are showing the cart page, and have a cart\n */\nexport const updateCartBillingEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n state$.pipe(\n map((state) => ({\n showCart: navigation.selectors.showCart(state),\n hasCartGuid: cart.selectors.hasGuid(state),\n })),\n filter(({ showCart, hasCartGuid }) => showCart && hasCartGuid),\n distinctUntilChanged((prev) => prev.showCart),\n map(() => cartBilling.actions.get.pending())\n );\n\nexport default combineEpics(\n initAppSessionCheck,\n initAppGetCatalogsEpic,\n initAppCheckCartEpic,\n initAppGetPhotosEpic,\n navigateToCartEpic,\n updateCartBillingEpic\n);\n", "import { combineEpics } from 'redux-observable';\nimport {\n concatMap,\n filter,\n from,\n ignoreElements,\n map,\n mergeMap,\n switchMap,\n take,\n withLatestFrom,\n} from 'rxjs';\n\nimport { CartModel } from './cart.model';\nimport module from './index';\n\nimport cartProducts from 'domains/cart_products';\nimport cartProductCreator from 'domains/cart_product_creator';\n\nimport { catchAndLogError } from 'utils/common';\nimport reporter from 'utils/reporter';\n\nimport type { Epic } from 'redux-observable';\nimport type { Cart } from './cart.types';\nimport type { Action, PayloadAction } from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\n\nconst { actions, selectors } = module;\n\ntype CartEpic = Epic<Action, Action, RootState>;\n\nfunction hasCartPayload(action: PayloadAction<any>): action is PayloadAction<Cart> {\n return actions.create.fulfilled.match(action) || actions.get.fulfilled.match(action);\n}\n\n/**\n * Check for an existing cart guid\n */\nconst checkCartEpic: Epic<Action> = (action$) =>\n action$.pipe(\n filter(actions.check.pending.match),\n switchMap(() =>\n from(CartModel.check()).pipe(\n map((guid) => (guid ? actions.get.pending() : actions.check.fulfilled())),\n catchAndLogError(actions.check.rejected())\n )\n )\n );\n\nconst createCartEpic: Epic<Action> = (action$) =>\n action$.pipe(\n filter(actions.create.pending.match),\n switchMap(() =>\n from(CartModel.create()).pipe(\n map(actions.create.fulfilled),\n catchAndLogError(actions.create.rejected())\n )\n )\n );\n\n/**\n * Create a cart if we try adding to cart without an existing cart\n */\nconst createCartForAddToCartEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(cartProductCreator.actions.addToCart.pending.match),\n withLatestFrom(state$),\n filter(([, state]) => !selectors.hasGuid(state)),\n map(() => actions.create.pending())\n );\n\n/**\n * Signals to the cart product creator that we have a cart\n */\nconst addToCartReadyEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(cartProductCreator.actions.addToCart.pending.match),\n mergeMap(({ payload }) =>\n state$.pipe(\n filter(selectors.hasGuid),\n take(1),\n map(() => cartProductCreator.actions.addToCart.ready(payload))\n )\n )\n );\n\nconst addSentryCartGuidTagEpic: Epic<Action> = (action$) =>\n action$.pipe(\n filter(hasCartPayload),\n map(({ payload }) => reporter.setTag('cart_guid', payload.guid)),\n ignoreElements()\n );\n/**\n * If we've found an existing cart guid, fetch that cart\n */\nconst getCartEpic: CartEpic = (action$) =>\n action$.pipe(\n filter(actions.get.pending.match),\n switchMap(() =>\n from(CartModel.get()).pipe(\n map(actions.get.fulfilled),\n catchAndLogError(actions.get.rejected())\n )\n )\n );\n\n/**\n * Make sure cart product IDs match the cart's product_ids array\n */\nconst updateCartProductIdsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.get.fulfilled.match),\n map(({ payload }) => payload.product_ids),\n map((ids) => cartProducts.actions.addMany(ids.map((id) => ({ id }))))\n );\n\nconst updateCartEpic: CartEpic = (action$) =>\n action$.pipe(\n filter(actions.update.pending.match),\n concatMap(({ payload }) =>\n from(CartModel.update(payload)).pipe(\n map(actions.update.fulfilled),\n catchAndLogError(actions.update.rejected())\n )\n )\n );\n\nconst combined = combineEpics(\n checkCartEpic,\n getCartEpic,\n updateCartProductIdsEpic,\n createCartForAddToCartEpic,\n addToCartReadyEpic,\n addSentryCartGuidTagEpic,\n createCartEpic,\n updateCartEpic\n);\nexport default combined;\n", "import { Action } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport { filter, from, map, switchMap } from 'rxjs';\n\nimport { catchAndLogError } from 'utils/common';\n\nimport cartProducts from 'domains/cart_products';\n\nimport module from './index';\nimport * as api from './cart_billing.api';\n\nimport type { CheckoutRootState } from 'store/checkout_store';\n\nconst { actions, selectors } = module;\n\n/**\n * Get cart billing details\n */\nconst getCartBillingEpic: Epic<Action, Action, CheckoutRootState> = (action$) =>\n action$.pipe(\n filter(actions.get.pending.match),\n switchMap(() =>\n from(api.get()).pipe(map(actions.get.fulfilled), catchAndLogError(actions.get.rejected()))\n )\n );\n\nconst refreshCartBillingEpic: Epic<Action, Action, CheckoutRootState> = (action$) =>\n action$.pipe(\n filter(\n (action) =>\n cartProducts.actions.updateQuantity.fulfilled.match(action) ||\n cartProducts.actions.destroy.fulfilled.match(action)\n ),\n map(() => actions.get.pending())\n );\n\nconst combined = combineEpics(getCartBillingEpic, refreshCartBillingEpic);\nexport default combined;\n", "import cartAPI from 'apis/cart';\n\nimport type { CartBilling } from './cart_billing.types';\n\nexport const get = async () => {\n const { data } = await cartAPI.get<CartBilling>('/billing');\n return data;\n};\n", "import { combineEpics } from 'redux-observable';\nimport { concatMap, filter, forkJoin, from, map, withLatestFrom } from 'rxjs';\n\nimport cartModule, { CartModel } from 'domains/cart';\n\nimport {\n createCartOrderOption,\n deleteCartOrderOption,\n getCartOrderOptions,\n} from './cart_order_options.actions';\nimport { CartOrderOptionsModel } from './cart_order_options.model';\n\nimport { catchAndLogError } from 'utils/common';\n\nimport type { Epic } from 'redux-observable';\nimport type { Action } from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\n\n/**\n * After fetching the cart, if there are cart order options, we should fetch those\n * to get the pricing data\n */\nconst getCartOrderOptionsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(cartModule.actions.get.fulfilled.match),\n filter(({ payload }) => payload.options.length > 0),\n concatMap(() =>\n from(CartOrderOptionsModel.all()).pipe(\n map(getCartOrderOptions.fulfilled),\n catchAndLogError(getCartOrderOptions.rejected())\n )\n )\n );\n\nconst createCartOrderOptionEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(createCartOrderOption.pending.match),\n withLatestFrom(state$),\n map(([action, state]) => ({\n add: action.payload,\n remove: state.cart.betterCart?.options[0]?.id,\n })),\n concatMap((payload) =>\n from(CartOrderOptionsModel.create(payload)).pipe(\n concatMap(() => forkJoin([CartModel.get(), CartOrderOptionsModel.all()])),\n map(([cart, coos]) => createCartOrderOption.fulfilled({ ...cart, options: coos })),\n catchAndLogError(createCartOrderOption.rejected())\n )\n )\n );\n\nconst deleteCartOrderOptionEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(deleteCartOrderOption.pending.match),\n concatMap(({ payload }) =>\n from(CartOrderOptionsModel.delete(payload)).pipe(\n concatMap(() => CartModel.get()),\n map((cart) => deleteCartOrderOption.fulfilled(cart)),\n catchAndLogError(deleteCartOrderOption.rejected())\n )\n )\n );\n\nconst combined = combineEpics(\n getCartOrderOptionsEpic,\n createCartOrderOptionEpic,\n deleteCartOrderOptionEpic\n);\nexport default combined;\n", "import { combineEpics } from 'redux-observable';\nimport { Action } from '@reduxjs/toolkit';\nimport {\n concatMap,\n debounceTime,\n defer,\n filter,\n from,\n map,\n mergeMap,\n of,\n retry,\n switchMap,\n takeUntil,\n timer,\n} from 'rxjs';\n\nimport module from './index';\nimport * as api from './cart_products.api';\n\nimport { catchAndLogError } from 'utils/common';\n\nimport type { Epic } from 'redux-observable';\nimport type { CheckoutRootState } from 'store/checkout_store';\nimport type { RootState } from 'store/wos_store';\n\nconst { actions } = module;\n\ntype CartProductEpic = Epic<Action, Action, RootState | CheckoutRootState>;\n\n/**\n * Fetch cart products\n */\nconst getAllCartProductsEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.getAll.pending.match),\n switchMap(() =>\n from(api.all()).pipe(\n map((cps) => actions.getAll.fulfilled(cps)),\n catchAndLogError(actions.getAll.rejected())\n )\n )\n );\n\n/**\n * Sets up fetches & retries for cart product thumbnails\n */\nconst cartProductThumbnailEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.getAll.fulfilled.match),\n concatMap(({ payload }) => from(payload)), // turn the array into a stream\n filter((cp) => !cp.thumbnail_url), // filter to get ones missing thumb url\n // mergeMap to get these in parallel -- if want in series, use concatMap\n mergeMap((cp) =>\n // create observable for request, use defer to re-run the promise when retried\n defer(() => api.getThumbnail(cp.id)).pipe(\n retry({\n count: 5,\n delay: (error, retries) =>\n timer(5000 * retries).pipe(\n // Cancel the retries if this cart product is removed\n takeUntil(\n action$.pipe(\n filter(actions.destroy.pending.match),\n filter(({ payload }) => payload === cp.id)\n )\n )\n ),\n }),\n map((urls) => actions.update.fulfilled({ id: cp.id, ...urls })),\n catchAndLogError(actions.cartProductThumbnailError(cp.id))\n )\n )\n );\n\nconst updateCartProductQuantityEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.updateQuantity.pending.match),\n debounceTime(300),\n concatMap(({ payload }) => {\n if (payload.quantity <= 0) {\n return of(actions.destroy.pending(payload.id));\n } else {\n return from(api.update(payload)).pipe(\n concatMap(() => api.find(payload.id)),\n map(actions.updateQuantity.fulfilled),\n catchAndLogError(actions.updateQuantity.rejected())\n );\n }\n })\n );\n\nconst deleteCartProductEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.destroy.pending.match),\n concatMap(({ payload }) =>\n from(api.destroy(payload)).pipe(\n map(() => actions.destroy.fulfilled(payload)),\n catchAndLogError(actions.destroy.rejected())\n )\n )\n );\n\nconst cartProductEpics = combineEpics(\n getAllCartProductsEpic,\n cartProductThumbnailEpic,\n updateCartProductQuantityEpic,\n deleteCartProductEpic\n);\nexport default cartProductEpics;\n", "import cartAPI from 'apis/cart';\n\nimport type {\n ExpandedCartProduct,\n CartProductMaybeThumb,\n CartProductForCreate,\n CartProductForUpdate,\n} from 'domains/cart_products';\n\ntype PreviewResponse = Pick<CartProductMaybeThumb, 'thumbnail_url' | 'preview_url'>;\n\nexport const all = async () => {\n const response = await cartAPI.get<CartProductMaybeThumb[]>('/products');\n return response.data;\n};\n\nexport const find = async (id: number) => {\n const response = await cartAPI.get<ExpandedCartProduct>(`/products/${id}`);\n return response.data;\n};\n\nexport const create = async (cp: CartProductForCreate) => {\n const response = await cartAPI.post<{ id: number }>('/products', cp);\n return response.data;\n};\n\nexport const update = async (cp: CartProductForUpdate) => {\n await cartAPI.patch(`/products/${cp.id}`, cp);\n return cp;\n};\n\nexport const destroy = async (id: number) => {\n await cartAPI.delete(`/products/${id}`);\n return id;\n};\n\nexport const getThumbnail = async (id: number) => {\n const response = await cartAPI.get<PreviewResponse>(`/products/${id}/preview`);\n\n if (response.status === 204) {\n throw new Error('No Thumbnail Yet');\n }\n\n return response.data;\n};\n", "import { Action } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport {\n EMPTY,\n catchError,\n concatMap,\n filter,\n forkJoin,\n from,\n ignoreElements,\n map,\n mergeMap,\n switchMap,\n withLatestFrom,\n} from 'rxjs';\n\nimport { eventsAPI } from 'apis/wos';\n\nimport { catchAndLogError } from 'utils/common';\nimport { hasFullyConfiguredCanvas } from 'utils/type_guards';\n\nimport module from './index';\nimport * as api from './cart_product_creator.api';\n\nimport canvases from 'domains/canvases';\nimport optionGroups from 'domains/option_groups';\nimport activeEditor from 'domains/active_editor';\nimport cartProducts from 'domains/cart_products';\nimport textNodes from 'domains/text_nodes';\nimport multiphotos from 'domains/multiphotos';\nimport crops from 'domains/crops';\n\nimport type { RootState } from 'store/wos_store';\n\nconst { actions, selectors } = module;\n\n/**\n * Collect data for standard & multicanvas add to cart\n *\n * The add to cart button to trigger this action should not be enabled\n * if any of the error cases could be reached, so we want to handle those specifically\n *\n * We also nest that within an observable for having a cart guid, which will get set\n * when we create a cart if one doesn't exist yet\n */\nconst addToCartEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.addToCart.ready.match),\n withLatestFrom(state$),\n map(([{ payload }, state]) =>\n canvases.selectors.selectAll(state).flatMap((canvas) => {\n if (!hasFullyConfiguredCanvas(canvas)) throw new Error('Invalid Product Configuration');\n const cp = canvases.selectors.forCreateCartProduct(state, canvas);\n cp.cart_product_options_attributes = optionGroups.selectors.forCreateCartProduct(\n state,\n canvas\n );\n\n cp.quantity = selectors.quantity(state);\n\n if (payload === 'multiphoto') {\n return multiphotos.selectors.forCreateCartProduct(state).map((mp) => ({\n ...cp,\n canvas_rotation: mp.autoRotate ? 90 : 0,\n cart_photos_attributes: [{ ...mp, autoRotate: undefined }],\n }));\n }\n\n cp.cart_photos_attributes = crops.selectors.forCreateCartProduct(state, canvas);\n\n // We don't select text nodes by canvas since text node products are disallowed\n // as multi-canvas products. We also can leave it undefined if the array is empty\n const tns = textNodes.selectors.forCreateCartProduct(state);\n if (tns.length > 0) {\n cp.cart_text_nodes_attributes = tns;\n }\n\n return cp;\n })\n ),\n mergeMap((cps) => forkJoin(cps.map(api.create))),\n map(actions.addToCart.fulfilled),\n catchAndLogError(actions.addToCart.rejected())\n );\n\n/**\n * Save a new cart product & delete the edited one.\n * Same as add to cart, but no need to check for an existing cart or multiphotos.\n */\nconst saveEditedCartProductEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.saveCartProductEdit.pending.match),\n withLatestFrom(state$),\n switchMap(([_, state]) => {\n const canvas = activeEditor.selectors.canvas(state);\n const editingId = canvas?.cartProductId;\n\n if (!canvas || !hasFullyConfiguredCanvas(canvas) || !editingId)\n throw new Error('Invalid Product Configuration');\n\n const cp = canvases.selectors.forCreateCartProduct(state, canvas);\n cp.cart_product_options_attributes = optionGroups.selectors.forCreateCartProduct(\n state,\n canvas\n );\n cp.cart_photos_attributes = crops.selectors.forCreateCartProduct(state, canvas);\n\n // We don't select text nodes by canvas since text node products are disallowed\n // as multi-canvas products. We also can leave it undefined if the array is empty\n const tns = textNodes.selectors.forCreateCartProduct(state);\n if (tns.length > 0) {\n cp.cart_text_nodes_attributes = tns;\n }\n\n return from(api.create(cp)).pipe(\n concatMap((update) =>\n from(api.destroy(editingId)).pipe(\n map(() => actions.saveCartProductEdit.fulfilled({ update, removeId: editingId })),\n catchAndLogError(actions.saveCartProductEdit.rejected())\n )\n )\n );\n })\n );\n\n/**\n * Fetch cart products after adding to the cart\n */\nconst addToCartGetCartProductsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.addToCart.fulfilled.match),\n map(() => cartProducts.actions.getAll.pending())\n );\n\n/**\n * Fetch the cart products after editing one\n */\nconst refreshCartProductsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.saveCartProductEdit.fulfilled.match),\n map(() => cartProducts.actions.getAll.pending())\n );\n\nconst sendAddToCartEventEpic: Epic<Action> = (action$) =>\n action$.pipe(\n filter(actions.addToCart.fulfilled.match),\n mergeMap(() => from(eventsAPI.post('', { event: 'AddToCart' })).pipe(catchError(() => EMPTY))),\n ignoreElements()\n );\n\nconst combined = combineEpics(\n addToCartEpic,\n saveEditedCartProductEpic,\n addToCartGetCartProductsEpic,\n refreshCartProductsEpic,\n sendAddToCartEventEpic\n);\nexport default combined;\n", "import cartAPI from 'apis/cart';\n\nimport type { CartProductForCreate } from 'domains/cart_products';\n\nexport const create = async (cp: CartProductForCreate) => {\n const { data } = await cartAPI.post<{ id: number }>('/products', cp);\n return data;\n};\n\nexport const destroy = async (id: number) => {\n await cartAPI.delete(`/products/${id}`);\n return id;\n};\n", "import { combineEpics } from 'redux-observable';\nimport { nanoid } from '@reduxjs/toolkit';\nimport { keyBy } from 'lodash';\nimport { combineLatest, filter, from, map, mergeMap, switchMap, take, withLatestFrom } from 'rxjs';\n\nimport { byId, catchAndLogError, pluckPayload } from 'utils/common';\nimport { notNull } from 'utils/type_guards';\n\nimport module from './index';\n\nimport * as api from './cart_product_editor.api';\n\nimport cropsModule from 'domains/crops';\nimport subcatalogsModule from 'domains/subcatalogs';\nimport productsModule from 'domains/products';\nimport optionGroupModule from 'domains/option_groups';\nimport photoModule from 'domains/photos';\nimport navigation from 'domains/navigation';\nimport cartProducts from 'domains/cart_products';\nimport textNodes from 'domains/text_nodes';\n\nimport type { Epic } from 'redux-observable';\nimport type { Action } from '@reduxjs/toolkit';\nimport type { CheckoutRootState } from 'store/checkout_store';\nimport type { RootState } from 'store/wos_store';\nimport type { CanvasOptionConfiguration } from 'domains/canvases';\nimport type { TextNodeEntity } from 'domains/text_nodes';\n\nconst { actions } = module;\n\ntype CartProductEpic = Epic<Action, Action, RootState | CheckoutRootState>;\n\n/**\n * Fetch the cart product, this endpoint provides more data\n * than we have from the index endpoint\n */\nconst editCartProductEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.pending.match),\n map(pluckPayload),\n mergeMap((id) =>\n from(api.find(id)).pipe(map(actions.cartProductReady), catchAndLogError(actions.rejected()))\n )\n );\n\n/** Fetch the subcatalogs when we have the cart product */\nconst subcatalogsForCartProductEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.cartProductReady.match),\n map(({ payload }) => payload.catalog_api_id),\n map(subcatalogsModule.actions.fetchSubcatalogs.pending)\n );\n\n/** Fetch the optionGroups when we have the cart product */\nconst optionsForCartProductEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.cartProductReady.match),\n map(({ payload }) => payload.product_api_id),\n map(optionGroupModule.actions.fetchOptionGroups.pending)\n );\n\n/**\n * Fetch all photos\n */\nconst photosForCartProductEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.pending.match),\n map(() => photoModule.actions.getAll.pending())\n );\n\n/**\n * Build a valid canvas from the data on a cart product\n */\nconst canvasForCartProductEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.pending.match),\n switchMap(() =>\n combineLatest([\n action$.pipe(filter(actions.cartProductReady.match), take(1), map(pluckPayload)),\n action$.pipe(\n filter(optionGroupModule.actions.fetchOptionGroups.fulfilled.match),\n take(1),\n map(pluckPayload)\n ),\n ])\n ),\n map(([cp, optionGroupResponse]) => {\n const options = optionGroupResponse.optionGroups.flatMap((og) => og.options);\n\n const canvasOptions = cp.options.reduce((acc: CanvasOptionConfiguration, cpo) => {\n const option = options.find((o) => o.id === cpo.option_api_id);\n if (!option) throw new Error('No Matching Catalog Option for this API ID');\n\n acc[option.parent_id] = option.id;\n return acc;\n }, {});\n\n // Crate options are not saved on the cart product, but as they are required we need to\n // get them back on the canvas so it is considered valid\n const includedOptionGroupIds = Object.keys(canvasOptions);\n optionGroupResponse.optionGroups\n .filter((og) => og.required && !includedOptionGroupIds.includes(og.id.toString()))\n .forEach((og) => {\n canvasOptions[og.id] = optionGroupModule.utils.findDefaultOptionId(og.options);\n });\n\n return {\n id: nanoid(),\n cartProductId: cp.id,\n catalog: cp.catalog_api_id,\n subcatalog: cp.sub_catalog_api_id,\n product: cp.product_api_id,\n options: canvasOptions,\n position: { x: 0, y: 0 },\n rotation: cp.canvas_rotation,\n userRotated: true,\n borderColor: cp.border_color || undefined,\n height: cp.custom_size.height ? parseFloat(cp.custom_size.height) : undefined,\n width: cp.custom_size.width ? parseFloat(cp.custom_size.width) : undefined,\n };\n }),\n map(actions.canvasReady)\n );\n\n/**\n * Set up crops for a cart product\n */\nconst cropsForCartProductEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.pending.match),\n switchMap(() =>\n combineLatest([\n action$.pipe(filter(actions.cartProductReady.match), take(1), map(pluckPayload)),\n action$.pipe(filter(actions.canvasReady.match), take(1), map(pluckPayload)),\n action$.pipe(filter(subcatalogsModule.actions.fetchSubcatalogs.fulfilled.match), take(1)),\n action$.pipe(filter(photoModule.actions.getAll.fulfilled.match), take(1)),\n ])\n ),\n withLatestFrom(state$),\n map(([[cp, canvas], state]) => {\n const product = productsModule.selectors.selectById(state, cp.product_api_id);\n if (!product) throw new Error('No Matching Catalog Product for this API ID');\n const nodesById = keyBy(product.nodes, 'id');\n\n return cp.photos.map((cpp) => ({\n crop: cpp.crop,\n filter: cropsModule.utils.cartProductFilterToCropFilter(cpp.style_filter),\n canvasId: canvas.id,\n uid: nodesById[cpp.node_id].uid,\n photoId: Number(cpp.external_asset_id),\n }));\n }),\n map((cps) =>\n cps.length > 0\n ? cropsModule.actions.restoreCartProductPhotoCrops.pending(cps)\n : cropsModule.actions.restoreCartProductPhotoCrops.fulfilled([])\n )\n );\n\n/**\n * Set the active collection when loading a cart product's photos\n */\nconst assignEditCartProductCollection: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.pending.match),\n switchMap(() =>\n combineLatest([\n action$.pipe(filter(actions.cartProductReady.match), take(1), map(pluckPayload)),\n action$.pipe(\n filter(photoModule.actions.getAll.fulfilled.match),\n take(1),\n map(pluckPayload)\n ),\n ])\n ),\n filter(([cp, photos]) => cp.photos.length > 0),\n map(([cp, photos]) => ({ id: Number(cp.photos[0].external_asset_id), photos })),\n map(({ id, photos }) => photos.find(byId(id))),\n filter(notNull),\n map((photo) => photoModule.actions.setActiveCollection(photo.collection))\n );\n\nconst textNodesForCartProductEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.pending.match),\n switchMap(() =>\n combineLatest([\n action$.pipe(filter(actions.cartProductReady.match), take(1), map(pluckPayload)),\n action$.pipe(filter(subcatalogsModule.actions.fetchSubcatalogs.fulfilled.match), take(1)),\n ])\n ),\n withLatestFrom(state$),\n map(([[cp], state]) => {\n const product = productsModule.selectors.selectById(state, cp.product_api_id);\n if (!product) throw new Error('No Matching Catalog Product for this API ID');\n const nodesById = keyBy(product.nodes, 'id');\n\n return cp.text_nodes.map(\n (tn): TextNodeEntity => ({\n id: nodesById[tn.node_id].uid,\n fontFamily: tn.font_family,\n fontSize: tn.font_size,\n textColor: tn.text_color,\n horizontalAlignment: tn.text_horizontal_alignment,\n verticalAlignment: tn.text_vertical_alignment,\n textContent: tn.text_content,\n autofit: tn.auto_fit,\n })\n );\n }),\n filter((tns) => tns.length > 0),\n map(textNodes.actions.addCartProductTextNodes)\n );\n\n/** Dispatch action acknowledging we have all the data we need */\nconst completeEditCartProductSetupEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.pending.match),\n switchMap(() =>\n combineLatest([\n action$.pipe(filter(actions.cartProductReady.match), take(1)),\n action$.pipe(filter(actions.canvasReady.match), take(1)),\n action$.pipe(\n filter(cropsModule.actions.restoreCartProductPhotoCrops.fulfilled.match),\n take(1)\n ),\n ])\n ),\n map(() => actions.setupComplete())\n );\n\n/**\n * Since navigation is handled in a thunk dispatched from a component,\n * we have to listen to the underlying navigation action to reset the\n * edit setup status so we can navigate back to the cart page\n */\nconst resetEditCartProductEpic: CartProductEpic = (action$) =>\n action$.pipe(\n filter(actions.setupComplete.match),\n switchMap(() =>\n action$.pipe(\n filter(navigation.actions.updateCurrentRoute.match),\n filter(({ payload }) => payload === 'editor'),\n map(() => actions.resetEditStatus())\n )\n )\n );\n\nconst combined = combineEpics(\n editCartProductEpic,\n subcatalogsForCartProductEpic,\n optionsForCartProductEpic,\n photosForCartProductEpic,\n canvasForCartProductEpic,\n cropsForCartProductEpic,\n textNodesForCartProductEpic,\n completeEditCartProductSetupEpic,\n resetEditCartProductEpic,\n assignEditCartProductCollection\n);\nexport default combined;\n", "import cartAPI from 'apis/cart';\n\nimport type { ExpandedCartProduct } from 'domains/cart_products';\n\nexport const find = async (id: number) => {\n const { data } = await cartAPI.get<ExpandedCartProduct>(`/products/${id}`);\n return data;\n};\n", "import { combineEpics } from 'redux-observable';\nimport { filter, from, map, switchMap, withLatestFrom } from 'rxjs';\n\nimport module from './index';\n\nimport optionGroupsModule from 'domains/option_groups';\nimport products from 'domains/products';\n\nimport OrderApi from 'models/order_api';\n\nimport { byId, catchAndLogError } from 'utils/common';\nimport { notNull } from 'utils/type_guards';\n\nimport type { Epic } from 'redux-observable';\nimport type { Action } from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\nimport type { OptionalPair } from 'types/common_types';\n\nconst { actions, selectors } = module;\n\n/**\n * If we change to a custom size product, we need to initialize the size and set rotation to 0\n */\nconst initializeCustomSizeEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.changeActiveCanvasConfig.product.match),\n withLatestFrom(state$),\n map(([action, state]) => {\n const product = products.selectors.selectById(state, action.payload);\n if (!product || !products.utils.isCustomSizeProduct(product)) return;\n\n return product;\n }),\n filter(notNull),\n map((p) =>\n actions.changeActiveCanvasConfig.size({\n height: parseFloat(p.print_size_y),\n width: parseFloat(p.print_size_x),\n })\n )\n );\n\n/**\n * If the active product changes to a standard size, and we have custom size data, clear it\n */\nconst tearDownCustomSizeEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.changeActiveCanvasConfig.product.match),\n withLatestFrom(state$),\n map(([action, state]) => {\n const product = products.selectors.selectById(state, action.payload);\n if (!product || products.utils.isCustomSizeProduct(product)) return;\n\n return state;\n }),\n filter(notNull),\n map(() => {\n return {\n customPrice: undefined,\n customOptionPrices: undefined,\n height: undefined,\n width: undefined,\n };\n }),\n map(actions.updateCanvas)\n );\n\n/**\n * Fetch the product price for this custom size\n */\nconst customSizeProductPriceEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.calculateCustomPrice.pending.match),\n switchMap(({ payload }) => {\n const { size, product } = payload;\n const billingCode = product.billing_code;\n return from(OrderApi.getCustomSizePrice(size.width, size.height, billingCode)).pipe(\n map((response) => actions.calculateCustomPrice.fulfilled(response.cost.toFixed(2))),\n catchAndLogError(actions.calculateCustomPrice.rejected())\n );\n })\n );\n\n/**\n * Enable/disable any options based on the custom size change\n */\nconst customSizeOptionsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.calculateCustomOptionPrices.pending.match),\n map(({ payload }) => {\n const { size, optionGroups, configuredOptions } = payload;\n\n const disabledChanges: OptionalPair<number, number>[] = Object.entries(configuredOptions)\n // Collect any options that need disabled at this new size\n .map(([ogid, oid]) => {\n const og = optionGroups.find(byId(parseInt(ogid)));\n if (!og || !oid) return null;\n\n const o = og.options.find(byId(oid));\n if (!o || !o.custom_options) return null;\n\n if (\n !optionGroupsModule.utils.customSizeOptionIsDisabled(\n size.height,\n size.width,\n o.custom_options\n )\n )\n return null;\n\n return { og, o };\n })\n .filter(notNull)\n // Handle selecting new options in place of the disabled option\n .map(({ og, o }) => {\n const isCrateOrFreight = optionGroupsModule.utils.isCrateOrFreightOptionGroup(og);\n if (og.required && !isCrateOrFreight) {\n const oid = optionGroupsModule.utils.findDefaultOptionForCustomSize(og, size);\n return [og.id, oid];\n } else if (isCrateOrFreight) {\n const matchingCrateOption =\n optionGroupsModule.utils.findDefaultCrateOptionForCustomSize(og, size);\n return [og.id, matchingCrateOption];\n } else {\n return [og.id, undefined];\n }\n });\n\n return disabledChanges;\n }),\n map((options) => actions.changeActiveCanvasConfig.options({ options }))\n );\n\nconst combined = combineEpics(\n initializeCustomSizeEpic,\n tearDownCustomSizeEpic,\n customSizeProductPriceEpic,\n customSizeOptionsEpic\n);\nexport default combined;\n", "import { Action } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport { filter, from, map, switchMap } from 'rxjs';\n\nimport { catchAndLogError } from 'utils/common';\n\nimport actions from './catalogs.actions';\nimport * as apis from './catalogs.api';\n\nconst { getAllShallow, getAllDeep } = actions;\n\n/** Fetch shallow catalogs */\nexport const getShallowCatalogsEpic: Epic<Action, Action> = (action$) =>\n action$.pipe(\n filter(getAllShallow.pending.match),\n switchMap(() =>\n from(apis.allShallow()).pipe(\n map(getAllShallow.fulfilled),\n catchAndLogError(getAllShallow.rejected())\n )\n )\n );\n\n/** Fetch deep catalogs */\nexport const getDeepCatalogsEpic: Epic<Action, Action> = (action$) =>\n action$.pipe(\n filter(getAllDeep.pending.match),\n switchMap(() =>\n from(apis.allDeep()).pipe(map(getAllDeep.fulfilled), catchAndLogError(getAllDeep.rejected()))\n )\n );\n\nconst combined = combineEpics(getShallowCatalogsEpic, getDeepCatalogsEpic);\nexport default combined;\n", "import catalog from 'apis/catalog';\n\nimport { RawCatalogAPIData } from 'types/catalog_types';\n\nexport const allShallow = async () => {\n const { data } = await catalog.get<RawCatalogAPIData[]>('/templates.json?shallow=true');\n return data;\n};\n\n// Used in link generator -- slow, so don't use it for anything customer facing\nexport const allDeep = async () => {\n const { data } = await catalog.get<RawCatalogAPIData[]>('/templates.json');\n return data;\n};\n", "import { isAxiosError } from 'axios';\nimport { combineEpics } from 'redux-observable';\nimport {\n defer,\n filter,\n forkJoin,\n from,\n map,\n Observable,\n of,\n retry,\n switchMap,\n takeUntil,\n timer,\n withLatestFrom,\n} from 'rxjs';\n\nimport module from './index';\n\nimport photoModule from 'domains/photos';\n\nimport activeEditor from 'domains/active_editor';\n\nimport { notNull } from 'utils/type_guards';\nimport { fetchPhotoBlob, loadBlobAsImage } from 'utils/image_load';\nimport { imageFilters } from 'utils/image_util';\nimport { catchAndLogError } from 'utils/common';\n\nimport type { Action } from '@reduxjs/toolkit';\nimport type { Epic } from 'redux-observable';\nimport type { RootState } from 'store/wos_store';\nimport type { CropEntity } from './crops.types';\n\nconst { actions, selectors, utils } = module;\n\ntype CropEpic = Epic<Action, Action, RootState>;\n\nfunction fromBlobSrc(src: string) {\n return defer(() => fetchPhotoBlob(src)).pipe(\n retry({\n delay: (error, retries) => {\n // If the error is a 403, the preview image is not available yet\n if (isAxiosError(error) && error.response?.status === 403 && retries < 10) {\n return timer(2000 + 500 * retries);\n }\n\n // If the error was anything else, or the retry limit was hit,\n // we will catch this error in the epic and dispatch the necessary action\n throw error;\n },\n }),\n map((blob) => URL.createObjectURL(blob))\n );\n}\n\n// Init the active image node once we have nodes\nconst initializeActiveImageNode: CropEpic = (_, state$) =>\n state$.pipe(\n filter((state) => !selectors.activeImageNode(state)),\n map((state) => {\n const canvasId = activeEditor.selectors.canvasId(state);\n const product = activeEditor.selectors.product(state);\n const cropsById = selectors.selectEntities(state);\n\n if (!canvasId || !product) return null;\n\n return utils.findNextAvailableCropId(cropsById, product, canvasId);\n }),\n filter(notNull),\n map((cropId) => actions.setActiveImageNode(utils.parseCropId(cropId).nodeUid))\n );\n\n/**\n * Fetches a blob for an uploaded photo to be used in a crop\n */\nexport const fetchCropPhotoEpic: CropEpic = (action$, state$) =>\n action$.pipe(\n // Only continue when creating a crop\n filter(actions.createCrop.match),\n // switchmap to cancel previous\n switchMap(({ payload }) =>\n of(state$.value).pipe(\n // takeUntil to throw out the previous if we get a second createCrop action for the same canvas/node\n takeUntil(\n action$.pipe(\n filter((action) => {\n return (\n actions.createCrop.match(action) &&\n action.payload.canvasId === payload.canvasId &&\n action.payload.nodeUid === payload.nodeUid\n );\n })\n )\n ),\n map((state) => photoModule.selectors.selectById(state, payload.photoId)),\n filter(notNull),\n switchMap((photo) =>\n fromBlobSrc(photo.file_path_1024).pipe(\n map((blobSrc) => actions.fetchCropPhoto.fulfilled({ ...payload, blobSrc })),\n catchAndLogError(actions.fetchCropPhoto.rejected({ ...payload }))\n )\n )\n )\n )\n );\n\n/**\n * Fetches a blob for a filtered image\n */\nexport const fetchCropFilterPhotoEpic: CropEpic = (action$, state$) =>\n action$.pipe(\n filter(actions.filterCrop.match),\n switchMap(({ payload }) =>\n of(state$.value).pipe(\n takeUntil(\n action$.pipe(\n filter(\n (action) =>\n actions.filterCrop.match(action) && action.payload.crop.id === payload.crop.id\n )\n )\n ),\n map((state) => photoModule.selectors.selectById(state, payload.crop.photoId)),\n filter(notNull),\n map((photo) => photo[payload.filter.filePathFull]),\n switchMap((src) =>\n fromBlobSrc(src).pipe(\n map((blobSrc) => actions.fetchCropFilterPhoto.fulfilled({ ...payload.crop, blobSrc })),\n catchAndLogError(actions.fetchCropFilterPhoto.rejected({ ...payload.crop }))\n )\n )\n )\n )\n );\n\n/**\n * Rebuild the crops from a cart product, including loading the blob image\n */\nexport const restoreCartProductCropsEpic: CropEpic = (action$, state$) =>\n action$.pipe(\n filter(actions.restoreCartProductPhotoCrops.pending.match),\n withLatestFrom(state$),\n map(([{ payload }, state]) => {\n const photosById = photoModule.selectors.selectEntities(state);\n return payload\n .map((cpp) => {\n const photo = photosById[cpp.photoId];\n if (!photo) return null;\n\n const path = imageFilters.find((f) => f.filterType === cpp.filter);\n if (!path) return null;\n\n return { ...cpp, src: photo[path.filePathFull] };\n })\n .filter(notNull);\n }),\n switchMap((cpps) =>\n forkJoin(\n cpps.map(\n (cpp): Observable<CropEntity> =>\n from(loadBlobAsImage(cpp.src, cpp.crop.rotation)).pipe(\n map((image) => ({\n dimension: { height: image.naturalHeight, width: image.naturalWidth },\n src: image.src,\n })),\n map(({ dimension, src }) => ({\n ...utils.restoreCartProductPhotoCrop(cpp.crop, dimension),\n id: utils.buildCropId(cpp.canvasId, cpp.uid),\n canvasId: cpp.canvasId,\n nodeUid: cpp.uid,\n photoId: cpp.photoId,\n blobSrc: src,\n photoLoaded: true,\n filter: cpp.filter,\n originalH: dimension.height,\n originalW: dimension.width,\n }))\n )\n )\n )\n ),\n map(actions.restoreCartProductPhotoCrops.fulfilled)\n );\n\nconst cropEpics = combineEpics(\n initializeActiveImageNode,\n fetchCropPhotoEpic,\n fetchCropFilterPhotoEpic,\n restoreCartProductCropsEpic\n);\nexport default cropEpics;\n", "import { combineEpics } from 'redux-observable';\nimport { concatMap, filter, from, map, mergeMap, of, switchMap, withLatestFrom } from 'rxjs';\n\nimport * as optionGroupAPI from './option_groups.api';\n\nimport { catchAndLogError } from 'utils/common';\n\nimport module from './index';\n\nimport type { Epic } from 'redux-observable';\nimport type { Action } from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\nimport type { LGRootState } from 'store/link_generator_store';\n\nconst { actions, selectors } = module;\n\n/**\n * Dispatches an action to fetch an option group set for an array of template IDs\n */\nexport const fetchManyOptionGroupsEpic: Epic<Action, Action, RootState | LGRootState> = (action$) =>\n action$.pipe(\n filter(actions.fetchManyOptionGroups.match),\n concatMap(({ payload }) => payload.map((id) => actions.fetchOptionGroups.pending(id)))\n );\n\nexport const fetchOrderOptionsEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.fetchOrderOptions.pending.match),\n withLatestFrom(state$),\n switchMap(([, state]) => {\n const ogs = selectors.allOrderOptions(state);\n\n if (ogs.length > 0) {\n return of(actions.fetchOrderOptions.fulfilled(ogs));\n }\n\n return from(optionGroupAPI.orderOptionGroups()).pipe(\n map((res) => actions.fetchOrderOptions.fulfilled(res)),\n catchAndLogError(actions.fetchOrderOptions.rejected())\n );\n })\n );\n/**\n * Performs the fetch for option groups\n *\n * Responds with the values in state if already fetched\n */\nexport const fetchOptionGroupEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.fetchOptionGroups.pending.match),\n mergeMap(({ payload }) => {\n const productId = payload;\n const ogs = selectors.forTemplateId(state$.value, productId);\n\n if (ogs.length > 0) {\n return of(\n actions.fetchOptionGroups.fulfilled({ optionGroups: ogs, templateId: productId })\n );\n }\n\n return from(optionGroupAPI.allByTemplateId(productId)).pipe(\n map((res) =>\n actions.fetchOptionGroups.fulfilled({ optionGroups: res, templateId: productId })\n ),\n catchAndLogError(actions.fetchOptionGroups.rejected())\n );\n })\n );\n\nconst combined = combineEpics(\n fetchOptionGroupEpic,\n fetchManyOptionGroupsEpic,\n fetchOrderOptionsEpic\n);\nexport default combined;\n", "import { Epic, combineEpics } from 'redux-observable';\nimport { filter, from, ignoreElements, map, mergeMap, of, switchMap, withLatestFrom } from 'rxjs';\n\nimport { catchAndLogError } from 'utils/common';\nimport { notNull } from 'utils/type_guards';\nimport { LOCALSTORAGE_COLLECTION_KEY } from 'utils/globals';\n\nimport session from 'domains/session';\n\nimport module from './index';\nimport * as photosAPI from './photos.api';\n\nimport type { Action } from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\n\nconst { actions, selectors } = module;\n\nexport const getAllPhotosEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.getAll.pending.match),\n switchMap(() =>\n from(photosAPI.all()).pipe(\n map((photos) => actions.getAll.fulfilled(photos)),\n catchAndLogError(actions.getAll.rejected)\n )\n )\n );\n\n/**\n * Take filestack upload data & save to API with a collection name\n */\nexport const uploadPhotosEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.uploadPhotos.pending.match),\n withLatestFrom(state$),\n mergeMap(([{ payload }, state]) => {\n const isLoggedIn = session.selectors.isLoggedIn(state);\n const newCollection = selectors.newUploadsCollection(state);\n\n const DEFAULT_COLLECTION_TOKEN = '__default__';\n\n const collection = isLoggedIn\n ? newCollection || payload.collection || DEFAULT_COLLECTION_TOKEN\n : DEFAULT_COLLECTION_TOKEN;\n\n const imageUrls: string[] = [];\n const imageNames: string[] = [];\n\n payload.uploads.forEach((value) => {\n imageUrls.push(value.url);\n imageNames.push(value.filename);\n });\n\n return from(photosAPI.bulkCreate(imageUrls, imageNames, collection)).pipe(\n map((photos) => actions.uploadPhotos.fulfilled(photos)),\n catchAndLogError(actions.uploadPhotos.rejected())\n );\n })\n );\n\n/**\n * After uploading a photo, the thumbnail urls will not be in the response due to\n * background processing. This epic will refresh each photo uploaded to get the\n * thumbnail urls\n */\nexport const getNewUploadThumbnailUrlsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.uploadPhotos.fulfilled.match),\n map(({ payload }) => payload.map((p) => p.id)),\n mergeMap((ids) => from(ids)),\n mergeMap((id) =>\n from(photosAPI.find(id)).pipe(\n map((p) => actions.updateOne({ id, changes: p })),\n catchAndLogError()\n )\n )\n );\n\n/**\n * Sort endpoint on the API requires the array of IDS in sorted order,\n * so we do that here based on the action payload of the ID of the moved photo\n * and the index in the array where it should go\n */\nexport const sortPhotosEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.sortPhotos.match),\n withLatestFrom(state$),\n mergeMap(([{ payload }, state]) => {\n const photoIds = selectors.selectIds(state) as number[]; // cast is ok, we know these ids are numbers\n const moved = selectors.selectById(state, payload.insertPhotoId);\n\n if (!moved) throw new Error(`No Photo with ID ${payload.insertPhotoId}`);\n\n const spliceFrom = moved.sort_index;\n\n let spliceAt;\n if (payload.beforeIndex === -1) {\n // Moving to end of list\n spliceAt = photoIds.length - 1;\n } else if (spliceFrom > payload.beforeIndex) {\n // Moving to left, don't account for moved photo's space\n spliceAt = payload.beforeIndex;\n } else {\n // Moving to right, need to account for sorted photo's space in the array\n spliceAt = payload.beforeIndex - 1;\n }\n\n const spliced = [...photoIds];\n spliced.splice(spliceFrom, 1);\n spliced.splice(spliceAt, 0, payload.insertPhotoId);\n\n return from(photosAPI.sort(spliced)).pipe(\n map(() => spliced.map((id, index) => ({ id, changes: { id, sort_index: index } }))),\n map((updatePayload) => actions.updateMany(updatePayload)),\n catchAndLogError()\n );\n })\n );\n\n/**\n * Take all uncollected photos and add them to a new collection\n */\nexport const moveUncollectedToCollectionEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.moveUncollectedToCollection.match),\n withLatestFrom(state$),\n mergeMap(([{ payload }, state]) =>\n selectors\n .allUncollected(state)\n .map(({ id }) => actions.update.pending({ id, collection: payload }))\n )\n );\n\n/**\n * When saving uncollected as a new collection, set active collection to the new one\n */\nexport const setActiveCollectionOnMoveUncollectedEpic: Epic<Action, Action, RootState> = (\n action$\n) =>\n action$.pipe(\n filter(actions.moveUncollectedToCollection.match),\n map(({ payload }) => actions.setActiveCollection(payload))\n );\n\n/**\n * Creates a new collection\n */\nexport const createCollectionEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.createNewCollection.match),\n // Handling for this is covered by slice reducers, no need for additional actions\n filter(({ payload }) => payload.action !== 'create_from_upload'),\n mergeMap(({ payload }) => {\n switch (payload.action) {\n case 'create_from_existing':\n return payload.donorIds.map((id) =>\n actions.update.pending({ id, collection: payload.name })\n );\n case 'create_from_orphans':\n return of(actions.moveUncollectedToCollection(payload.name));\n default:\n return of(null);\n }\n }),\n filter(notNull)\n );\n\n/**\n * Change the name of a collection\n */\nexport const renameCollectionPhotosEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.renameCollectionPhotos.pending.match),\n withLatestFrom(state$),\n mergeMap(([{ payload }, state]) =>\n from(\n Promise.all(\n selectors\n .allForCollection(state, payload.current)\n .map((p) => photosAPI.update(p.id, { id: p.id, collection: payload.change }))\n )\n ).pipe(map(actions.renameCollectionPhotos.fulfilled))\n )\n );\n\n/**\n * Map update photo action to API request\n */\nexport const updatePhotoEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.update.pending.match),\n mergeMap(({ payload }) =>\n from(photosAPI.update(payload.id, payload)).pipe(\n map((p) => actions.update.fulfilled(p)),\n catchAndLogError(actions.update.rejected)\n )\n )\n );\n\n/**\n * Delete a photo on the API\n */\nexport const removePhotoEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.removePhoto.pending.match),\n withLatestFrom(state$),\n map(([{ payload }, state]) => selectors.selectById(state, payload)),\n filter(notNull),\n mergeMap((photo) =>\n from(photosAPI.destroy(photo.id)).pipe(\n map(() => actions.removePhoto.fulfilled(photo)),\n catchAndLogError(actions.removePhoto.rejected)\n )\n )\n );\n\n/**\n * Map removeAllForCollection action to removeManyPhotos\n */\nexport const removeAllPhotosForCollectionEpic: Epic<Action, Action, RootState> = (\n action$,\n state$\n) =>\n action$.pipe(\n filter(actions.removeAllForCollection.match),\n withLatestFrom(state$),\n map(([{ payload }, state]) => {\n const ids = selectors.allForCollection(state, payload).map((p) => p.id);\n return actions.removeManyPhotos.pending(ids);\n })\n );\n\n/**\n * Delete multiple photos on the API\n */\nexport const removeManyPhotosEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.removeManyPhotos.pending.match),\n mergeMap(({ payload }) =>\n from(photosAPI.destroyMany(payload)).pipe(\n map(() => actions.removeManyPhotos.fulfilled(payload)),\n catchAndLogError(actions.removeManyPhotos.rejected)\n )\n )\n );\n\n/**\n * If a removed photo was the last of the active collection, or if an entire collection was removed,\n * set the active collection to the first remaining collection found,\n * otherwise the uncollected collection\n */\nexport const postDeletePhotoUpdateActiveCollectionEpic: Epic<Action, Action, RootState> = (\n action$,\n state$\n) =>\n action$.pipe(\n filter(\n (action) =>\n actions.removePhoto.fulfilled.match(action) ||\n actions.removeManyPhotos.fulfilled.match(action)\n ),\n withLatestFrom(state$),\n map(([_, state]) => {\n const activeCollection = selectors.activeCollection(state);\n const remaining = selectors.allForCollection(state, activeCollection);\n\n if (remaining.length === 0) {\n const remaining = selectors.allCollectionNames(state);\n return actions.setActiveCollection(remaining[0] || null);\n }\n }),\n filter(notNull)\n );\n\n/**\n * Populate active collection with the local storage saved value\n */\nexport const getSavedActiveCollectionEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(session.actions.getSession.fulfilled.match),\n filter(({ payload }) => !!payload.customer_num),\n map(() => localStorage.getItem(LOCALSTORAGE_COLLECTION_KEY)),\n filter(notNull),\n map(actions.setActiveCollection)\n );\n\n/**\n * Set/unset the selected active collection in localstorage\n */\nexport const setLocalStorageActiveCollectionEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.setActiveCollection.match),\n map(({ payload }) => {\n if (payload) {\n localStorage.setItem(LOCALSTORAGE_COLLECTION_KEY, payload);\n } else {\n localStorage.removeItem(LOCALSTORAGE_COLLECTION_KEY);\n }\n }),\n ignoreElements()\n );\n\nconst combined = combineEpics(\n getAllPhotosEpic,\n uploadPhotosEpic,\n getNewUploadThumbnailUrlsEpic,\n sortPhotosEpic,\n moveUncollectedToCollectionEpic,\n setActiveCollectionOnMoveUncollectedEpic,\n renameCollectionPhotosEpic,\n createCollectionEpic,\n updatePhotoEpic,\n removePhotoEpic,\n removeAllPhotosForCollectionEpic,\n removeManyPhotosEpic,\n postDeletePhotoUpdateActiveCollectionEpic,\n getSavedActiveCollectionEpic,\n setLocalStorageActiveCollectionEpic\n);\nexport default combined;\n", "import wos from 'apis/wos';\nimport { PhotoUpload } from '.';\n\nexport const bulkCreate = async (imageUrls: string[], imageNames: string[], collection: string) => {\n const { data } = await wos.post<PhotoUpload[]>('/uploads/bulk_create.json', {\n imageUrls,\n imageNames,\n collection,\n });\n\n return data;\n};\n\nexport const all = async () => {\n const { data } = await wos.get<PhotoUpload[]>('/uploads.json');\n return data;\n};\n\nexport const find = async (id: number) => {\n const { data } = await wos.get<PhotoUpload>(`/uploads/${id}.json`);\n return data;\n};\n\nexport const update = async (id: number, upload: Partial<PhotoUpload>) => {\n const { data } = await wos.put<PhotoUpload>(`/uploads/${id}.json`, { upload });\n return data;\n};\n\nexport const sort = async (ids: number[]) => {\n const params = `ids=${encodeURIComponent(ids.join(','))}`;\n const headers = { 'content-type': 'application/x-www-form-urlencoded;charset=utf-8' };\n\n await wos.post('/uploads/set_order.json', params, { headers });\n return;\n};\n\nexport const destroy = async (id: number) => {\n await wos.delete(`/uploads/${id}.json`);\n return;\n};\n\nexport const destroyMany = async (ids: number[]) => {\n await Promise.all(ids.map((id) => destroy(id)));\n return;\n};\n", "import { combineEpics } from 'redux-observable';\nimport { concatMap, delay, filter, from, map, mergeMap, take, withLatestFrom } from 'rxjs';\n\nimport navigation from 'domains/navigation';\nimport cartModule from 'domains/cart';\nimport cartBilling from 'domains/cart_billing';\nimport cartProducts from 'domains/cart_products';\nimport session from 'domains/session';\n\nimport * as projectsAPI from './projects.api';\n\nimport projects from './index';\n\nimport { catchAndLogError } from 'utils/common';\n\nimport type { Epic } from 'redux-observable';\nimport type { Action } from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\n\nconst { actions } = projects;\n\n/**\n * The first time we view the cart as a logged in user, fetch projects\n */\nexport const startGetProjectsEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n withLatestFrom(state$),\n map(([, state]) => state),\n filter((state) => session.selectors.isLoggedIn(state)),\n filter((state) => navigation.selectors.showCart(state)),\n take(1),\n map(() => actions.getAll.pending())\n );\n\nexport const getProjectsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.getAll.pending.match),\n mergeMap(() =>\n from(projectsAPI.all()).pipe(\n map(actions.getAll.fulfilled),\n catchAndLogError(actions.getAll.rejected())\n )\n )\n );\n\n/**\n * Creates a project, which turns the original cart into a source template,\n * then restores that project as a new version which becomes the user's cart\n */\nexport const createProjectEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.create.pending.match),\n mergeMap(({ payload }) =>\n from(projectsAPI.create(payload)).pipe(\n map(actions.create.fulfilled),\n catchAndLogError(actions.create.rejected())\n )\n )\n );\n\n/**\n * Refresh the projects once a new one has been created\n */\nexport const refreshProjectsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.create.fulfilled.match),\n mergeMap(() => from(projectsAPI.all()).pipe(map(actions.addMany), catchAndLogError()))\n );\n\n/**\n * Maps the createProject.fulfilled action to the restore action\n */\nexport const mapCreateToRestoreProjectEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.create.fulfilled.match),\n map(({ payload }) => actions.restore.pending(payload))\n );\n\n/**\n * Update the name/description of a project\n */\nexport const updateProjectEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.update.pending.match),\n map(({ payload }) => {\n if (payload.description === '') {\n payload.description = undefined;\n }\n\n return payload;\n }),\n mergeMap((payload) =>\n from(projectsAPI.update(payload)).pipe(\n map(() => actions.update.fulfilled(payload)),\n catchAndLogError(actions.update.rejected())\n )\n )\n );\n\n/**\n * Sets a new cart based on the source cart of a project\n */\nexport const restoreProjectEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.restore.pending.match),\n mergeMap(({ payload }) =>\n from(projectsAPI.restore(payload)).pipe(\n mergeMap(() => from([cartModule.actions.get.pending(), cartProducts.actions.reset()])),\n catchAndLogError(actions.restore.rejected())\n )\n )\n );\n\n/**\n * When both a restore project action and a following get cart action come through,\n * refresh the cart products and billing details\n */\nexport const restoreProjectGetCartProductsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.restore.pending.match),\n mergeMap(() =>\n action$.pipe(\n filter(cartModule.actions.get.fulfilled.match),\n take(1),\n concatMap(() =>\n from([\n cartBilling.actions.get.pending(),\n cartProducts.actions.getAll.pending(),\n actions.restore.fulfilled(),\n ])\n )\n )\n )\n );\n\n/**\n * After we restore, we usually will need to do some redirection/reloading\n * triggered by the change in restore status. So we just wait a beat, then reset\n * the status for the next time we restore\n */\nexport const resetRestoreStatusEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.restore.fulfilled.match),\n delay(500),\n map(() => actions.resetRestoreStatus())\n );\n\nexport const deleteProjectEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.destroy.pending.match),\n mergeMap(({ payload }) =>\n from(projectsAPI.destroy(payload.guid)).pipe(\n map(() => actions.destroy.fulfilled(payload.id)),\n catchAndLogError(actions.destroy.rejected())\n )\n )\n );\n\nexport default combineEpics(\n startGetProjectsEpic,\n getProjectsEpic,\n createProjectEpic,\n refreshProjectsEpic,\n mapCreateToRestoreProjectEpic,\n updateProjectEpic,\n restoreProjectEpic,\n restoreProjectGetCartProductsEpic,\n resetRestoreStatusEpic,\n deleteProjectEpic\n);\n", "import wos from 'apis/wos';\nimport cart, { getCartGuidHeader, setCartGuidHeader } from 'apis/cart';\n\nimport type { Project, ProjectSaveParams } from './projects.types';\nimport type { PickRequired } from 'types/common_types';\n\nexport const all = async () => {\n const resp = await wos.get<Project[]>('/projects.json');\n return resp.data;\n};\n\n/** Returns the string for the source cart guid to restore */\nexport const create = async (project: ProjectSaveParams) => {\n const resp = await cart.post<string>('/projects', project);\n return resp.data;\n};\n\nexport const update = async (project: PickRequired<ProjectSaveParams, 'guid'>) => {\n const previousGuid = getCartGuidHeader();\n if (!previousGuid) throw new Error('No Cart Guid Header');\n\n setCartGuidHeader(project.guid);\n const response = await cart.patch<Project>('/projects', project);\n setCartGuidHeader(previousGuid);\n\n return response.data;\n};\n\nexport const destroy = async (guid: string) => {\n const previousGuid = getCartGuidHeader();\n\n setCartGuidHeader(guid);\n await cart.delete(`/projects`);\n setCartGuidHeader(previousGuid);\n};\n\n/** Sets the cart guid header for the global cart API to the restored cart */\nexport const restore = async (guid: string) => {\n setCartGuidHeader(guid);\n const resp = await cart.post<{ guid: string }>('/projects/restore');\n setCartGuidHeader(resp.data.guid);\n};\n", "import { Action, PayloadAction } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport { RootState } from 'store/wos_store';\nimport { catchError, defer, filter, from, map, mergeMap, retry, takeUntil, timer } from 'rxjs';\n\nimport { catchAndLogError } from 'utils/common';\n\nimport module from './index';\nimport utils from './saved_arrangements.utils';\nimport * as api from './saved_arrangements.api';\n\nimport type { SavedArrangement } from './saved_arrangements.types';\n\nconst { actions, selectors } = module;\n\nconst getAllArrangementsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.getAll.pending.match),\n mergeMap(() =>\n from(api.all()).pipe(\n map((res) => actions.getAll.fulfilled(res)),\n catchAndLogError(actions.getAll.rejected)\n )\n )\n );\n\nconst createArrangementEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.create.pending.match),\n map(({ payload }) => {\n return {\n ...payload,\n crops: payload.crops.map(utils.formatCropForSave),\n };\n }),\n mergeMap((payload) =>\n from(api.create(payload)).pipe(\n map((res) => actions.create.fulfilled(res)),\n catchAndLogError(actions.create.rejected)\n )\n )\n );\n\nconst updateArrangementEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.update.pending.match),\n map(({ payload }) => {\n return {\n ...payload,\n crops: payload.crops.map(utils.formatCropForSave),\n };\n }),\n mergeMap((payload) =>\n from(api.update(payload.id, payload)).pipe(\n map((res) => actions.update.fulfilled(res)),\n catchAndLogError(actions.update.rejected)\n )\n )\n );\n\nconst refreshArrangementEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(\n (action): action is PayloadAction<SavedArrangement> =>\n actions.create.fulfilled.match(action) || actions.update.fulfilled.match(action)\n ),\n map(({ payload }) => payload.id),\n mergeMap((id) =>\n // create observable for request, use defer to re-run the promise when retried\n defer(() => api.find(id)).pipe(\n retry({\n count: 5,\n delay: (error, retries) =>\n timer(5000 * retries).pipe(\n // Cancel the retries if this arrangement is removed\n takeUntil(\n action$.pipe(\n filter(actions.destroy.pending.match),\n filter(({ payload }) => payload === id)\n )\n )\n ),\n }),\n map((arrangement) => actions.updateOne({ id: arrangement.id, changes: arrangement })),\n catchAndLogError()\n )\n )\n );\n\nconst deleteArrangementEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.destroy.pending.match),\n mergeMap(({ payload }) =>\n from(api.destroy(payload)).pipe(\n map(() => actions.destroy.fulfilled(payload)),\n catchAndLogError(actions.destroy.rejected)\n )\n )\n );\n\nconst combined = combineEpics(\n getAllArrangementsEpic,\n createArrangementEpic,\n updateArrangementEpic,\n refreshArrangementEpic,\n deleteArrangementEpic\n);\nexport default combined;\n", "import type { CanvasCartPhoto } from 'types/photo_types';\nimport type { SavedArrangementCrop } from './saved_arrangements.types';\nimport { omit } from 'lodash';\n\nconst formatCropForSave = (crop: CanvasCartPhoto): SavedArrangementCrop => ({\n ...omit(crop.cartCrop, ['photo_url', 'original_filename', 'node_id']),\n canvas_id: crop.canvasId,\n node_uid: crop.nodeUid,\n});\n\nexport default {\n formatCropForSave,\n};\n", "import { Action } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport { filter, from, ignoreElements, map, switchMap } from 'rxjs';\n\nimport actions from './session.actions';\nimport * as sessionAPI from './session.api';\n\nimport { notNull } from 'utils/type_guards';\nimport reporter from 'utils/reporter';\nimport { catchAndLogError } from 'utils/common';\n\nimport type { CheckoutRootState } from 'store/checkout_store';\nimport type { RootState } from 'store/wos_store';\n\nexport const getSessionEpic: Epic<Action, Action, RootState | CheckoutRootState> = (action$) =>\n action$.pipe(\n filter(actions.getSession.pending.match),\n switchMap(() =>\n from(sessionAPI.get()).pipe(\n map((session) => actions.getSession.fulfilled(session)),\n catchAndLogError(actions.getSession.rejected)\n )\n )\n );\n\nexport const addSentryUserEpic: Epic<Action> = (action$) =>\n action$.pipe(\n filter(actions.getSession.fulfilled.match),\n filter(({ payload }) => notNull(payload.customer_num)),\n map(({ payload }) => {\n reporter.setUser({\n email: payload.customer_email,\n id: payload.customer_num.toString(),\n username: payload.customer_num.toString(),\n });\n }),\n ignoreElements()\n );\n\nconst combined = combineEpics(getSessionEpic, addSentryUserEpic);\n\nexport default combined;\n", "import wos from 'apis/wos';\n\nimport type { Session } from 'domains/session';\n\nexport const get = async () => {\n const { data } = await wos.get<Session>('/current_user.json');\n return data;\n};\n", "import { combineEpics } from 'redux-observable';\nimport { filter, from, map, of, switchMap, withLatestFrom } from 'rxjs';\n\nimport actions from './subcatalogs.actions';\nimport selectors from './subcatalogs.selectors';\nimport * as subcatalogAPI from './subcatalogs.api';\n\nimport { catchAndLogError } from 'utils/common';\n\nimport type { Epic } from 'redux-observable';\nimport type { Action } from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\nimport type { LGRootState } from 'store/link_generator_store';\n\nconst { fetchSubcatalogs } = actions;\n\n/**\n * Performs the fetch for subcatalogs/products\n *\n * Responds with the values in state if already fetched\n */\nexport const fetchSubcatalogsEpic: Epic<Action, Action, RootState | LGRootState> = (\n action$,\n state$\n) =>\n action$.pipe(\n filter(fetchSubcatalogs.pending.match),\n withLatestFrom(state$),\n switchMap(([{ payload }, state]) => {\n const catalogId = payload;\n const subcatalogs = selectors.allByCatalogId(state)[catalogId];\n\n if (subcatalogs) {\n return of(fetchSubcatalogs.fulfilled(null));\n }\n\n return from(subcatalogAPI.allByCatalogId(catalogId)).pipe(\n map((subcatalogs) => ({ subcatalogs, catalogId })),\n map(fetchSubcatalogs.fulfilled),\n catchAndLogError(fetchSubcatalogs.rejected())\n );\n })\n );\n\nconst combined = combineEpics(fetchSubcatalogsEpic);\nexport default combined;\n", "import { Action } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport { filter, from, map, mergeMap } from 'rxjs';\n\nimport { catchAndLogError } from 'utils/common';\n\nimport * as api from './svgs.api';\n\nimport actions from './svgs.actions';\nimport utils from './svgs.utils';\n\nimport type { RootState } from 'store/wos_store';\n\nconst getSVGImageEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.getSVGImage.pending.match),\n mergeMap(({ payload }) =>\n from(api.get(payload)).pipe(\n map((fetched) => {\n const svg = utils.toParseableSVG(fetched.data).querySelector('svg');\n const dataBorderColor = svg?.dataset.borderColor;\n\n return actions.getSVGImage.fulfilled({\n ...fetched,\n status: 'loaded',\n hasBorderColor: !!dataBorderColor && dataBorderColor === 'true',\n hideBorderColor: !!dataBorderColor && dataBorderColor === 'false',\n });\n }),\n catchAndLogError(actions.getSVGImage.rejected)\n )\n )\n );\nconst combined = combineEpics(getSVGImageEpic);\nexport default combined;\n", "import catalog from 'apis/catalog';\n\nimport type { RawSVGAPIData } from './svgs.types';\n\nexport const get = async (id: string) => {\n const { data } = await catalog.get<RawSVGAPIData>(`/svg_images/uid/${id}.json`);\n return data;\n};\n", "import { combineEpics } from 'redux-observable';\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n filter,\n from,\n ignoreElements,\n map,\n mergeMap,\n pipe,\n retry,\n take,\n takeUntil,\n withLatestFrom,\n} from 'rxjs';\n\nimport module from './index';\n\nimport activeEditor from 'domains/active_editor';\n\nimport { notNull } from 'utils/type_guards';\n\nimport type { Epic } from 'redux-observable';\nimport type { Action } from '@reduxjs/toolkit';\nimport type { RootState } from 'store/wos_store';\n\nconst { actions, utils } = module;\n\ntype MutationObserverResult = {\n mutation: MutationRecord;\n id: string;\n svg: SVGSVGElement;\n};\n\nfunction isTextNodeProduct() {\n return pipe(\n map(activeEditor.selectors.product),\n filter(notNull),\n distinctUntilChanged((prev, curr) => prev.id === curr.id),\n map((product) => product.nodes.filter(utils.isTextNode)),\n filter((nodes) => nodes.length !== 0)\n );\n}\n\nconst loadGoogleFontsEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n state$.pipe(\n isTextNodeProduct(),\n take(1),\n map(() => {\n const head = document.head || document.getElementsByTagName('head')[0];\n if (!head.querySelector('#googleFontImport')) {\n const style = document.createElement('style');\n const css = `@import url(\"https://fonts.googleapis.com/css?family=${utils.fontList\n .join('|')\n .split(' ')\n .join('+')}\");`;\n style.setAttribute('type', 'text/css');\n style.setAttribute('id', 'googleFontImport');\n style.appendChild(document.createTextNode(css));\n\n head.appendChild(style);\n }\n }),\n // We don't need any action out of this, it's just a side effect\n ignoreElements()\n );\n\nconst initializeTextNodeEpic: Epic<Action, Action, RootState> = (_, state$) =>\n state$.pipe(\n isTextNodeProduct(),\n map((nodes) => nodes.map((n) => ({ id: n.uid }))),\n map((payload) => actions.initializeTextNodes(payload))\n );\n\n/**\n * Sets up MutationObservers for each text node when they are\n * initialized, completing the observable for those when a new\n * set of text nodes is initialized\n */\nconst autofitTextNodesEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.initializeTextNodes.match),\n mergeMap(({ payload }) =>\n from(payload.map((node) => node.id)).pipe(\n map((id) => {\n const svg = document.querySelector<SVGSVGElement>(`#text_node--svg_${id}`);\n // Throw an error that retry can catch\n if (!svg) throw new Error('not found');\n\n return { id, svg };\n }),\n retry({ delay: 100 }),\n mergeMap(({ svg, id }) =>\n createTextNodeMutationObserver(svg, id).pipe(\n debounceTime(200),\n takeUntil(action$.pipe(filter(actions.initializeTextNodes.match)))\n )\n )\n )\n ),\n map(({ svg, id }) => {\n const adjustment = utils.getTextAutofitCorrection(svg);\n if (!adjustment) return null;\n\n return { id, adjustment };\n }),\n filter(notNull),\n withLatestFrom(state$),\n map(([adjustmentPayload, state]) => {\n const textNode = state.textNodes.entities[adjustmentPayload.id];\n return [adjustmentPayload, textNode?.autofit] as const;\n }),\n filter(([_, shouldAutofit]) => !!shouldAutofit),\n map(([adjustmentPayload, _]) => actions.autofitTextAdjustment(adjustmentPayload)),\n take(20) // until kinks are worked out, make sure we don't blow up\n );\n\nfunction createTextNodeMutationObserver(svg: SVGSVGElement, id: string) {\n const observable = new Observable<MutationObserverResult>((subscriber) => {\n const mo = new MutationObserver((mutationList) => {\n for (const mutation of mutationList) {\n subscriber.next({ mutation, id, svg });\n }\n });\n\n mo.observe(svg, {\n attributes: true,\n attributeOldValue: true,\n childList: true,\n subtree: true,\n characterDataOldValue: true,\n });\n });\n\n return observable;\n}\n\nconst combined = combineEpics(loadGoogleFontsEpic, initializeTextNodeEpic, autofitTextNodesEpic);\nexport default combined;\n", "import { Action } from '@reduxjs/toolkit';\nimport { Epic, combineEpics } from 'redux-observable';\nimport { filter, ignoreElements, tap, withLatestFrom } from 'rxjs';\n\nimport module from './index';\n\nimport { RootState } from 'store/wos_store';\n\nconst { actions, selectors } = module;\n\nconst hideBrandingEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.toggleHideBranding.match),\n withLatestFrom(state$),\n tap(([, state]) => {\n const hide = selectors.hideBranding(state);\n window.localStorage.setItem('hideBranding', hide.toString());\n }),\n ignoreElements()\n );\n\nconst showFilenamesEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.toggleShowFilenames.match),\n withLatestFrom(state$),\n tap(([, state]) => {\n const show = selectors.showFilenames(state);\n window.localStorage.setItem('showFilenames', show.toString());\n }),\n ignoreElements()\n );\n\nconst themeEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.toggleTheme.match),\n withLatestFrom(state$),\n tap(([, state]) => {\n const theme = selectors.theme(state);\n window.localStorage.setItem('theme', theme);\n }),\n ignoreElements()\n );\n\nconst combined = combineEpics(hideBrandingEpic, showFilenamesEpic, themeEpic);\n\nexport default combined;\n", "import { Action } from '@reduxjs/toolkit';\nimport { combineEpics, Epic } from 'redux-observable';\nimport { defer, filter, from, map, mergeMap, retry, takeUntil, timer, withLatestFrom } from 'rxjs';\n\nimport rooms from 'domains/wall_preview_rooms';\nimport dimensions from 'domains/stage_dimensions';\n\nimport module from './index';\nimport * as api from './wall_previews.api';\n\nconst { actions, selectors } = module;\n\nimport { catchAndLogError } from 'utils/common';\n\nimport type { RootState } from 'store/wos_store';\nimport type { SaveWallPreviewPOSTData } from './wall_previews.types';\n\ntype WosEpic = Epic<Action, Action, RootState>;\n\nconst getAllWallPreviewsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.getAll.pending.match),\n mergeMap(() =>\n from(api.all()).pipe(\n map((previews) => actions.getAll.fulfilled(previews)),\n catchAndLogError(actions.getAll.rejected())\n )\n )\n );\n\nconst destroyWallPreviewEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.destroy.pending.match),\n mergeMap(({ payload }) =>\n from(api.destroy(payload)).pipe(\n map(() => actions.destroy.fulfilled(payload)),\n catchAndLogError(actions.destroy.rejected)\n )\n )\n );\n\nconst saveWallPreviewEpic: WosEpic = (action$, state$) =>\n action$.pipe(\n filter(actions.saveWallPreview.pending.match),\n withLatestFrom(state$),\n map(([{ payload }, state]): SaveWallPreviewPOSTData => {\n const whichWallPreview = rooms.selectors.whichWallPreview(state);\n if (!whichWallPreview) throw new Error('No Wall Preview');\n\n const wallPreviewDimensions = dimensions.selectors.wallPreviewDimensions(state);\n if (!wallPreviewDimensions) throw new Error('No Wall Preview Dimensions');\n\n const products = selectors.forSave(state);\n\n return {\n name: payload || whichWallPreview.description,\n wall_preview: {\n is_user_background: whichWallPreview.type === 'user',\n background_image: whichWallPreview.fullSrc,\n background_dimensions: wallPreviewDimensions,\n products,\n },\n };\n }),\n mergeMap((payload) => {\n return from(api.create(payload)).pipe(\n map((preview) => actions.saveWallPreview.fulfilled(preview)),\n catchAndLogError(actions.saveWallPreview.rejected())\n );\n })\n );\n\nconst retryPreviewLinkEpic: WosEpic = (action$) =>\n action$.pipe(\n filter(actions.saveWallPreview.fulfilled.match),\n map(({ payload }) => payload.id),\n mergeMap((id) =>\n // create observable for request, use defer to re-run the promise when retried\n defer(() => api.get(id, true)).pipe(\n retry({\n count: 5,\n delay: (error, retries) =>\n timer(5000 * retries).pipe(\n // Cancel the retries if this preview is removed\n takeUntil(\n action$.pipe(\n filter(actions.destroy.pending.match),\n filter(({ payload }) => payload === id)\n )\n )\n ),\n }),\n map(actions.updateWallPreview),\n catchAndLogError(actions.saveWallPreview.rejected())\n )\n )\n );\n\nconst combined = combineEpics(\n getAllWallPreviewsEpic,\n destroyWallPreviewEpic,\n saveWallPreviewEpic,\n retryPreviewLinkEpic\n);\nexport default combined;\n", "import wos from 'apis/wos';\n\nimport type { SaveWallPreviewPOSTData, WallPreview } from 'domains/wall_previews';\n\nexport const all = async () => {\n const { data } = await wos.get<WallPreview[]>('/wall_previews.json');\n return data;\n};\n\nexport const get = async (id: number, rejectWithoutThumb: boolean = false) => {\n const { data } = await wos.get<WallPreview>(`/wall_previews/${id}.json`);\n\n if (rejectWithoutThumb && !data.url) {\n throw new Error('No Preview URL');\n }\n\n return data;\n};\n\nexport const create = async (preview: SaveWallPreviewPOSTData) => {\n const { data } = await wos.post<WallPreview>('/wall_previews.json', preview);\n return data;\n};\n\nexport const destroy = async (id: number) => {\n await wos.delete(`/wall_previews/${id}.json`);\n};\n", "import { combineEpics } from 'redux-observable';\nimport { filter, from, map, mergeMap, switchMap, withLatestFrom } from 'rxjs';\n\nimport module from './index';\nimport * as api from './wall_preview_rooms.api';\n\nimport { loadBlobAsImage } from 'utils/image_load';\nimport { catchAndLogError } from 'utils/common';\n\nimport type { Action } from '@reduxjs/toolkit';\nimport type { Epic } from 'redux-observable';\nimport type { RootState } from 'store/wos_store';\nimport type { EditUserRoomDraft, SaveUserRoomPUTData } from './wall_preview_rooms.types';\n\nconst { actions, selectors } = module;\n\nconst fetchUserRoomsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.fetchUserRooms.pending.match),\n mergeMap(() =>\n from(api.get()).pipe(\n map((rooms) => actions.fetchUserRooms.fulfilled(rooms)),\n catchAndLogError(actions.fetchUserRooms.rejected)\n )\n )\n );\n\n/**\n * Fetches a wall preview background image as a blob, returning its size & blob as an object URL\n */\nconst fetchWallPreviewBackgroundEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.setWhichWallPreview.match),\n switchMap(({ payload }) =>\n from(loadBlobAsImage(payload.fullSrc)).pipe(\n map((img: HTMLImageElement) => ({\n naturalHeight: img.naturalHeight,\n naturalWidth: img.naturalWidth,\n blobSrc: img.src,\n })),\n map((payload) => actions.wallPreviewImageLoad.fulfilled(payload)),\n catchAndLogError(actions.unsetWhichWallPreview())\n )\n )\n );\n\nconst createUserRoomsEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.createUserRooms.pending.match),\n mergeMap(({ payload }) =>\n from(api.bulkCreate(payload)).pipe(\n map((rooms) => actions.createUserRooms.fulfilled(rooms)),\n catchAndLogError(actions.createUserRooms.rejected)\n )\n )\n );\n\nconst saveUserRoomsEpic: Epic<Action, Action, RootState> = (action$, state$) =>\n action$.pipe(\n filter(actions.saveUserRooms.pending.match),\n withLatestFrom(state$),\n mergeMap(([, state]) => {\n const editRoomDrafts = selectors.editRoomDrafts(state);\n const editedRoomData = Object.values(editRoomDrafts).map((room: EditUserRoomDraft) => {\n const { id, description, wallSize, shouldUpdateWidth } = room;\n const data: SaveUserRoomPUTData = { id, description };\n\n if (shouldUpdateWidth) {\n data.wall_size = wallSize;\n }\n\n return data;\n });\n\n return from(api.bulkUpdate(editedRoomData)).pipe(\n map((uploads) => actions.saveUserRooms.fulfilled(uploads)),\n catchAndLogError(actions.saveUserRooms.rejected)\n );\n })\n );\n\nconst deleteUserRoomEpic: Epic<Action, Action, RootState> = (action$) =>\n action$.pipe(\n filter(actions.deleteUserRoom.pending.match),\n mergeMap(({ payload }) =>\n from(api.destroy(payload)).pipe(\n map(() => actions.deleteUserRoom.fulfilled(payload)),\n catchAndLogError(actions.deleteUserRoom.rejected)\n )\n )\n );\n\nconst wallPreviewEpics = combineEpics(\n fetchUserRoomsEpic,\n fetchWallPreviewBackgroundEpic,\n createUserRoomsEpic,\n saveUserRoomsEpic,\n deleteUserRoomEpic\n);\nexport default wallPreviewEpics;\n", "import wos from 'apis/wos';\n\nimport type {\n CreateUserRoomPOSTData,\n RawWallPreviewUserRoom,\n SaveUserRoomPUTData,\n} from 'domains/wall_preview_rooms';\n\nexport const get = async () => {\n const { data } = await wos.get<RawWallPreviewUserRoom[]>('/wall_preview_room_uploads.json');\n return data;\n};\n\nexport const bulkCreate = async (rooms: CreateUserRoomPOSTData[]) => {\n const { data } = await wos.post<RawWallPreviewUserRoom[]>(\n '/wall_preview_room_uploads/bulk_create.json',\n {\n roomUploads: rooms,\n }\n );\n\n return data;\n};\n\nexport const bulkUpdate = async (rooms: SaveUserRoomPUTData[]) => {\n const { data } = await wos.put<RawWallPreviewUserRoom[]>(\n '/wall_preview_room_uploads/bulk_update.json',\n {\n roomUploads: rooms,\n }\n );\n\n return data;\n};\n\nexport const destroy = async (id: number) => {\n await wos.delete(`/wall_preview_room_uploads/${id}.json`);\n};\n", "import { Controller } from '@hotwired/stimulus';\n\nimport React from 'react';\nimport { render } from 'react-dom';\nimport { Provider } from 'react-redux';\n\nimport { parseOptionQueryParam } from 'utils/option_util';\n\nimport app from 'domains/application';\nimport canvases from 'domains/canvases';\nimport navigation from 'domains/navigation';\n\nimport { paramOptions, paramHeight, paramWidth, paramFilterDetail } from 'utils/globals';\n\nimport Wos from 'components/apps/Wos';\nimport store from 'store/wos_store';\n\n// Connects to data-controller=\"price-tool-renderer\"\nexport default class extends Controller {\n static values = {\n catalog: String,\n subcatalog: String,\n product: String,\n };\n\n declare catalogValue: string;\n declare subcatalogValue: string;\n declare productValue: string;\n\n connect() {\n this.render(this.catalogValue, this.subcatalogValue, this.productValue);\n }\n\n render = (c: string, s: string, p: string) => {\n const config = {\n catalog: (c && parseInt(c)) || undefined,\n subcatalog: (s && parseInt(s)) || undefined,\n product: (p && parseInt(p)) || undefined,\n options: parseOptionQueryParam(paramOptions),\n height: (paramHeight && paramHeight.length && parseFloat(paramHeight)) || undefined,\n width: (paramWidth && paramWidth.length && parseFloat(paramWidth)) || undefined,\n };\n\n store.dispatch(app.actions.initApp());\n store.dispatch(canvases.actions.addCanvas(config));\n store.dispatch(navigation.actions.initializeNavigation({ priceTool: true }));\n\n return render(\n <Provider store={store}>\n <Wos />\n </Provider>,\n this.element\n );\n };\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nimport React from 'react';\nimport { render } from 'react-dom';\nimport { Provider } from 'react-redux';\n\nimport app from 'domains/application';\nimport canvases from 'domains/canvases';\nimport navigation from 'domains/navigation';\n\nimport Wos from 'components/apps/Wos';\nimport store from 'store/wos_store';\n\n// Connects to data-controller=\"projects-renderer\"\nexport default class extends Controller {\n connect() {\n this.render();\n }\n\n render() {\n store.dispatch(app.actions.initApp());\n store.dispatch(canvases.actions.addCanvas({}));\n store.dispatch(navigation.actions.initializeNavigation({ projects: true }));\n\n return render(\n <Provider store={store}>\n <Wos />\n </Provider>,\n this.element\n );\n }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nimport React from 'react';\nimport { render } from 'react-dom';\nimport { Provider } from 'react-redux';\n\nimport { parseOptionQueryParam } from 'utils/option_util';\n\nimport app from 'domains/application';\nimport ui from 'domains/ui';\nimport canvases from 'domains/canvases';\nimport navigation from 'domains/navigation';\n\nimport { paramOptions, paramHeight, paramWidth, paramFilterDetail } from 'utils/globals';\n\nimport Wos from 'components/apps/Wos';\nimport store from 'store/wos_store';\n\n// Connects to data-controller=\"wos-renderer\"\nexport default class extends Controller {\n static values = {\n catalog: String,\n subcatalog: String,\n product: String,\n };\n\n declare catalogValue: string;\n declare subcatalogValue: string;\n declare productValue: string;\n\n connect() {\n this.render(this.catalogValue, this.subcatalogValue, this.productValue);\n }\n\n render = (c: string, s: string, p: string) => {\n const config = {\n catalog: (c && parseInt(c)) || undefined,\n subcatalog: (s && parseInt(s)) || undefined,\n product: (p && parseInt(p)) || undefined,\n options: parseOptionQueryParam(paramOptions),\n height: (paramHeight && paramHeight.length && parseFloat(paramHeight)) || undefined,\n width: (paramWidth && paramWidth.length && parseFloat(paramWidth)) || undefined,\n };\n\n store.dispatch(app.actions.initApp());\n store.dispatch(canvases.actions.addCanvas(config));\n store.dispatch(navigation.actions.initializeNavigation({ catalogSelector: !c && !s && !p }));\n store.dispatch(ui.actions.setShowAdvancedFilters(paramFilterDetail || !p));\n\n return render(\n <Provider store={store}>\n <Wos />\n </Provider>,\n this.element\n );\n };\n}\n", "import { library } from '@fortawesome/fontawesome-svg-core';\nimport {\n faAlignCenter,\n faAlignLeft,\n faAlignRight,\n faAngleRight,\n faAngleDown,\n faArrowCircleLeft,\n faArrowCircleRight,\n faArrowsAlt,\n faArrowUp,\n faArrowDown,\n faArrowRight,\n faArrowLeft,\n faBabyCarriage,\n faBars,\n faBirthdayCake,\n faCandyCane,\n faCaretLeft,\n faCaretRight,\n faCaretUp,\n faCaretDown,\n faCheck,\n faCheckCircle,\n faCheckSquare,\n faChevronUp,\n faChevronDown,\n faChevronLeft,\n faChevronRight,\n faClipboard,\n faCloudUploadAlt,\n faCog,\n faCompressAlt,\n faCrosshairs,\n faEdit,\n faEllipsisV,\n faExchangeAlt,\n faExclamationCircle,\n faExclamationTriangle,\n faExternalLinkAlt,\n faEye,\n faFilm,\n faFolder,\n faFolderOpen,\n faFolderPlus,\n faGifts,\n faGlassCheers,\n faGraduationCap,\n faImage,\n faInfoCircle,\n faLock,\n faMinusSquare,\n faPlus,\n faPlusSquare,\n faPencilAlt,\n faQuestionCircle,\n faRetweet,\n faRedo,\n faRuler,\n faRulerCombined,\n faSearch,\n faSignOutAlt,\n faShare,\n faShoppingCart,\n faSlidersH,\n faSquare as faSquareSolid,\n faTimes,\n faTimesCircle,\n faTrashAlt,\n faUnlock,\n faUserCircle,\n faUserPlus,\n faWandMagicSparkles,\n} from '@fortawesome/free-solid-svg-icons';\n\nimport {\n faCheckSquare as faCheckSquareReg,\n faCheckCircle as faCheckCircleReg,\n faCircle,\n faCopy,\n faSquare,\n} from '@fortawesome/free-regular-svg-icons';\n\nexport default function initFontAwesome() {\n library.add(\n faAlignCenter,\n faAlignLeft,\n faAlignRight,\n faAngleRight,\n faAngleDown,\n faArrowCircleLeft,\n faArrowCircleRight,\n faArrowsAlt,\n faArrowUp,\n faArrowDown,\n faArrowRight,\n faArrowLeft,\n faBabyCarriage,\n faBars,\n faBirthdayCake,\n faCandyCane,\n faCaretLeft,\n faCaretRight,\n faCaretUp,\n faCaretDown,\n faCheck,\n faCheckCircle,\n faCheckCircleReg,\n faCheckSquare,\n faCheckSquareReg,\n faChevronUp,\n faChevronDown,\n faChevronLeft,\n faChevronRight,\n faCircle,\n faClipboard,\n faCloudUploadAlt,\n faCog,\n faCompressAlt,\n faCopy,\n faCrosshairs,\n faEdit,\n faEllipsisV,\n faExchangeAlt,\n faExclamationCircle,\n faExclamationTriangle,\n faExternalLinkAlt,\n faEye,\n faFilm,\n faFolder,\n faFolderOpen,\n faFolderPlus,\n faGifts,\n faGlassCheers,\n faGraduationCap,\n faImage,\n faInfoCircle,\n faLock,\n faMinusSquare,\n faPlus,\n faPlusSquare,\n faPencilAlt,\n faQuestionCircle,\n faRetweet,\n faRedo,\n faRuler,\n faRulerCombined,\n faSearch,\n faSignOutAlt,\n faShare,\n faShoppingCart,\n faSlidersH,\n faSquare,\n faSquareSolid,\n faTimes,\n faTimesCircle,\n faTrashAlt,\n faUnlock,\n faUserCircle,\n faUserPlus,\n faWandMagicSparkles\n );\n}\n", "var prefix = \"fas\";\nvar fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z\"]\n};\nvar fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z\"]\n};\nvar fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nvar fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [320, 512, [], \"33\", \"M0 64C0 46.3 14.3 32 32 32H272c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H105.4C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H80c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z\"]\n};\nvar fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nvar fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"]\n};\nvar fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nvar fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nvar faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z\"]\n};\nvar faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nvar faChevronCircleRight = faCircleChevronRight;\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M64 128V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H160 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faUserTimes = faUserXmark;\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faCommentAlt = faMessage;\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H296c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272H216c13.3 0 24 10.7 24 24V440c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"]\n};\nvar faCompressAlt = faDownLeftAndUpRightToCenter;\nvar faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z\"]\n};\nvar faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nvar faVolleyballBall = faVolleyball;\nvar faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [576, 512, [], \"e4c2\", \"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nvar faSortDesc = faSortDown;\nvar faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusCircle = faCircleMinus;\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z\"]\n};\nvar faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSignOutAlt = faRightFromBracket;\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [512, 512, [9883], \"f5d2\", \"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L352 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L213.3 304H240c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48H74.7zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368H496c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400H336c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nvar faHeartMusicCameraBolt = faIcons;\nvar faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nvar faMicrophoneAltSlash = faMicrophoneLinesSlash;\nvar faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128v24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7V256c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256v24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8V256c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96v24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7V256c0-28.7 23.3-52 52-52s52 23.3 52 52v24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1V256c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24v24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9V256z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm64-64c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h48c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32H160C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64v88c0 22.1-17.9 40-40 40s-40-17.9-40-40V160c0-8.8-7.2-16-16-16s-16 7.2-16 16v56c0 39.8 32.2 72 72 72z\"]\n};\nvar faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSearchLocation = faMagnifyingGlassLocation;\nvar faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z\"]\n};\nvar faStepForward = faForwardStep;\nvar faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1V345.8c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V400 334 64 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9v65.5L64 252.6V318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3V238.7l38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9v66.7l-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8v71.4c21.8 1.9 43.3 6.7 64 14.4V244.2l22.7 6.7c13.5 4 27.3 6.4 41.3 7.4V194c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12v-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8v72.4c-13-.4-26 .8-38.7 3.6L128 173.2V98L64 114v73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2V251.9l-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5v77.4zm64-149.4V115.4c-20.9 6.1-42.4 9.1-64 9.1V194c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nvar faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faFootballBall = faFootball;\nvar faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z\"]\n};\nvar faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faAngleDoubleDown = faAnglesDown;\nvar faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nvar faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z\"]\n};\nvar faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z\"]\n};\nvar faBeer = faBeerMugEmpty;\nvar faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nvar faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faLongArrowUp = faArrowUpLong;\nvar faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nvar faBurn = faFireFlameSimple;\nvar faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\"]\n};\nvar faMale = faPerson;\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [512, 512, [], \"f6dd\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z\"]\n};\nvar faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H302.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H160V208.5zM288 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H76.1c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64C78.3 64 64 49.7 64 32S78.3 0 96 0h16H272h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faPastafarianism = faSpaghettiMonsterFlying;\nvar faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z\"]\n};\nvar faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nvar faUtensilSpoon = faSpoon;\nvar faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nvar faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [640, 512, [\"mail-bulk\"], \"f674\", \"M128 0C110.3 0 96 14.3 96 32V224h96V192c0-35.3 28.7-64 64-64H480V32c0-17.7-14.3-32-32-32H128zM256 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H576c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H256zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32v13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301V288c0-17.7-14.3-32-32-32H64zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8V480c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V340.8z\"]\n};\nvar faMailBulk = faEnvelopesBulk;\nvar faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHospitalSymbol = faCircleH;\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nvar faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nvar faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPencilAlt = faPencil;\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H320 272zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFileClipboard = faPaste;\nvar faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16z\"]\n};\nvar faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nvar faTruckLoading = faTruckRampBox;\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z\"]\n};\nvar faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z\"]\n};\nvar faTorah = faScrollTorah;\nvar faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H364.3L256 211.7V182.6c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faQuidditch = faBroomBall;\nvar faQuidditchBroomBall = faBroomBall;\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faArchive = faBoxArchive;\nvar faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V416H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericDesc = faArrowDown91;\nvar faSortNumericDownAlt = faArrowDown91;\nvar faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nvar faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faGlobeAfrica = faEarthAfrica;\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nvar faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64H64V384H384V64z\"]\n};\nvar faTabletAlt = faTabletScreenButton;\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nvar faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [576, 512, [], \"e57f\", \"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nvar faLegal = faGavel;\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faConciergeBell = faBellConcierge;\nvar faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nvar faPencilRuler = faPenRuler;\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nvar faPeopleArrowsLeftRight = faPeopleArrows;\nvar faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l24 0H376c0 13.3 10.7 24 24 24s24-10.7 24-24H400l24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nvar faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCut = faScissors;\nvar faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z\"]\n};\nvar faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faDigitalTachograph = faTachographDigital;\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"]\n};\nvar faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2C205.1 38.5 189.5 32 173.3 32z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nvar faMailReply = faReply;\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [9770], \"f699\", \"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nvar faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM453.5 163.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C640 440 568.7 512 480 512c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM530 433c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 320c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faNavicon = faBars;\nvar faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nvar faHourglass3 = faHourglassEnd;\nvar faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nvar faHeartBroken = faHeartCrack;\nvar faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM320 313.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6c0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6c12.5 0 22.6-10.1 22.6-22.6z\"]\n};\nvar faExternalLinkSquareAlt = faSquareUpRight;\nvar faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nvar faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nvar faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faExclamationCircle = faCircleExclamation;\nvar faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nvar faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [512, 512, [\"sign-out\"], \"f08b\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nvar faSignOut = faArrowRightFromBracket;\nvar faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nvar faChevronCircleDown = faCircleChevronDown;\nvar faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"]\n};\nvar faUnlockAlt = faUnlockKeyhole;\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nvar faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faHeadphonesAlt = faHeadphonesSimple;\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V304c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V112c0-11.1-9-20.1-20.1-20.1zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faDonate = faCircleDollarToSlot;\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M293.5 3.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C480 280 408.7 352 320 352c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM370 273c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15zM32 288c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32s-14.3 32-32 32v64H544V320c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32V288zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nvar faVolumeDown = faVolumeLow;\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zM64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104-17.9L82.9 161.3C70.7 185.6 64 212.2 64 240z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.1-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nvar faWheatAlt = faWheatAwn;\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nvar faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faHeader = faHeading;\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2V192C0 86 86 0 192 0S384 86 384 192V462.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z\"]\n};\nvar faListSquares = faList;\nvar faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nvar faPhoneSquareAlt = faSquarePhoneFlip;\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20h44v44c0 11 9 20 20 20s20-9 20-20V180h44c11 0 20-9 20-20s-9-20-20-20H356V96c0-11-9-20-20-20s-20 9-20 20v44H272c-11 0-20 9-20 20z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z\"]\n};\nvar faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nvar faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H208c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nvar faPaintBrush = faPaintbrush;\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"]\n};\nvar faHotTub = faHotTubPerson;\nvar faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z\"]\n};\nvar faMapMarked = faMapLocation;\nvar faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nvar faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V424c0 11 9 20 20 20s20-9 20-20V410.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l0 0-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V216z\"]\n};\nvar faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z\"]\n};\nvar faEdit = faPenToSquare;\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nvar faShareAlt = faShareNodes;\nvar faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9H112z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M160 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z\"]\n};\nvar faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faShoppingBag = faBagShopping;\nvar faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z\"]\n};\nvar faSortAlphaDesc = faArrowDownZA;\nvar faSortAlphaDownAlt = faArrowDownZA;\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z\"]\n};\nvar faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"]\n};\nvar faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z\"]\n};\nvar faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\"]\n};\nvar faHandPaper = faHand;\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5 0-.1c-2.6-7.8-10.7-12.3-18.7-10.5C4.4 354.2-.9 361.8 .1 370L16 368C.1 370 .1 370 .1 370l0 0 0 0 0 .1 .1 .4c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.3 0 0c0 0 0 0 0 0c-1.9-7.3-8.6-12.4-16.2-12.1c-7.6 .3-13.9 5.9-15.1 13.4L336 368c-15.8-2.6-15.8-2.6-15.8-2.6l0 0 0 0 0 .1-.1 .3c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4zM280.9 66.7c-6-4-14-3.5-19.5 1.3s-7 12.7-3.7 19.2L272 80c-14.3 7.2-14.3 7.2-14.3 7.2l0 0 0 0 0 .1 .1 .2 .4 .7c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .2-.2 .1-.1 0 0 0 0c0 0 0 0-22.6-22.6l22.6 22.6c12.5-12.5 12.5-32.8 0-45.3c-12.4-12.4-32.6-12.5-45.1-.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2 0 0 0 0 0 0z\"]\n};\nvar faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [512, 512, [], \"e599\", \"M256 96c0-53 43-96 96-96h38.4C439.9 0 480 40.1 480 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H352c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiss = faFaceKiss;\nvar faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V400H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512H297.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432H48z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faDeaf = faEarDeaf;\nvar faDeafness = faEarDeaf;\nvar faHardOfHearing = faEarDeaf;\nvar faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faRssSquare = faSquareRss;\nvar faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z\"]\n};\nvar faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z\"]\n};\nvar faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z\"]\n};\nvar faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nvar faHryvnia = faHryvniaSign;\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nvar faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [129463], \"f5c9\", \"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nvar faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nvar faBangladeshiTakaSign = {\n prefix: 'fas',\n iconName: 'bangladeshi-taka-sign',\n icon: [384, 512, [], \"e2e6\", \"M36 32.2C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8V160H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V384c0 53 43 96 96 96h32c106 0 192-86 192-192V256c0-53-43-96-96-96H272c-17.7 0-32 14.3-32 32s14.3 32 32 32h16c17.7 0 32 14.3 32 32v32c0 70.7-57.3 128-128 128H160c-17.7 0-32-14.3-32-32V224h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V128.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z\"]\n};\nvar faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.1 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faRodAsclepius = faStaffSnake;\nvar faRodSnake = faStaffSnake;\nvar faStaffAesculapius = faStaffSnake;\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8h-3.9c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80v48l-48 0c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V192h48c8.8 0 16-7.2 16-16V144c0-8.8-7.2-16-16-16H240V80c0-8.8-7.2-16-16-16H192c-8.8 0-16 7.2-16 16z\"]\n};\nvar faAmbulance = faTruckMedical;\nvar faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [9731, 9924], \"f7d0\", \"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H181.3c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM256 416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H256V416zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nvar faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H400c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z\"]\n};\nvar faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V208c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature2 = faTemperatureHalf;\nvar faThermometer2 = faTemperatureHalf;\nvar faThermometerHalf = faTemperatureHalf;\nvar faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17H128c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 41 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320H304c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9H360c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64h-1.4c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H233.9l52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"]\n};\nvar faPooBolt = faPooStorm;\nvar faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nvar faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z\"]\n};\nvar faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3V320c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 53 43 96 96 96H352c53 0 96-43 96-96V352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [448, 512, [\"file-medical-alt\"], \"f478\", \"M96 0C60.7 0 32 28.7 32 64V288H144c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320H32V448c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V160H288c-17.7 0-32-14.3-32-32V0H96zM288 0V128H416L288 0z\"]\n};\nvar faFileMedicalAlt = faFileWaveform;\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z\"]\n};\nvar faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faDashboard = faGauge;\nvar faGaugeMed = faGauge;\nvar faTachometerAltAverage = faGauge;\nvar faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nvar faMagicWandSparkles = faWandMagicSparkles;\nvar faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nvar faPenAlt = faPenClip;\nvar faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"]\n};\nvar faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z\"]\n};\nvar faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShuttleVan = faVanShuttle;\nvar faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H224l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H24c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nvar faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nvar faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nvar faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z\"]\n};\nvar faAreaChart = faChartArea;\nvar faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z\"]\n};\nvar faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faCancel = faBan;\nvar faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [640, 512, [], \"e0d8\", \"M213.1 64.8L202.7 96H128c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H437.3L426.9 64.8C420.4 45.2 402.1 32 381.4 32H258.6c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16H355.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM192 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z\"]\n};\nvar faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nvar faAirFreshener = faSprayCanSparkles;\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nvar faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nvar faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nvar faMousePointer = faArrowPointer;\nvar faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [512, 512, [\"expand-arrows-alt\"], \"f31e\", \"M200 32H56C42.7 32 32 42.7 32 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312V456c0 13.3 10.7 24 24 24H200c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H456c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"]\n};\nvar faExpandArrowsAlt = faMaximize;\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"]\n};\nvar faTriangleCircleSquare = faShapes;\nvar faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nvar faRandom = faShuffle;\nvar faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H362.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"]\n};\nvar faRunning = faPersonRunning;\nvar faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [512, 512, [128375], \"f717\", \"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nvar faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [640, 512, [], \"e4f9\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352H128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H288h64H480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1V320v32H288V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8V96 32zm64 448v32H288V480h64v32H480V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H480 352 288 160 128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v32H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48H128c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v70.6L189.1 307c-5.2-2-10.6-3-16.2-3h-2.1c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6H316.4c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8H339c-5.5 0-11 1-16.2 3L272 326.6V256H384c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V176h80c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160H93.3L112 115.2 130.7 160zM256 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H288c-17.7 0-32 14.3-32 32zm96 64H320V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320V160zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nvar faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\"]\n};\nvar faMouse = faComputerMouse;\nvar faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignIn = faArrowRightToBracket;\nvar faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384z\"]\n};\nvar faStoreAltSlash = faShopSlash;\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nvar faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nvar faHourglass1 = faHourglassStart;\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H224zm-16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nvar faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z\"]\n};\nvar faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nvar faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSignInAlt = faRightToBracket;\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nvar faHeartbeat = faHeartPulse;\nvar faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nvar faPeopleCarry = faPeopleCarryBox;\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z\"]\n};\nvar faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"]\n};\nvar faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nvar faWeight = faWeightScale;\nvar faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nvar faUserFriends = faUserGroup;\nvar faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z\"]\n};\nvar faSortAlphaUp = faArrowUpAZ;\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5V238.9c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400H384l28.9-159c2.1-11.3 3.1-22.8 3.1-34.3V192C416 86 330 0 224 0H83.8C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H409.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432H64L22.6 473.4z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H282.2l-9.6-48H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H259.8z\"]\n};\nvar faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 231c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V193.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 119c9.4-9.4 24.6-9.4 33.9 0L385 231z\"]\n};\nvar faArrowCircleUp = faCircleArrowUp;\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nvar faWalking = faPersonWalking;\nvar faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"]\n};\nvar faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faProcedures = faBedPulse;\nvar faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nvar faSpaceShuttle = faShuttleSpace;\nvar faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nvar faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z\"]\n};\nvar faMicrophoneAlt = faMicrophoneLines;\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"]\n};\nvar faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3L365.5 384H160z\"]\n};\nvar faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"]\n};\nvar faMarsStrokeV = faMarsStrokeUp;\nvar faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"]\n};\nvar faGlassCheers = faChampagneGlasses;\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z\"]\n};\nvar faFileUpload = faFileArrowUp;\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faWifi3 = faWifi;\nvar faWifiStrong = faWifi;\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z\"]\n};\nvar faBathtub = faBath;\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nvar faUserEdit = faUserPen;\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"]\n};\nvar faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nvar faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nvar faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBorderStyle = faBorderTopLeft;\nvar faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faMapMarkedAlt = faMapLocationDot;\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nvar faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z\"]\n};\nvar faPoll = faSquarePollVertical;\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBatteryCar = faCarBattery;\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400H384 343.6 168.4 128 112.3L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224l0 0 0 0h0zM112 432H400l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H86.6C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z\"]\n};\nvar faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z\"]\n};\nvar faMarsStrokeH = faMarsStrokeRight;\nvar faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarChart = faChartBar;\nvar faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [576, 512, [\"hands-wash\"], \"e05e\", \"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7v-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8 0 0 0 0-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.7 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4H352h13.3l0 0H397l23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352v8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H352l0 0 0 0H258.8L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nvar faHandsWash = faHandsBubbles;\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nvar faLowVision = faEyeLowVision;\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V13.4C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32H126.8c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z\"]\n};\nvar faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nvar faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64z\"]\n};\nvar faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z\"]\n};\nvar faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z\"]\n};\nvar faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z\"]\n};\nvar faGlassMartiniAlt = faMartiniGlass;\nvar faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"]\n};\nvar faRotateBack = faRotateLeft;\nvar faRotateBackward = faRotateLeft;\nvar faUndoAlt = faRotateLeft;\nvar faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z\"]\n};\nvar faColumns = faTableColumns;\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [576, 512, [], \"e063\", \"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31V512H128c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2H336c-21.7 0-41.3 8.6-55.7 22.6zM336 304H534l0 0h10l-19.7 64H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H514.5l-9.8 32H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H494.8l-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2H288V352c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128H16zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [\"dolly-box\"], \"f472\", \"M0 32C0 14.3 14.3 0 32 0h72.9c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64H32C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"]\n};\nvar faDollyBox = faDolly;\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z\"]\n};\nvar faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z\"]\n};\nvar faCompressArrowsAlt = faMinimize;\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faAngleDoubleRight = faAnglesRight;\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nvar faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z\"]\n};\nvar faEur = faEuroSign;\nvar faEuro = faEuroSign;\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z\"]\n};\nvar faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDraftingCompass = faCompassDrafting;\nvar faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nvar faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nvar faChevronCircleUp = faCircleChevronUp;\nvar faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nvar faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z\"]\n};\nvar faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [320, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1C104.1 390 112 361.5 112 332.5V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faGbp = faSterlingSign;\nvar faPoundSign = faSterlingSign;\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256A128 128 0 1 1 224 0a128 128 0 1 1 0 256zM209.1 359.2l-18.6-31c-6.4-10.7 1.3-24.2 13.7-24.2H224h19.7c12.4 0 20.1 13.6 13.7 24.2l-18.6 31 33.4 123.9 36-146.9c2-8.1 9.8-13.4 17.9-11.3c70.1 17.6 121.9 81 121.9 156.4c0 17-13.8 30.7-30.7 30.7H285.5c-2.1 0-4-.4-5.8-1.1l.3 1.1H168l.3-1.1c-1.8 .7-3.8 1.1-5.8 1.1H30.7C13.8 512 0 498.2 0 481.3c0-75.5 51.9-138.9 121.9-156.4c8.1-2 15.9 3.3 17.9 11.3l36 146.9 33.4-123.9z\"]\n};\nvar faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nvar faLongArrowDown = faArrowDownLong;\nvar faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h76.8L384 320V448z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.3-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z\"]\n};\nvar faMailReplyAll = faReplyAll;\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z\"]\n};\nvar faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nvar faSkating = faPersonSkating;\nvar faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nvar faFunnelDollar = faFilterCircleDollar;\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"]\n};\nvar faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 281c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 136c0-13.3 10.7-24 24-24s24 10.7 24 24l0 182.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 393c-9.4 9.4-24.6 9.4-33.9 0L127 281z\"]\n};\nvar faArrowCircleDown = faCircleArrowDown;\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z\"]\n};\nvar faArrowRightToFile = faFileImport;\nvar faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z\"]\n};\nvar faExternalLinkSquare = faSquareArrowUpRight;\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nvar faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z\"]\n};\nvar faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [576, 512, [], \"e507\", \"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"]\n};\nvar faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faTemperature0 = faTemperatureEmpty;\nvar faThermometer0 = faTemperatureEmpty;\nvar faThermometerEmpty = faTemperatureEmpty;\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288H200.4zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416H583.3L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nvar faBalanceScaleRight = faScaleUnbalancedFlip;\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"]\n};\nvar faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nvar faDirections = faDiamondTurnRight;\nvar faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nvar faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z\"]\n};\nvar faLaptopHouse = faHouseLaptop;\nvar faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nvar faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.1 22.5-82.3 32-119.5 32c-62.8 0-86.6-32-149.3-32c-20.6 0-36.6 3.6-51.2 8.2v-64c14.6-4.6 30.6-8.2 51.2-8.2c62.7 0 86.5 32 149.3 32c20.4 0 35.6-3 55.5-9.3v-208c-19.9 6.3-35.1 9.3-55.5 9.3c-62.8 0-86.6-32-149.3-32c-50.8 0-74.9 20.6-115.2 28.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32s32 14.3 32 32V76.7c40.3-8 64.4-28.7 115.2-28.7c62.7 0 86.5 32 149.3 32c37.1 0 56.4-9.5 119.5-32z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nvar faCloudUpload = faCloudArrowUp;\nvar faCloudUploadAlt = faCloudArrowUp;\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [448, 512, [], \"e4c0\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160H128c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C0 153.3 57.3 96 128 96H338.7L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416H96c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H242.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nvar faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0h32c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64H64c123.7 0 224 100.3 224 224v32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320C100.3 320 0 219.7 0 96z\"]\n};\nvar faSprout = faSeedling;\nvar faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nvar faArrowsAltH = faLeftRight;\nvar faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"]\n};\nvar faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM231 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L376 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-182.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L119 273c-9.4-9.4-9.4-24.6 0-33.9L231 127z\"]\n};\nvar faArrowCircleLeft = faCircleArrowLeft;\nvar faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nvar faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nvar faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z\"]\n};\nvar faSortAmountAsc = faArrowDownWideShort;\nvar faSortAmountDown = faArrowDownWideShort;\nvar faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faThunderstorm = faCloudBolt;\nvar faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32H376.1h-.3H204.5c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1L272.9 311 243.3 416z\"]\n};\nvar faRemoveFormat = faTextSlash;\nvar faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z\"]\n};\nvar faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faArrowsH = faArrowsLeftRight;\nvar faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32H392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faCloudDownload = faCloudArrowDown;\nvar faCloudDownloadAlt = faCloudArrowDown;\nvar faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBlackboard = faChalkboard;\nvar faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512H528L284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H545.3l.3 0z\"]\n};\nvar faUserAltSlash = faUserLargeSlash;\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nvar faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nvar faHandshakeAltSlash = faHandshakeSimpleSlash;\nvar faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z\"]\n};\nvar faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nvar faRefresh = faArrowsRotate;\nvar faSync = faArrowsRotate;\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z\"]\n};\nvar faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\"]\n};\nvar faShieldAlt = faShieldHalved;\nvar faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nvar faAtlas = faBookAtlas;\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nvar faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z\"]\n};\nvar faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z\"]\n};\nvar faHouseDamage = faHouseChimneyCrack;\nvar faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nvar faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z\"]\n};\nvar faGlassMartini = faMartiniGlassEmpty;\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z\"]\n};\nvar faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nvar faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [512, 512, [9975, \"skiing\"], \"f7c9\", \"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nvar faSkiing = faPersonSkiing;\nvar faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384H290.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320H120l72-172.8L264 320z\"]\n};\nvar faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [576, 512, [\"temperature-down\"], \"e03f\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H480V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H384c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nvar faTemperatureDown = faTemperatureArrowDown;\nvar faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faFeatherAlt = faFeatherPointed;\nvar faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M0 96C0 60.7 28.7 32 64 32h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V320 96zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H296c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nvar faAd = faRectangleAd;\nvar faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM281 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L136 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l182.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L393 239c9.4 9.4 9.4 24.6 0 33.9L281 385z\"]\n};\nvar faArrowCircleRight = faCircleArrowRight;\nvar faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [576, 512, [], \"e520\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H431.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400H496c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C576 143 465 32 328 32H312zm50.5 168l17.1 40H333l29.5-40zm-87.7 38.1l-1.4 1.9H225.1l32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240H88.8zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nvar faUnsorted = faSort;\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faList12 = faListOl;\nvar faListNumeric = faListOl;\nvar faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164 152v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V360c0 11-9 20-20 20s-20-9-20-20V345.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V152c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faMoneyCheckAlt = faMoneyCheckDollar;\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M80 160c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64v3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74V320c0 17.7 14.3 32 32 32s32-14.3 32-32v-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7V160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nvar faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faArrowsAlt = faUpDownLeftRight;\nvar faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M148 76.6C148 34.3 182.3 0 224.6 0c20.3 0 39.8 8.1 54.1 22.4l9.3 9.3 9.3-9.3C311.6 8.1 331.1 0 351.4 0C393.7 0 428 34.3 428 76.6c0 20.3-8.1 39.8-22.4 54.1L302.1 234.1c-7.8 7.8-20.5 7.8-28.3 0L170.4 130.7C156.1 116.4 148 96.9 148 76.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8v0c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2v0c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2v0c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2v0c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8v0c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320v0c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256v0C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2v0z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z\"]\n};\nvar faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [640, 512, [\"star-half-alt\"], \"f5c0\", \"M320 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L320.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L320.1 439.8 191.8 508.3C181 514 167.9 513.1 158 506s-14.9-19.3-12.9-31.3L169.8 329 65.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L227 150.3 291.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L470.5 329l24.6 145.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z\"]\n};\nvar faGlassWhiskey = faWhiskeyGlass;\nvar faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLink = faArrowUpRightFromSquare;\nvar faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z\"]\n};\nvar faKrw = faWonSign;\nvar faWon = faWonSign;\nvar faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z\"]\n};\nvar faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M64 32C28.7 32 0 60.7 0 96V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.2 5.4c-25.9 5.9-50 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCab = faTaxi;\nvar faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z\"]\n};\nvar faPieChart = faChartPie;\nvar faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nvar faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nvar faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nvar faMapMarker = faLocationPin;\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z\"]\n};\nvar faHardHat = faHelmetSafety;\nvar faHatHard = faHelmetSafety;\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1l99.9 107.1c3.5 3.8 5.5 8.7 5.5 13.8s-2 10.1-5.5 13.8L294.6 376.9c-4.2 4.5-10.1 7.1-16.3 7.1C266 384 256 374 256 361.7l0-57.7-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-57.7c0-12.3 10-22.3 22.3-22.3c6.2 0 12.1 2.6 16.3 7.1z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLineChart = faChartLine;\nvar faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nvar faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMapSigns = faSignsPost;\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nvar faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nvar faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTools = faScrewdriverWrench;\nvar faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nvar faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59.1 146.7-136.1 158.2c0 .6 .1 1.2 .1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l-24 0-24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2 .1-1.8C155.1 370.7 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM256 488h24c0 13.3-10.7 24-24 24s-24-10.7-24-24h24zm96-264a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z\"]\n};\nvar faHomeUser = faHouseUser;\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0h58c15.1-18.1 32.1-35.7 50.5-52.1c1.5-1.4 3.2-2.6 4.8-3.8L402.9 32H304V160zm209.9-23.7c17.4-15.8 43.9-16.2 61.7-1.2c-.1-.7-.3-1.4-.5-2.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l12.8 64.2c9.6 1 19 4.9 26.6 11.8c11.7 10.6 23 21.6 33.9 33.1c1.6-1.6 3.3-3.2 5-4.8zM325.2 210.7c3.8-6.2 7.9-12.5 12.3-18.7H32l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H337.6c-31-34.7-49.6-80.6-49.6-129.9c0-35.2 16.3-73.6 37.2-107.4zm128.4-78.9c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 407.9 390.3 480 480 480c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 401c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"]\n};\nvar faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nvar faCocktail = faMartiniGlassCitrus;\nvar faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [320, 512, [], \"e4c5\", \"M120 0h80c13.3 0 24 10.7 24 24V64H96V24c0-13.3 10.7-24 24-24zM32 151.7c0-15.6 9-29.8 23.2-36.5l24.4-11.4c11-5.1 23-7.8 35.1-7.8h90.6c12.1 0 24.1 2.7 35.1 7.8l24.4 11.4c14.1 6.6 23.2 20.8 23.2 36.5c0 14.4-7.5 27-18.9 34.1c11.5 8.8 18.9 22.6 18.9 38.2c0 16.7-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48c0-16.7 8.5-31.4 21.5-40C40.5 415.4 32 400.7 32 384s8.5-31.4 21.5-40C40.5 335.4 32 320.7 32 304s8.5-31.4 21.5-40C40.5 255.4 32 240.7 32 224c0-15.6 7.4-29.4 18.9-38.2C39.5 178.7 32 166.1 32 151.7zM96 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nvar faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nvar faAppleAlt = faAppleWhole;\nvar faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M64 32C28.7 32 0 60.7 0 96V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H64zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature1 = faTemperatureQuarter;\nvar faThermometer1 = faTemperatureQuarter;\nvar faThermometerQuarter = faTemperatureQuarter;\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z\"]\n};\nvar faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z\"]\n};\nvar faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H569c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0H122.2zM260.9 64H379.1l10.4 104h-139L260.9 64zM202.3 168H101.4L122.2 64h90.4L202.3 168zM91.8 216H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104-169.4 0 10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l31.4-6.3L517.8 64l20.8 104z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z\"]\n};\nvar faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nvar faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faPollH = faSquarePollHorizontal;\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nvar faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z\"]\n};\nvar faFastBackward = faBackwardFast;\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M514.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64H440.6L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L238.1 161.3 197.8 20.4C194.9 10.2 202.6 0 213.2 0h56.2c11.5 0 22.1 6.2 27.8 16.1L397.7 192l116.6 0zM41.5 128.7l321 252.9L297.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6H144l-43.2 57.6c-3 4-7.8 6.4-12.8 6.4H46c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L64 256 32.5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-6.2 4-11.4 9.5-13.3z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z\"]\n};\nvar faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"]\n};\nvar faBasketballBall = faBasketball;\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4l107.1-99.9c3.8-3.5 8.7-5.5 13.8-5.5s10.1 2 13.8 5.5l107.1 99.9c4.5 4.2 7.1 10.1 7.1 16.3c0 12.3-10 22.3-22.3 22.3H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H150.3C138 256 128 246 128 233.7c0-6.2 2.6-12.1 7.1-16.3z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64H80V384H304V64z\"]\n};\nvar faMobileAlt = faMobileScreenButton;\nvar faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nvar faVolumeUp = faVolumeHigh;\nvar faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nvar faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z\"]\n};\nvar faHamburger = faBurger;\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [576, 512, [], \"e4d0\", \"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184H64v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nvar faRupee = faRupeeSign;\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nvar faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM413.6 421.9L128 196.9V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nvar faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z\"]\n};\nvar faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nvar faPhoneAlt = faPhoneFlip;\nvar faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [576, 512, [128008], \"f6be\", \"M320 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L280 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128v0V32 12 10.7C352 4.8 356.7 .1 362.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L384 21.3l27.2 36.3L416 64h64l4.8-6.4L512 21.3 524.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C539.3 .1 544 4.8 544 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c53 0 96 43 96 96s-43 96-96 96H139.6c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-53 0-96-43-96-96s43-96 96-96h39.8c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M32.1 29.3C33.5 12.8 47.4 0 64 0H256c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6V448h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H160 80c-17.7 0-32-14.3-32-32s14.3-32 32-32h48V348.4C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7H231.9l-5.3-64H93.4l-5.3 64z\"]\n};\nvar faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nvar faFastForward = faForwardFast;\nvar faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParking = faSquareParking;\nvar faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6H464c26.5 0 48-21.5 48-48V256h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V208zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nvar faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z\"]\n};\nvar faTasksAlt = faBarsProgress;\nvar faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nvar faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z\"]\n};\nvar faDollyFlatbed = faCartFlatbed;\nvar faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z\"]\n};\nvar faSmokingBan = faBanSmoking;\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [576, 512, [], \"f120\", \"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faShoppingBasket = faBasketShopping;\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBusAlt = faBusSimple;\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"]\n};\nvar faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z\"]\n};\nvar faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nvar faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nvar faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M576 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM352 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM96 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSignal5 = faSignal;\nvar faSignalPerfect = faSignal;\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [576, 512, [128653], \"f207\", \"M288 0C422.4 0 512 35.2 512 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H192v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C64 35.2 153.6 0 288 0zM128 160v96c0 17.7 14.3 32 32 32H272V128H160c-17.7 0-32 14.3-32 32zM304 288H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H304V288zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16z\"]\n};\nvar faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z\"]\n};\nvar faHomeLg = faHouseChimney;\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrown = faFaceFrown;\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z\"]\n};\nvar faStoreAlt = faShop;\nvar faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSave = faFloppyDisk;\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z\"]\n};\nvar faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288H439.6zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416H56.7l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nvar faBalanceScaleLeft = faScaleUnbalanced;\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faSortAsc = faSortUp;\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCommenting = faCommentDots;\nvar faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z\"]\n};\nvar faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nvar faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingUsd = faHandHoldingDollar;\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3l0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v48 16 48c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nvar faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nvar faPrayingHands = faHandsPraying;\nvar faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nvar faArrowRightRotate = faArrowRotateRight;\nvar faArrowRotateForward = faArrowRotateRight;\nvar faRedo = faArrowRotateRight;\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nvar faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLocation = faLocationCrosshairs;\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nvar faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z\"]\n};\nvar faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.4 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nvar faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [512, 512, [\"calendar-times\"], \"f273\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM337 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nvar faUserCog = faUserGear;\nvar faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M450.7 38c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V108.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUp = faArrowUp19;\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z\"]\n};\nvar faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M64 128V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H224 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nvar faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nvar faDigging = faPersonDigging;\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nvar faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGaugeSimpleMed = faGaugeSimple;\nvar faTachometerAverage = faGaugeSimple;\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z\"]\n};\nvar faQuoteRightAlt = faQuoteRight;\nvar faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z\"]\n};\nvar faTShirt = faShirt;\nvar faTshirt = faShirt;\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z\"]\n};\nvar faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTenge = faTengeSign;\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nvar faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [512, 512, [], \"e1a8\", \"M336 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V381c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nvar faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLinkAlt = faUpRightFromSquare;\nvar faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z\"]\n};\nvar faTh = faTableCells;\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z\"]\n};\nvar faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z\"]\n};\nvar faBible = faBookBible;\nvar faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"]\n};\nvar faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faMedkit = faSuitcaseMedical;\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faFemale = faPersonDress;\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faBriefcaseClock = faBusinessTime;\nvar faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faThLarge = faTableCellsLarge;\nvar faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z\"]\n};\nvar faTanakh = faBookTanakh;\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nvar faVolumeControlPhone = faPhoneVolume;\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1h10.7c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32h-2.7c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64H544L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9H162.9c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2V384z\"]\n};\nvar faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [320, 512, [8356], \"f195\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H46c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nvar faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nvar faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z\"]\n};\nvar faBirthdayCake = faCakeCandles;\nvar faCake = faCakeCandles;\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nvar faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faAngleDoubleUp = faAnglesUp;\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [128206], \"f0c6\", \"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nvar faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M333.2 322.8l0 0-133.9-146 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65V149.1c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0h-76c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8V164c0 23.2 8.4 45.6 23.6 63.1l56 64.2 0 0 83.3 95.6 0 0 91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V364.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUpAlt = faArrowUp91;\nvar faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64V213.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1V448c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3V64z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nvar faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8h49z\"]\n};\nvar faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faUserMd = faUserDoctor;\nvar faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faInfoCircle = faCircleInfo;\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faCameraAlt = faCamera;\nvar faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z\"]\n};\nvar faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericAsc = faArrowDown19;\nvar faSortNumericDown = faArrowDown19;\nvar faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingWater = faHandHoldingDroplet;\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z\"]\n};\nvar faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H416L288 288V512H32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [448, 512, [], \"f560\", \"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nvar faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z\"]\n};\nvar faSortAlphaAsc = faArrowDownAZ;\nvar faSortAlphaDown = faArrowDownAZ;\nvar faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nvar faArrowLeftRotate = faArrowRotateLeft;\nvar faArrowRotateBack = faArrowRotateLeft;\nvar faArrowRotateBackward = faArrowRotateLeft;\nvar faUndo = faArrowRotateLeft;\nvar faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M96 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V224v64V448c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H96V64zm448 0v64h32c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H544v64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z\"]\n};\nvar faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"]\n};\nvar faListAlt = faRectangleList;\nvar faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z\"]\n};\nvar faSkiingNordic = faPersonSkiingNordic;\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [512, 512, [], \"f271\", \"M128 32V64H80c-26.5 0-48 21.5-48 48v48H480V112c0-26.5-21.5-48-48-48H384V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H192V32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 192H32V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V192zM256 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H176c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9L117.5 269.8c-3.5-3.8-5.5-8.7-5.5-13.8s2-10.1 5.5-13.8l99.9-107.1c4.2-4.5 10.1-7.1 16.3-7.1c12.3 0 22.3 10 22.3 22.3l0 57.7 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 57.7c0 12.3-10 22.3-22.3 22.3c-6.2 0-12.1-2.6-16.3-7.1z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSubway = faTrainSubway;\nvar faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z\"]\n};\nvar faIndianRupee = faIndianRupeeSign;\nvar faInr = faIndianRupeeSign;\nvar faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z\"]\n};\nvar faCropAlt = faCropSimple;\nvar faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"]\n};\nvar faLongArrowAltLeft = faLeftLong;\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faSubtract = faMinus;\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H60.2C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h4L60 384H196L180 256h4c13.3 0 24-10.7 24-24s-10.7-24-24-24h-1.8l32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24H488c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416H336zM304 208v51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384H462.5l-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7V208c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16v16H424V208c0-8.8-7.2-16-16-16H392c-8.8 0-16 7.2-16 16v16H352V208c0-8.8-7.2-16-16-16H320c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16v32H384V304z\"]\n};\nvar faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nvar faLongArrowLeft = faArrowLeftLong;\nvar faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nvar faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z\"]\n};\nvar faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nvar faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faAslInterpreting = faHandsAslInterpreting;\nvar faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faCog = faGear;\nvar faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.1 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0h-1.8c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTintSlash = faDropletSlash;\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z\"]\n};\nvar faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z\"]\n};\nvar faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShoppingCart = faCartShopping;\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z\"]\n};\nvar faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"]\n};\nvar faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nvar faLevelUp = faArrowTurnUp;\nvar faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"]\n};\nvar faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H344L238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H77.6c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faSquareRootAlt = faSquareRootVariable;\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z\"]\n};\nvar faStepBackward = faBackwardStep;\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z\"]\n};\nvar faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [512, 512, [], \"f432\", \"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [320, 512, [115], \"53\", \"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nvar faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nvar faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z\"]\n};\nvar faClinicMedical = faHouseChimneyMedical;\nvar faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V144c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature3 = faTemperatureThreeQuarters;\nvar faThermometer3 = faTemperatureThreeQuarters;\nvar faThermometerThreeQuarters = faTemperatureThreeQuarters;\nvar faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z\"]\n};\nvar faMobileAndroidAlt = faMobileScreen;\nvar faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h11.5c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm208 96H96V320H288V192z\"]\n};\nvar faBattery3 = faBatteryHalf;\nvar faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [9772], \"f66d\", \"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"]\n};\nvar faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"]\n};\nvar faSlidersH = faSliders;\nvar faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nvar faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z\"]\n};\nvar faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nvar faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"]\n};\nvar faEllipsisV = faEllipsisVertical;\nvar faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128v64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V320c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6V128c0-35.3-28.7-64-64-64H64zm64 112l0 160c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nvar faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"]\n};\nvar faLongArrowAltRight = faRightLong;\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1v36.1l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9v32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3v33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V416 345.5 312.8 249.5 216.8 153.5 120.8 64 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M128 0C92.7 0 64 28.7 64 64V288H19.2C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384H320V288H128V64H448V96h64V64c0-35.3-28.7-64-64-64H128zM512 128H400c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V256H544c-17.7 0-32-14.3-32-32V128zm32 0v96h96l-96-96z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4V144c-49.6-18.1-104-18.1-153.6 0v54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V336zm0 96c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V432zM144 320h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V336zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V336zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V432z\"]\n};\nvar faTeletype = faTty;\nvar faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z\"]\n};\nvar faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z\"]\n};\nvar faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nvar faHiking = faPersonHiking;\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nvar faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V448c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nvar faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z\"]\n};\nvar faTram = faCableCar;\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nvar faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [576, 512, [], \"e4b8\", \"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrin = faFaceGrin;\nvar faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faBackspace = faDeleteLeft;\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nvar faEyeDropperEmpty = faEyeDropper;\nvar faEyedropper = faEyeDropper;\nvar faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMobileAndroid = faMobile;\nvar faMobilePhone = faMobile;\nvar faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMeh = faFaceMeh;\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"]\n};\nvar faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nvar faBookDead = faBookSkull;\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [\"dedent\"], \"f03b\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"]\n};\nvar faDedent = faOutdent;\nvar faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nvar faHome = faHouse;\nvar faHomeAlt = faHouse;\nvar faHomeLgAlt = faHouse;\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H64zm96 192H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nvar faExchange = faArrowRightArrowLeft;\nvar faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"]\n};\nvar faRedoAlt = faRotateRight;\nvar faRotateForward = faRotateRight;\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nvar faCutlery = faUtensils;\nvar faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSortAmountUp = faArrowUpWideShort;\nvar faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nvar faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nvar faBroadcastTower = faTowerBroadcast;\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nvar faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192H96l0 288c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32l0-288h72c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLongArrowAltUp = faUpLong;\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nvar faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileDownload = faFileArrowDown;\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z\"]\n};\nvar faZap = faBolt;\nvar faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM73 156.5L66.4 64H317.6L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nvar faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z\"]\n};\nvar faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.2C48.8 31.5 29 27.6 14.3 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z\"]\n};\nvar faCny = faYenSign;\nvar faJpy = faYenSign;\nvar faRmb = faYenSign;\nvar faYen = faYenSign;\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faRouble = faRubleSign;\nvar faRub = faRubleSign;\nvar faRuble = faRubleSign;\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [640, 512, [], \"f7ab\", \"M64 464V316.9c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H112c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H384c-17.7 0-32 14.3-32 32V352c0 53-43 96-96 96s-96-43-96-96V160c0-17.7-14.3-32-32-32H48z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [576, 512, [], \"f275\", \"M64 32C46.3 32 32 46.3 32 64V304v48 80c0 26.5 21.5 48 48 48H496c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L352 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4V64c0-17.7-14.3-32-32-32H64z\"]\n};\nvar faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6L269.8 394.5c-3.8 3.5-8.7 5.5-13.8 5.5s-10.1-2-13.8-5.5L135.1 294.6c-4.5-4.2-7.1-10.1-7.1-16.3c0-12.3 10-22.3 22.3-22.3l57.7 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 57.7 0c12.3 0 22.3 10 22.3 22.3c0 6.2-2.6 12.1-7.1 16.3z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"]\n};\nvar faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z\"]\n};\nvar faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSortAmountDesc = faArrowDownShortWide;\nvar faSortAmountDownAlt = faArrowDownShortWide;\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h42.8c-6.6-5.9-10.8-14.4-10.8-24V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V488c0 9.6-4.2 18.1-10.8 24H448c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24V448H160v40c0 9.6-4.2 18.1-10.8 24H362.8zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416v16c0 26.5-21.5 48-48 48H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384H96c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H32C14.3 96 0 110.3 0 128V352c0 17.7 14.3 32 32 32z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLongArrowRight = faArrowRightLong;\nvar faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faEllipsisH = faEllipsis;\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88H96c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400H240L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32h-8.5zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H281.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432H64L22.6 473.4z\"]\n};\nvar faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z\"]\n};\nvar faFirstAid = faKitMedical;\nvar faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88v40H336V88c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zm-48 40V88c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56v40h28.1c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9V304H384V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H192V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H0V227.9c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1H128zM0 416V336H128v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H320v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H512v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faAutomobile = faCar;\nvar faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nvar faBookReader = faBookOpenReader;\nvar faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nvar faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H183.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176H337.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nvar faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nvar faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [576, 512, [\"temperature-up\"], \"e040\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z\"]\n};\nvar faTemperatureUp = faTemperatureArrowUp;\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0H133.9c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0H487.4C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHSquare = faSquareH;\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature4 = faTemperatureFull;\nvar faThermometer4 = faTemperatureFull;\nvar faThermometerFull = faTemperatureFull;\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"]\n};\nvar faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M544 248v3.3l69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5H296c-37.1 0-67.6 28-71.6 64H224V248c0 22.1 17.9 40 40 40s40-17.9 40-40V176c0 0 0-.1 0-.1V160l16 0 136 0c0 0 0 0 .1 0H464c44.2 0 80 35.8 80 80v8zM336 192v56c0 39.8-32.2 72-72 72s-72-32.2-72-72V129.4c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1H384c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16H432c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8v-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"]\n};\nvar faHandsHelping = faHandshakeAngle;\nvar faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMapMarkerAlt = faLocationDot;\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nvar faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faSwimmer = faPersonSwimming;\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nvar faTint = faDroplet;\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nvar faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faEarth = faEarthAmericas;\nvar faEarthAmerica = faEarthAmericas;\nvar faGlobeAmericas = faEarthAmericas;\nvar faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 160c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zM0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176z\"]\n};\nvar faBattery0 = faBatteryEmpty;\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z\"]\n};\nvar faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [256, 512, [], \"e447\", \"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nvar faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTachometerAlt = faGaugeHigh;\nvar faTachometerAltFast = faGaugeHigh;\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M32 192V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V192c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144H80L96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96h32c8.8 0 16-7.2 16-16V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432H384l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H38.6C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faReorder = faBarsStaggered;\nvar faStream = faBarsStaggered;\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nvar faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nvar faBlind = faPersonWalkingWithCane;\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [127848], \"f810\", \"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16H80c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H368c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288H96z\"]\n};\nvar faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nvar faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faVoteYea = faCheckToSlot;\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z\"]\n};\nvar faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0H208c-26.5 0-48 21.5-48 48V160c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V48c0-26.5-21.5-48-48-48H328V80c0 8.8-7.2 16-16 16H264c-8.8 0-16-7.2-16-16V0zM64 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H184v80c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V256H64zM352 512H512c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H472v80c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V256H352c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2V464c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nvar faBoxes = faBoxesStacked;\nvar faBoxesAlt = faBoxesStacked;\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nvar faChain = faLink;\nvar faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faAssistiveListeningSystems = faEarListen;\nvar faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"]\n};\nvar faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z\"]\n};\nvar faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nvar faSearch = faMagnifyingGlass;\nvar faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [640, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M480 288c-50.1 0-93.6 28.8-114.6 70.8L132.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C535.8 297.6 509 288 480 288zM113.3 151.9L354.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H357c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L152.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32c-6.3-6.3-9.7-14.9-9.4-23.8s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8c-24-24-37.5-56.6-37.5-90.5v-2.7c0-22.8 6.1-44.9 17.3-64.3zM480 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPingPongPaddleBall = faTableTennisPaddleBall;\nvar faTableTennis = faTableTennisPaddleBall;\nvar faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faDiagnoses = faPersonDotsFromLine;\nvar faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestoreAlt = faTrashCanArrowUp;\nvar faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32H360V134.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V32H120.1C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V285.7l-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faFileEdit = faFilePen;\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z\"]\n};\nvar faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPenSquare = faSquarePen;\nvar faPencilSquare = faSquarePen;\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm368 96H96V320H448V192z\"]\n};\nvar faBattery = faBatteryFull;\nvar faBattery5 = faBatteryFull;\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [128369, 9760], \"f714\", \"M368 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H176c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"]\n};\nvar faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faListDots = faListUl;\nvar faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96H592c26.5 0 48 21.5 48 48V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48H166.3L302.2 5.4zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nvar faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"]\n};\nvar faLongArrowAltDown = faDownLong;\nvar faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H408c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400H80L3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM38.6 473.4L80 432H368l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H54.6C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nvar faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z\"]\n};\nvar faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z\"]\n};\nvar faLandmarkAlt = faLandmarkDome;\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faTelevision = faTv;\nvar faTvAlt = faTv;\nvar faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [512, 512, [\"tasks\"], \"f0ae\", \"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faTasks = faListCheck;\nvar faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"]\n};\nvar faCarCrash = faCarBurst;\nvar faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nvar faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [512, 512, [127938, \"snowboarding\"], \"f7ce\", \"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H472c13.3 0 24 10.7 24 24s-10.7 24-24 24H443.8c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faSnowboarding = faPersonSnowboarding;\nvar faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faShippingFast = faTruckFast;\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"]\n};\nvar faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faAdjust = faCircleHalfStroke;\nvar faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faRadiationAlt = faCircleRadiation;\nvar faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nvar faBaseballBall = faBaseball;\nvar faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nvar faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faProjectDiagram = faDiagramProject;\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M272 0H396.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128H192v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z\"]\n};\nvar faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faVolumeMute = faVolumeXmark;\nvar faVolumeTimes = faVolumeXmark;\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nvar faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"]\n};\nvar faGripHorizontal = faGrip;\nvar faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224H305.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144h80V34.7C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2H384c-17.7 0-32-14.3-32-32V224zM80 96c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H400c8.8 0 16-7.2 16-16V384c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V112C0 67.8 35.8 32 80 32h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H80z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faChildCombatant = {\n prefix: 'fas',\n iconName: 'child-combatant',\n icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z\"]\n};\nvar faChildRifle = faChildCombatant;\nvar faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nvar faPhoneSquare = faSquarePhone;\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z\"]\n};\nvar faAdd = faPlus;\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z\"]\n};\nvar faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"]\n};\nvar faClose = faXmark;\nvar faMultiply = faXmark;\nvar faRemove = faXmark;\nvar faTimes = faXmark;\nvar faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faArrows = faArrowsUpDownLeftRight;\nvar faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nvar faChalkboardTeacher = faChalkboardUser;\nvar faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z\"]\n};\nvar faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nvar faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z\"]\n};\nvar faQuoteLeftAlt = faQuoteLeft;\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nvar faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestore = faTrashArrowUp;\nvar faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z\"]\n};\nvar faIls = faShekelSign;\nvar faShekel = faShekelSign;\nvar faSheqel = faShekelSign;\nvar faSheqelSign = faShekelSign;\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPhotoVideo = faPhotoFilm;\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z\"]\n};\nvar faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z\"]\n};\nvar faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faSign = faSignHanging;\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-87.5-68.6c.5-1.7 .7-3.5 .7-5.4c0-27.6-11-54.1-30.5-73.7L512 320c-20.5-20.5-32-48.3-32-77.3V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM160 242.7c0 29-11.5 56.8-32 77.3l-1.5 1.5C107 341 96 367.5 96 395.2c0 11.5 9.3 20.8 20.8 20.8H406.2L160 222.1v20.7zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faTabletAndroid = faTablet;\nvar faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0H400c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H320.7l89.6 64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288H67.5c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1l-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1l.1 0 29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5l0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faNotdef = {\n prefix: 'fas',\n iconName: 'notdef',\n icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7V390.3zM102.5 448H281.5L192 313.7 102.5 448zm128-192L320 390.3V121.7L230.5 256zM281.5 64H102.5L192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6h10c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [9002], \"f054\", \"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z\"]\n};\nvar faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCarAlt = faCarRear;\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm112 96H96V320h96V192z\"]\n};\nvar faBattery2 = faBatteryQuarter;\nvar faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faCarriageBaby = faBabyCarriage;\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faPercentage = faPercent;\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM83 297.5L66.4 64H317.6L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nvar faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z\"]\n};\nvar faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSmile = faFaceSmile;\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faThumbTack = faThumbtack;\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nvar faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nvar faPray = faPersonPraying;\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nvar faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSyncAlt = faRotate;\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8h-.7c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCogs = faGears;\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z\"]\n};\nvar faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faTransgenderAlt = faTransgender;\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"]\n};\nvar faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nvar faLevelDown = faArrowTurnDown;\nvar faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nvar faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192V128z\"]\n};\nvar faTicketAlt = faTicketSimple;\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faAngleDoubleLeft = faAnglesLeft;\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"]\n};\nvar faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\"]\n};\nvar faHistory = faClockRotateLeft;\nvar faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V288H216c-13.3 0-24 10.7-24 24s10.7 24 24 24H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM384 336V288H494.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H384zm0-208H256V0L384 128z\"]\n};\nvar faArrowRightFromFile = faFileExport;\nvar faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nvar faShieldBlank = faShield;\nvar faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faSortAmountUpAlt = faArrowUpShortWide;\nvar faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGolfBall = faGolfBallTee;\nvar faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nvar faChevronCircleLeft = faCircleChevronLeft;\nvar faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z\"]\n};\nvar faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [576, 512, [], \"e580\", \"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H224V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nvar faMagic = faWandMagic;\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nvar faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nvar faWineGlassAlt = faWineGlassEmpty;\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nvar faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faBiking = faPersonBiking;\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6v29.1L364.3 320h29.1c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nvar faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGlobeOceania = faEarthOceania;\nvar faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesSquare = faSquareXmark;\nvar faXmarkSquare = faSquareXmark;\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z\"]\n};\nvar faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512H24c-13.3 0-24-10.7-24-24V344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nvar faExpandAlt = faUpRightAndDownLeftFromCenter;\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z\"]\n};\nvar faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nvar faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nvar faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nvar faArrowsAltV = faUpDown;\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H367.9zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nvar faHaykal = faBahai;\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z\"]\n};\nvar faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusCircle = faCirclePlus;\nvar faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-366.1-8.3a.5 .5 0 1 1 -.9 .1 .5 .5 0 1 1 .9-.1z\"]\n};\nvar faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nvar faChainBroken = faLinkSlash;\nvar faChainSlash = faLinkSlash;\nvar faUnlink = faLinkSlash;\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M288 448H64V224h64V160H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64zm-64-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z\"]\n};\nvar faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nvar faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z\"]\n};\nvar faSortAlphaUpAlt = faArrowUpZA;\nvar faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nvar faFireAlt = faFireFlameCurved;\nvar faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z\"]\n};\nvar faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nvar faQuran = faBookQuran;\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFeed = faRss;\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nvar faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288H584.4L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320H199.3L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"]\n};\nvar faBalanceScale = faScaleBalanced;\nvar faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometer = faGaugeSimpleHigh;\nvar faTachometerFast = faGaugeSimpleHigh;\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z\"]\n};\nvar faDesktopAlt = faDesktop;\nvar faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.2c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V169.7L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nvar faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z\"]\n};\nvar faThList = faTableList;\nvar faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM202.9 176.8c6.5-2.2 13.7 .1 17.9 5.6L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2zm173.1 38c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.2-.4-23.7-4.4-32.6-7.4l0 0 0 0c-1.4-.5-2.7-.9-4-1.4c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.7 .6 3.3 1.1 4.9 1.6l0 0 0 0c9.1 3.1 15.6 5.3 22.6 5.5c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4c-7.2-2.2-16.7-5-24.3-9.6c-9-5.4-17.7-14.7-17.7-29.4c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c10 .2 19.7 2.3 27.9 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-7.3-1.9-14.1-3.3-20.1-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9zm-272 0c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.3-.4-24.2-4.5-33.2-7.6l0 0 0 0c-1.3-.4-2.5-.8-3.6-1.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.4 .5 2.8 .9 4.1 1.4l0 0 0 0c9.5 3.2 16.5 5.6 23.7 5.8c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4 0 0c-7.2-2.2-16.7-5-24.3-9.6C80.8 239 72.1 229.7 72 215c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c9.5 .1 22.2 2.1 31.1 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-6.6-1.8-16.8-3.3-23.3-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9z\"]\n};\nvar faSms = faCommentSms;\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [448, 512, [10003, 10004], \"f00c\", \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm272 96H96V320H352V192z\"]\n};\nvar faBattery4 = faBatteryThreeQuarters;\nvar faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nvar faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nvar faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z\"]\n};\nvar faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [448, 512, [9994, \"fist-raised\"], \"f6de\", \"M192 0c17.7 0 32 14.3 32 32V144H160V32c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faFistRaised = faHandFist;\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z\"]\n};\nvar faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z\"]\n};\nvar faPortrait = faImagePortrait;\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z\"]\n};\nvar faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGlobeEurope = faEarthEurope;\nvar faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faLuggageCart = faCartFlatbedSuitcase;\nvar faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V83.8c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nvar faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nvar faJournalWhills = faBookJournalWhills;\nvar faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faExclamationTriangle = faTriangleExclamation;\nvar faWarning = faTriangleExclamation;\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"arrow-turn-right\", \"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nvar faArrowTurnRight = faShare;\nvar faMailForward = faShare;\nvar faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [320, 512, [], \"e4c4\", \"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H104l0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"]\n};\nvar faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"]\n};\nvar faExchangeAlt = faRightLeft;\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nvar faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillWaveAlt = faMoneyBill1Wave;\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [576, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7v-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8 0 0 0 0 43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4H224 210.7l0 0H179l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352v8c0 83.9-68.1 152-152 152H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h92c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H56c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H224l0 0 0 0h93.2L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nvar faSignLanguage = faHands;\nvar faSigning = faHands;\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faLadderWater = faWaterLadder;\nvar faSwimmingPool = faWaterLadder;\nvar faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faArrowsV = faArrowsUpDown;\nvar faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faWheelchairAlt = faWheelchairMove;\nvar faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5h88l0-192c0-17.7-14.3-32-32-32H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192h88c9.6 0 18.2 5.7 22 14.5z\"]\n};\nvar faLevelDownAlt = faTurnDown;\nvar faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nvar faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nvar faEnvelopeSquare = faSquareEnvelope;\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H461.7c11.6 36 3.1 77-25.4 105.5L320 413.8V448zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z\"]\n};\nvar faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBandAid = faBandage;\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [512, 512, [], \"f272\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM344 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H168c-13.3 0-24 10.7-24 24s10.7 24 24 24H344z\"]\n};\nvar faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M0 32C0 14.3 14.3 0 32 0H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64C14.3 64 0 49.7 0 32zm96 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H240zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H112zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H368zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8H328z\"]\n};\nvar faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nvar faGlobeAsia = faEarthAsia;\nvar faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faIdCardAlt = faIdCardClip;\nvar faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faSearchPlus = faMagnifyingGlassPlus;\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faAllergies = faHandDots;\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCoffee = faMugSaucer;\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6h-19c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6H48C21.5 0 0 21.5 0 48V224v22.4V256H9.6 374.4 384v-9.6V224 48c0-26.5-21.5-48-48-48H230.5c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z\"]\n};\nvar faSearchMinus = faMagnifyingGlassMinus;\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z\"]\n};\nvar faUserAlt = faUserLarge;\nvar faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z\"]\n};\nvar faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z\"]\n};\nvar faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96zM160.3 256H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7V479.2z\"]\n};\nvar faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nvar faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nvar faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [64, 512, [10069, 10071, 61738], \"21\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [512, 512, [], \"e4bb\", \"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H448c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H64c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32H99.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224H412.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H448c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H64c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [384, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M96 32c17.7 0 32 14.3 32 32V99.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480H96c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faTry = faTurkishLiraSign;\nvar faTurkishLira = faTurkishLiraSign;\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faDollar = faDollarSign;\nvar faUsd = faDollarSign;\nvar faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nvar faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"]\n};\nvar faSearchDollar = faMagnifyingGlassDollar;\nvar faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3L574.4 311c-8.9-7.6-19.1-13.6-30.4-17.6v-21c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v21c-11.2 4-21.5 10-30.4 17.6l-18.2-10.5c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l18.2 10.5c-1 5.7-1.6 11.6-1.6 17.6s.6 11.9 1.6 17.5l-18.2 10.5c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3L449.6 457c8.9 7.6 19.2 13.6 30.4 17.6v21c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-21c11.2-4 21.5-10 30.4-17.6l18.2 10.5c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-18.2-10.5c1-5.7 1.6-11.6 1.6-17.5s-.6-11.9-1.6-17.6l18.2-10.5zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nvar faUsersCog = faUsersGear;\nvar faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z\"]\n};\nvar faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBank = faBuildingColumns;\nvar faInstitution = faBuildingColumns;\nvar faMuseum = faBuildingColumns;\nvar faUniversity = faBuildingColumns;\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M288 0c17.7 0 32 14.3 32 32V49.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nvar faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nvar faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 96C0 60.7 28.7 32 64 32h96c123.7 0 224 100.3 224 224s-100.3 224-224 224H64c-35.3 0-64-28.7-64-64V96zm160 0H64V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"]\n};\nvar faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z\"]\n};\nvar faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"]\n};\nvar faTheaterMasks = faMasksTheater;\nvar faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0V96L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm-64-64c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H224zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32H352c88.4 0 160-71.6 160-160V226.3c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64v88c0 22.1 17.9 40 40 40s40-17.9 40-40V160c0-8.8 7.2-16 16-16s16 7.2 16 16v56c0 39.8-32.2 72-72 72z\"]\n};\nvar faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nvar faHandshakeAlt = faHandshakeSimple;\nvar faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faFighterJet = faJetFighter;\nvar faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faShareAltSquare = faSquareShareNodes;\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nvar faVideoCamera = faVideo;\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nvar faMortarBoard = faGraduationCap;\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5h88l0 192c0 17.7-14.3 32-32 32H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192h88c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0: fa0,\n fa1: fa1,\n fa2: fa2,\n fa3: fa3,\n fa4: fa4,\n fa5: fa5,\n fa6: fa6,\n fa7: fa7,\n fa8: fa8,\n fa9: fa9,\n faFillDrip: faFillDrip,\n faArrowsToCircle: faArrowsToCircle,\n faCircleChevronRight: faCircleChevronRight,\n faChevronCircleRight: faChevronCircleRight,\n faAt: faAt,\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faTextHeight: faTextHeight,\n faUserXmark: faUserXmark,\n faUserTimes: faUserTimes,\n faStethoscope: faStethoscope,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faInfo: faInfo,\n faDownLeftAndUpRightToCenter: faDownLeftAndUpRightToCenter,\n faCompressAlt: faCompressAlt,\n faExplosion: faExplosion,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faWaveSquare: faWaveSquare,\n faRing: faRing,\n faBuildingUn: faBuildingUn,\n faDiceThree: faDiceThree,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faAnchorCircleCheck: faAnchorCircleCheck,\n faBuildingCircleArrowRight: faBuildingCircleArrowRight,\n faVolleyball: faVolleyball,\n faVolleyballBall: faVolleyballBall,\n faArrowsUpToLine: faArrowsUpToLine,\n faSortDown: faSortDown,\n faSortDesc: faSortDesc,\n faCircleMinus: faCircleMinus,\n faMinusCircle: faMinusCircle,\n faDoorOpen: faDoorOpen,\n faRightFromBracket: faRightFromBracket,\n faSignOutAlt: faSignOutAlt,\n faAtom: faAtom,\n faSoap: faSoap,\n faIcons: faIcons,\n faHeartMusicCameraBolt: faHeartMusicCameraBolt,\n faMicrophoneLinesSlash: faMicrophoneLinesSlash,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faBridgeCircleCheck: faBridgeCircleCheck,\n faPumpMedical: faPumpMedical,\n faFingerprint: faFingerprint,\n faHandPointRight: faHandPointRight,\n faMagnifyingGlassLocation: faMagnifyingGlassLocation,\n faSearchLocation: faSearchLocation,\n faForwardStep: faForwardStep,\n faStepForward: faStepForward,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFlagCheckered: faFlagCheckered,\n faFootball: faFootball,\n faFootballBall: faFootballBall,\n faSchoolCircleExclamation: faSchoolCircleExclamation,\n faCrop: faCrop,\n faAnglesDown: faAnglesDown,\n faAngleDoubleDown: faAngleDoubleDown,\n faUsersRectangle: faUsersRectangle,\n faPeopleRoof: faPeopleRoof,\n faPeopleLine: faPeopleLine,\n faBeerMugEmpty: faBeerMugEmpty,\n faBeer: faBeer,\n faDiagramPredecessor: faDiagramPredecessor,\n faArrowUpLong: faArrowUpLong,\n faLongArrowUp: faLongArrowUp,\n faFireFlameSimple: faFireFlameSimple,\n faBurn: faBurn,\n faPerson: faPerson,\n faMale: faMale,\n faLaptop: faLaptop,\n faFileCsv: faFileCsv,\n faMenorah: faMenorah,\n faTruckPlane: faTruckPlane,\n faRecordVinyl: faRecordVinyl,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faBong: faBong,\n faSpaghettiMonsterFlying: faSpaghettiMonsterFlying,\n faPastafarianism: faPastafarianism,\n faArrowDownUpAcrossLine: faArrowDownUpAcrossLine,\n faSpoon: faSpoon,\n faUtensilSpoon: faUtensilSpoon,\n faJarWheat: faJarWheat,\n faEnvelopesBulk: faEnvelopesBulk,\n faMailBulk: faMailBulk,\n faFileCircleExclamation: faFileCircleExclamation,\n faCircleH: faCircleH,\n faHospitalSymbol: faHospitalSymbol,\n faPager: faPager,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faStrikethrough: faStrikethrough,\n faK: faK,\n faLandmarkFlag: faLandmarkFlag,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faBackward: faBackward,\n faCaretRight: faCaretRight,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faCodePullRequest: faCodePullRequest,\n faClipboardList: faClipboardList,\n faTruckRampBox: faTruckRampBox,\n faTruckLoading: faTruckLoading,\n faUserCheck: faUserCheck,\n faVialVirus: faVialVirus,\n faSheetPlastic: faSheetPlastic,\n faBlog: faBlog,\n faUserNinja: faUserNinja,\n faPersonArrowUpFromLine: faPersonArrowUpFromLine,\n faScrollTorah: faScrollTorah,\n faTorah: faTorah,\n faBroomBall: faBroomBall,\n faQuidditch: faQuidditch,\n faQuidditchBroomBall: faQuidditchBroomBall,\n faToggleOff: faToggleOff,\n faBoxArchive: faBoxArchive,\n faArchive: faArchive,\n faPersonDrowning: faPersonDrowning,\n faArrowDown91: faArrowDown91,\n faSortNumericDesc: faSortNumericDesc,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faSprayCan: faSprayCan,\n faTruckMonster: faTruckMonster,\n faW: faW,\n faEarthAfrica: faEarthAfrica,\n faGlobeAfrica: faGlobeAfrica,\n faRainbow: faRainbow,\n faCircleNotch: faCircleNotch,\n faTabletScreenButton: faTabletScreenButton,\n faTabletAlt: faTabletAlt,\n faPaw: faPaw,\n faCloud: faCloud,\n faTrowelBricks: faTrowelBricks,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faHospitalUser: faHospitalUser,\n faTentArrowLeftRight: faTentArrowLeftRight,\n faGavel: faGavel,\n faLegal: faLegal,\n faBinoculars: faBinoculars,\n faMicrophoneSlash: faMicrophoneSlash,\n faBoxTissue: faBoxTissue,\n faMotorcycle: faMotorcycle,\n faBellConcierge: faBellConcierge,\n faConciergeBell: faConciergeBell,\n faPenRuler: faPenRuler,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleArrowsLeftRight: faPeopleArrowsLeftRight,\n faMarsAndVenusBurst: faMarsAndVenusBurst,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faScissors: faScissors,\n faCut: faCut,\n faSunPlantWilt: faSunPlantWilt,\n faToiletsPortable: faToiletsPortable,\n faHockeyPuck: faHockeyPuck,\n faTable: faTable,\n faMagnifyingGlassArrowRight: faMagnifyingGlassArrowRight,\n faTachographDigital: faTachographDigital,\n faDigitalTachograph: faDigitalTachograph,\n faUsersSlash: faUsersSlash,\n faClover: faClover,\n faReply: faReply,\n faMailReply: faMailReply,\n faStarAndCrescent: faStarAndCrescent,\n faHouseFire: faHouseFire,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faHelicopter: faHelicopter,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFileCircleQuestion: faFileCircleQuestion,\n faLaptopCode: faLaptopCode,\n faSwatchbook: faSwatchbook,\n faPrescriptionBottle: faPrescriptionBottle,\n faBars: faBars,\n faNavicon: faNavicon,\n faPeopleGroup: faPeopleGroup,\n faHourglassEnd: faHourglassEnd,\n faHourglass3: faHourglass3,\n faHeartCrack: faHeartCrack,\n faHeartBroken: faHeartBroken,\n faSquareUpRight: faSquareUpRight,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faFilm: faFilm,\n faRulerHorizontal: faRulerHorizontal,\n faPeopleRobbery: faPeopleRobbery,\n faLightbulb: faLightbulb,\n faCaretLeft: faCaretLeft,\n faCircleExclamation: faCircleExclamation,\n faExclamationCircle: faExclamationCircle,\n faSchoolCircleXmark: faSchoolCircleXmark,\n faArrowRightFromBracket: faArrowRightFromBracket,\n faSignOut: faSignOut,\n faCircleChevronDown: faCircleChevronDown,\n faChevronCircleDown: faChevronCircleDown,\n faUnlockKeyhole: faUnlockKeyhole,\n faUnlockAlt: faUnlockAlt,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faHeadphonesSimple: faHeadphonesSimple,\n faHeadphonesAlt: faHeadphonesAlt,\n faSitemap: faSitemap,\n faCircleDollarToSlot: faCircleDollarToSlot,\n faDonate: faDonate,\n faMemory: faMemory,\n faRoadSpikes: faRoadSpikes,\n faFireBurner: faFireBurner,\n faFlag: faFlag,\n faHanukiah: faHanukiah,\n faFeather: faFeather,\n faVolumeLow: faVolumeLow,\n faVolumeDown: faVolumeDown,\n faCommentSlash: faCommentSlash,\n faCloudSunRain: faCloudSunRain,\n faCompress: faCompress,\n faWheatAwn: faWheatAwn,\n faWheatAlt: faWheatAlt,\n faAnkh: faAnkh,\n faHandsHoldingChild: faHandsHoldingChild,\n faAsterisk: faAsterisk,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faPesetaSign: faPesetaSign,\n faHeading: faHeading,\n faHeader: faHeader,\n faGhost: faGhost,\n faList: faList,\n faListSquares: faListSquares,\n faSquarePhoneFlip: faSquarePhoneFlip,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faCartPlus: faCartPlus,\n faGamepad: faGamepad,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faEgg: faEgg,\n faHouseMedicalCircleXmark: faHouseMedicalCircleXmark,\n faCampground: faCampground,\n faFolderPlus: faFolderPlus,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPaintbrush: faPaintbrush,\n faPaintBrush: faPaintBrush,\n faLock: faLock,\n faGasPump: faGasPump,\n faHotTubPerson: faHotTubPerson,\n faHotTub: faHotTub,\n faMapLocation: faMapLocation,\n faMapMarked: faMapMarked,\n faHouseFloodWater: faHouseFloodWater,\n faTree: faTree,\n faBridgeLock: faBridgeLock,\n faSackDollar: faSackDollar,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faCarSide: faCarSide,\n faShareNodes: faShareNodes,\n faShareAlt: faShareAlt,\n faHeartCircleMinus: faHeartCircleMinus,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faMicroscope: faMicroscope,\n faSink: faSink,\n faBagShopping: faBagShopping,\n faShoppingBag: faShoppingBag,\n faArrowDownZA: faArrowDownZA,\n faSortAlphaDesc: faSortAlphaDesc,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faMitten: faMitten,\n faPersonRays: faPersonRays,\n faUsers: faUsers,\n faEyeSlash: faEyeSlash,\n faFlaskVial: faFlaskVial,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faOm: faOm,\n faWorm: faWorm,\n faHouseCircleXmark: faHouseCircleXmark,\n faPlug: faPlug,\n faChevronUp: faChevronUp,\n faHandSpock: faHandSpock,\n faStopwatch: faStopwatch,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faBridgeCircleXmark: faBridgeCircleXmark,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faEarDeaf: faEarDeaf,\n faDeaf: faDeaf,\n faDeafness: faDeafness,\n faHardOfHearing: faHardOfHearing,\n faRoadCircleCheck: faRoadCircleCheck,\n faDiceFive: faDiceFive,\n faSquareRss: faSquareRss,\n faRssSquare: faRssSquare,\n faLandMineOn: faLandMineOn,\n faICursor: faICursor,\n faStamp: faStamp,\n faStairs: faStairs,\n faI: faI,\n faHryvniaSign: faHryvniaSign,\n faHryvnia: faHryvnia,\n faPills: faPills,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faTooth: faTooth,\n faV: faV,\n faBangladeshiTakaSign: faBangladeshiTakaSign,\n faBicycle: faBicycle,\n faStaffSnake: faStaffSnake,\n faRodAsclepius: faRodAsclepius,\n faRodSnake: faRodSnake,\n faStaffAesculapius: faStaffAesculapius,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faTruckMedical: faTruckMedical,\n faAmbulance: faAmbulance,\n faWheatAwnCircleExclamation: faWheatAwnCircleExclamation,\n faSnowman: faSnowman,\n faMortarPestle: faMortarPestle,\n faRoadBarrier: faRoadBarrier,\n faSchool: faSchool,\n faIgloo: faIgloo,\n faJoint: faJoint,\n faAngleRight: faAngleRight,\n faHorse: faHorse,\n faQ: faQ,\n faG: faG,\n faNotesMedical: faNotesMedical,\n faTemperatureHalf: faTemperatureHalf,\n faTemperature2: faTemperature2,\n faThermometer2: faThermometer2,\n faThermometerHalf: faThermometerHalf,\n faDongSign: faDongSign,\n faCapsules: faCapsules,\n faPooStorm: faPooStorm,\n faPooBolt: faPooBolt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faMoneyBill: faMoneyBill,\n faBookmark: faBookmark,\n faAlignJustify: faAlignJustify,\n faUmbrellaBeach: faUmbrellaBeach,\n faHelmetUn: faHelmetUn,\n faBullseye: faBullseye,\n faBacon: faBacon,\n faHandPointDown: faHandPointDown,\n faArrowUpFromBracket: faArrowUpFromBracket,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faFileWaveform: faFileWaveform,\n faFileMedicalAlt: faFileMedicalAlt,\n faRadiation: faRadiation,\n faChartSimple: faChartSimple,\n faMarsStroke: faMarsStroke,\n faVial: faVial,\n faGauge: faGauge,\n faDashboard: faDashboard,\n faGaugeMed: faGaugeMed,\n faTachometerAltAverage: faTachometerAltAverage,\n faWandMagicSparkles: faWandMagicSparkles,\n faMagicWandSparkles: faMagicWandSparkles,\n faE: faE,\n faPenClip: faPenClip,\n faPenAlt: faPenAlt,\n faBridgeCircleExclamation: faBridgeCircleExclamation,\n faUser: faUser,\n faSchoolCircleCheck: faSchoolCircleCheck,\n faDumpster: faDumpster,\n faVanShuttle: faVanShuttle,\n faShuttleVan: faShuttleVan,\n faBuildingUser: faBuildingUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faHighlighter: faHighlighter,\n faKey: faKey,\n faBullhorn: faBullhorn,\n faGlobe: faGlobe,\n faSynagogue: faSynagogue,\n faPersonHalfDress: faPersonHalfDress,\n faRoadBridge: faRoadBridge,\n faLocationArrow: faLocationArrow,\n faC: faC,\n faTabletButton: faTabletButton,\n faBuildingLock: faBuildingLock,\n faPizzaSlice: faPizzaSlice,\n faMoneyBillWave: faMoneyBillWave,\n faChartArea: faChartArea,\n faAreaChart: faAreaChart,\n faHouseFlag: faHouseFlag,\n faPersonCircleMinus: faPersonCircleMinus,\n faBan: faBan,\n faCancel: faCancel,\n faCameraRotate: faCameraRotate,\n faSprayCanSparkles: faSprayCanSparkles,\n faAirFreshener: faAirFreshener,\n faStar: faStar,\n faRepeat: faRepeat,\n faCross: faCross,\n faBox: faBox,\n faVenusMars: faVenusMars,\n faArrowPointer: faArrowPointer,\n faMousePointer: faMousePointer,\n faMaximize: faMaximize,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faChargingStation: faChargingStation,\n faShapes: faShapes,\n faTriangleCircleSquare: faTriangleCircleSquare,\n faShuffle: faShuffle,\n faRandom: faRandom,\n faPersonRunning: faPersonRunning,\n faRunning: faRunning,\n faMobileRetro: faMobileRetro,\n faGripLinesVertical: faGripLinesVertical,\n faSpider: faSpider,\n faHandsBound: faHandsBound,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faPlaneCircleExclamation: faPlaneCircleExclamation,\n faXRay: faXRay,\n faSpellCheck: faSpellCheck,\n faSlash: faSlash,\n faComputerMouse: faComputerMouse,\n faMouse: faMouse,\n faArrowRightToBracket: faArrowRightToBracket,\n faSignIn: faSignIn,\n faShopSlash: faShopSlash,\n faStoreAltSlash: faStoreAltSlash,\n faServer: faServer,\n faVirusCovidSlash: faVirusCovidSlash,\n faShopLock: faShopLock,\n faHourglassStart: faHourglassStart,\n faHourglass1: faHourglass1,\n faBlenderPhone: faBlenderPhone,\n faBuildingWheat: faBuildingWheat,\n faPersonBreastfeeding: faPersonBreastfeeding,\n faRightToBracket: faRightToBracket,\n faSignInAlt: faSignInAlt,\n faVenus: faVenus,\n faPassport: faPassport,\n faHeartPulse: faHeartPulse,\n faHeartbeat: faHeartbeat,\n faPeopleCarryBox: faPeopleCarryBox,\n faPeopleCarry: faPeopleCarry,\n faTemperatureHigh: faTemperatureHigh,\n faMicrochip: faMicrochip,\n faCrown: faCrown,\n faWeightHanging: faWeightHanging,\n faXmarksLines: faXmarksLines,\n faFilePrescription: faFilePrescription,\n faWeightScale: faWeightScale,\n faWeight: faWeight,\n faUserGroup: faUserGroup,\n faUserFriends: faUserFriends,\n faArrowUpAZ: faArrowUpAZ,\n faSortAlphaUp: faSortAlphaUp,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faWheelchair: faWheelchair,\n faCircleArrowUp: faCircleArrowUp,\n faArrowCircleUp: faArrowCircleUp,\n faToggleOn: faToggleOn,\n faPersonWalking: faPersonWalking,\n faWalking: faWalking,\n faL: faL,\n faFire: faFire,\n faBedPulse: faBedPulse,\n faProcedures: faProcedures,\n faShuttleSpace: faShuttleSpace,\n faSpaceShuttle: faSpaceShuttle,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faHeartCirclePlus: faHeartCirclePlus,\n faCodeFork: faCodeFork,\n faCity: faCity,\n faMicrophoneLines: faMicrophoneLines,\n faMicrophoneAlt: faMicrophoneAlt,\n faPepperHot: faPepperHot,\n faUnlock: faUnlock,\n faColonSign: faColonSign,\n faHeadset: faHeadset,\n faStoreSlash: faStoreSlash,\n faRoadCircleXmark: faRoadCircleXmark,\n faUserMinus: faUserMinus,\n faMarsStrokeUp: faMarsStrokeUp,\n faMarsStrokeV: faMarsStrokeV,\n faChampagneGlasses: faChampagneGlasses,\n faGlassCheers: faGlassCheers,\n faClipboard: faClipboard,\n faHouseCircleExclamation: faHouseCircleExclamation,\n faFileArrowUp: faFileArrowUp,\n faFileUpload: faFileUpload,\n faWifi: faWifi,\n faWifi3: faWifi3,\n faWifiStrong: faWifiStrong,\n faBath: faBath,\n faBathtub: faBathtub,\n faUnderline: faUnderline,\n faUserPen: faUserPen,\n faUserEdit: faUserEdit,\n faSignature: faSignature,\n faStroopwafel: faStroopwafel,\n faBold: faBold,\n faAnchorLock: faAnchorLock,\n faBuildingNgo: faBuildingNgo,\n faManatSign: faManatSign,\n faNotEqual: faNotEqual,\n faBorderTopLeft: faBorderTopLeft,\n faBorderStyle: faBorderStyle,\n faMapLocationDot: faMapLocationDot,\n faMapMarkedAlt: faMapMarkedAlt,\n faJedi: faJedi,\n faSquarePollVertical: faSquarePollVertical,\n faPoll: faPoll,\n faMugHot: faMugHot,\n faCarBattery: faCarBattery,\n faBatteryCar: faBatteryCar,\n faGift: faGift,\n faDiceTwo: faDiceTwo,\n faChessQueen: faChessQueen,\n faGlasses: faGlasses,\n faChessBoard: faChessBoard,\n faBuildingCircleCheck: faBuildingCircleCheck,\n faPersonChalkboard: faPersonChalkboard,\n faMarsStrokeRight: faMarsStrokeRight,\n faMarsStrokeH: faMarsStrokeH,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faCloudShowersWater: faCloudShowersWater,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faHandsBubbles: faHandsBubbles,\n faHandsWash: faHandsWash,\n faLessThanEqual: faLessThanEqual,\n faTrain: faTrain,\n faEyeLowVision: faEyeLowVision,\n faLowVision: faLowVision,\n faCrow: faCrow,\n faSailboat: faSailboat,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faToriiGate: faToriiGate,\n faFrog: faFrog,\n faBucket: faBucket,\n faImage: faImage,\n faMicrophone: faMicrophone,\n faCow: faCow,\n faCaretUp: faCaretUp,\n faScrewdriver: faScrewdriver,\n faFolderClosed: faFolderClosed,\n faHouseTsunami: faHouseTsunami,\n faSquareNfi: faSquareNfi,\n faArrowUpFromGroundWater: faArrowUpFromGroundWater,\n faMartiniGlass: faMartiniGlass,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faRotateLeft: faRotateLeft,\n faRotateBack: faRotateBack,\n faRotateBackward: faRotateBackward,\n faUndoAlt: faUndoAlt,\n faTableColumns: faTableColumns,\n faColumns: faColumns,\n faLemon: faLemon,\n faHeadSideMask: faHeadSideMask,\n faHandshake: faHandshake,\n faGem: faGem,\n faDolly: faDolly,\n faDollyBox: faDollyBox,\n faSmoking: faSmoking,\n faMinimize: faMinimize,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faMonument: faMonument,\n faSnowplow: faSnowplow,\n faAnglesRight: faAnglesRight,\n faAngleDoubleRight: faAngleDoubleRight,\n faCannabis: faCannabis,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faTablets: faTablets,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faEur: faEur,\n faEuro: faEuro,\n faChair: faChair,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faCompassDrafting: faCompassDrafting,\n faDraftingCompass: faDraftingCompass,\n faPlateWheat: faPlateWheat,\n faIcicles: faIcicles,\n faPersonShelter: faPersonShelter,\n faNeuter: faNeuter,\n faIdBadge: faIdBadge,\n faMarker: faMarker,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faHelicopterSymbol: faHelicopterSymbol,\n faUniversalAccess: faUniversalAccess,\n faCircleChevronUp: faCircleChevronUp,\n faChevronCircleUp: faChevronCircleUp,\n faLariSign: faLariSign,\n faVolcano: faVolcano,\n faPersonWalkingDashedLineArrowRight: faPersonWalkingDashedLineArrowRight,\n faSterlingSign: faSterlingSign,\n faGbp: faGbp,\n faPoundSign: faPoundSign,\n faViruses: faViruses,\n faSquarePersonConfined: faSquarePersonConfined,\n faUserTie: faUserTie,\n faArrowDownLong: faArrowDownLong,\n faLongArrowDown: faLongArrowDown,\n faTentArrowDownToLine: faTentArrowDownToLine,\n faCertificate: faCertificate,\n faReplyAll: faReplyAll,\n faMailReplyAll: faMailReplyAll,\n faSuitcase: faSuitcase,\n faPersonSkating: faPersonSkating,\n faSkating: faSkating,\n faFilterCircleDollar: faFilterCircleDollar,\n faFunnelDollar: faFunnelDollar,\n faCameraRetro: faCameraRetro,\n faCircleArrowDown: faCircleArrowDown,\n faArrowCircleDown: faArrowCircleDown,\n faFileImport: faFileImport,\n faArrowRightToFile: faArrowRightToFile,\n faSquareArrowUpRight: faSquareArrowUpRight,\n faExternalLinkSquare: faExternalLinkSquare,\n faBoxOpen: faBoxOpen,\n faScroll: faScroll,\n faSpa: faSpa,\n faLocationPinLock: faLocationPinLock,\n faPause: faPause,\n faHillAvalanche: faHillAvalanche,\n faTemperatureEmpty: faTemperatureEmpty,\n faTemperature0: faTemperature0,\n faThermometer0: faThermometer0,\n faThermometerEmpty: faThermometerEmpty,\n faBomb: faBomb,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faScaleUnbalancedFlip: faScaleUnbalancedFlip,\n faBalanceScaleRight: faBalanceScaleRight,\n faSubscript: faSubscript,\n faDiamondTurnRight: faDiamondTurnRight,\n faDirections: faDirections,\n faBurst: faBurst,\n faHouseLaptop: faHouseLaptop,\n faLaptopHouse: faLaptopHouse,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faMoneyBills: faMoneyBills,\n faSmog: faSmog,\n faCrutch: faCrutch,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faCloudArrowUp: faCloudArrowUp,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faPalette: faPalette,\n faArrowsTurnRight: faArrowsTurnRight,\n faVest: faVest,\n faFerry: faFerry,\n faArrowsDownToPeople: faArrowsDownToPeople,\n faSeedling: faSeedling,\n faSprout: faSprout,\n faLeftRight: faLeftRight,\n faArrowsAltH: faArrowsAltH,\n faBoxesPacking: faBoxesPacking,\n faCircleArrowLeft: faCircleArrowLeft,\n faArrowCircleLeft: faArrowCircleLeft,\n faGroupArrowsRotate: faGroupArrowsRotate,\n faBowlFood: faBowlFood,\n faCandyCane: faCandyCane,\n faArrowDownWideShort: faArrowDownWideShort,\n faSortAmountAsc: faSortAmountAsc,\n faSortAmountDown: faSortAmountDown,\n faCloudBolt: faCloudBolt,\n faThunderstorm: faThunderstorm,\n faTextSlash: faTextSlash,\n faRemoveFormat: faRemoveFormat,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faArrowsLeftRight: faArrowsLeftRight,\n faArrowsH: faArrowsH,\n faHouseLock: faHouseLock,\n faCloudArrowDown: faCloudArrowDown,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faChildren: faChildren,\n faChalkboard: faChalkboard,\n faBlackboard: faBlackboard,\n faUserLargeSlash: faUserLargeSlash,\n faUserAltSlash: faUserAltSlash,\n faEnvelopeOpen: faEnvelopeOpen,\n faHandshakeSimpleSlash: faHandshakeSimpleSlash,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faMattressPillow: faMattressPillow,\n faGuaraniSign: faGuaraniSign,\n faArrowsRotate: faArrowsRotate,\n faRefresh: faRefresh,\n faSync: faSync,\n faFireExtinguisher: faFireExtinguisher,\n faCruzeiroSign: faCruzeiroSign,\n faGreaterThanEqual: faGreaterThanEqual,\n faShieldHalved: faShieldHalved,\n faShieldAlt: faShieldAlt,\n faBookAtlas: faBookAtlas,\n faAtlas: faAtlas,\n faVirus: faVirus,\n faEnvelopeCircleCheck: faEnvelopeCircleCheck,\n faLayerGroup: faLayerGroup,\n faArrowsToDot: faArrowsToDot,\n faArchway: faArchway,\n faHeartCircleCheck: faHeartCircleCheck,\n faHouseChimneyCrack: faHouseChimneyCrack,\n faHouseDamage: faHouseDamage,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faMartiniGlassEmpty: faMartiniGlassEmpty,\n faGlassMartini: faGlassMartini,\n faCouch: faCouch,\n faCediSign: faCediSign,\n faItalic: faItalic,\n faChurch: faChurch,\n faCommentsDollar: faCommentsDollar,\n faDemocrat: faDemocrat,\n faZ: faZ,\n faPersonSkiing: faPersonSkiing,\n faSkiing: faSkiing,\n faRoadLock: faRoadLock,\n faA: faA,\n faTemperatureArrowDown: faTemperatureArrowDown,\n faTemperatureDown: faTemperatureDown,\n faFeatherPointed: faFeatherPointed,\n faFeatherAlt: faFeatherAlt,\n faP: faP,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faRectangleAd: faRectangleAd,\n faAd: faAd,\n faCircleArrowRight: faCircleArrowRight,\n faArrowCircleRight: faArrowCircleRight,\n faFilterCircleXmark: faFilterCircleXmark,\n faLocust: faLocust,\n faSort: faSort,\n faUnsorted: faUnsorted,\n faListOl: faListOl,\n faList12: faList12,\n faListNumeric: faListNumeric,\n faPersonDressBurst: faPersonDressBurst,\n faMoneyCheckDollar: faMoneyCheckDollar,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faVectorSquare: faVectorSquare,\n faBreadSlice: faBreadSlice,\n faLanguage: faLanguage,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faFilter: faFilter,\n faQuestion: faQuestion,\n faFileSignature: faFileSignature,\n faUpDownLeftRight: faUpDownLeftRight,\n faArrowsAlt: faArrowsAlt,\n faHouseChimneyUser: faHouseChimneyUser,\n faHandHoldingHeart: faHandHoldingHeart,\n faPuzzlePiece: faPuzzlePiece,\n faMoneyCheck: faMoneyCheck,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faCode: faCode,\n faWhiskeyGlass: faWhiskeyGlass,\n faGlassWhiskey: faGlassWhiskey,\n faBuildingCircleExclamation: faBuildingCircleExclamation,\n faMagnifyingGlassChart: faMagnifyingGlassChart,\n faArrowUpRightFromSquare: faArrowUpRightFromSquare,\n faExternalLink: faExternalLink,\n faCubesStacked: faCubesStacked,\n faWonSign: faWonSign,\n faKrw: faKrw,\n faWon: faWon,\n faVirusCovid: faVirusCovid,\n faAustralSign: faAustralSign,\n faF: faF,\n faLeaf: faLeaf,\n faRoad: faRoad,\n faTaxi: faTaxi,\n faCab: faCab,\n faPersonCirclePlus: faPersonCirclePlus,\n faChartPie: faChartPie,\n faPieChart: faPieChart,\n faBoltLightning: faBoltLightning,\n faSackXmark: faSackXmark,\n faFileExcel: faFileExcel,\n faFileContract: faFileContract,\n faFishFins: faFishFins,\n faBuildingFlag: faBuildingFlag,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faPoop: faPoop,\n faLocationPin: faLocationPin,\n faMapMarker: faMapMarker,\n faKaaba: faKaaba,\n faToiletPaper: faToiletPaper,\n faHelmetSafety: faHelmetSafety,\n faHardHat: faHardHat,\n faHatHard: faHatHard,\n faEject: faEject,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faPlaneCircleCheck: faPlaneCircleCheck,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faChartLine: faChartLine,\n faLineChart: faLineChart,\n faMaskVentilator: faMaskVentilator,\n faArrowRight: faArrowRight,\n faSignsPost: faSignsPost,\n faMapSigns: faMapSigns,\n faCashRegister: faCashRegister,\n faPersonCircleQuestion: faPersonCircleQuestion,\n faH: faH,\n faTarp: faTarp,\n faScrewdriverWrench: faScrewdriverWrench,\n faTools: faTools,\n faArrowsToEye: faArrowsToEye,\n faPlugCircleBolt: faPlugCircleBolt,\n faHeart: faHeart,\n faMarsAndVenus: faMarsAndVenus,\n faHouseUser: faHouseUser,\n faHomeUser: faHomeUser,\n faDumpsterFire: faDumpsterFire,\n faHouseCrack: faHouseCrack,\n faMartiniGlassCitrus: faMartiniGlassCitrus,\n faCocktail: faCocktail,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faBottleWater: faBottleWater,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faToiletPaperSlash: faToiletPaperSlash,\n faAppleWhole: faAppleWhole,\n faAppleAlt: faAppleAlt,\n faKitchenSet: faKitchenSet,\n faR: faR,\n faTemperatureQuarter: faTemperatureQuarter,\n faTemperature1: faTemperature1,\n faThermometer1: faThermometer1,\n faThermometerQuarter: faThermometerQuarter,\n faCube: faCube,\n faBitcoinSign: faBitcoinSign,\n faShieldDog: faShieldDog,\n faSolarPanel: faSolarPanel,\n faLockOpen: faLockOpen,\n faElevator: faElevator,\n faMoneyBillTransfer: faMoneyBillTransfer,\n faMoneyBillTrendUp: faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight: faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal: faSquarePollHorizontal,\n faPollH: faPollH,\n faCircle: faCircle,\n faBackwardFast: faBackwardFast,\n faFastBackward: faFastBackward,\n faRecycle: faRecycle,\n faUserAstronaut: faUserAstronaut,\n faPlaneSlash: faPlaneSlash,\n faTrademark: faTrademark,\n faBasketball: faBasketball,\n faBasketballBall: faBasketballBall,\n faSatelliteDish: faSatelliteDish,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faMobileScreenButton: faMobileScreenButton,\n faMobileAlt: faMobileAlt,\n faVolumeHigh: faVolumeHigh,\n faVolumeUp: faVolumeUp,\n faUsersRays: faUsersRays,\n faWallet: faWallet,\n faClipboardCheck: faClipboardCheck,\n faFileAudio: faFileAudio,\n faBurger: faBurger,\n faHamburger: faHamburger,\n faWrench: faWrench,\n faBugs: faBugs,\n faRupeeSign: faRupeeSign,\n faRupee: faRupee,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faPlaneDeparture: faPlaneDeparture,\n faHandshakeSlash: faHandshakeSlash,\n faBookBookmark: faBookBookmark,\n faCodeBranch: faCodeBranch,\n faHatCowboy: faHatCowboy,\n faBridge: faBridge,\n faPhoneFlip: faPhoneFlip,\n faPhoneAlt: faPhoneAlt,\n faTruckFront: faTruckFront,\n faCat: faCat,\n faAnchorCircleExclamation: faAnchorCircleExclamation,\n faTruckField: faTruckField,\n faRoute: faRoute,\n faClipboardQuestion: faClipboardQuestion,\n faPanorama: faPanorama,\n faCommentMedical: faCommentMedical,\n faTeethOpen: faTeethOpen,\n faFileCircleMinus: faFileCircleMinus,\n faTags: faTags,\n faWineGlass: faWineGlass,\n faForwardFast: faForwardFast,\n faFastForward: faFastForward,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faSquareParking: faSquareParking,\n faParking: faParking,\n faHouseSignal: faHouseSignal,\n faBarsProgress: faBarsProgress,\n faTasksAlt: faTasksAlt,\n faFaucetDrip: faFaucetDrip,\n faCartFlatbed: faCartFlatbed,\n faDollyFlatbed: faDollyFlatbed,\n faBanSmoking: faBanSmoking,\n faSmokingBan: faSmokingBan,\n faTerminal: faTerminal,\n faMobileButton: faMobileButton,\n faHouseMedicalFlag: faHouseMedicalFlag,\n faBasketShopping: faBasketShopping,\n faShoppingBasket: faShoppingBasket,\n faTape: faTape,\n faBusSimple: faBusSimple,\n faBusAlt: faBusAlt,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faAudioDescription: faAudioDescription,\n faPersonMilitaryToPerson: faPersonMilitaryToPerson,\n faFileShield: faFileShield,\n faUserSlash: faUserSlash,\n faPen: faPen,\n faTowerObservation: faTowerObservation,\n faFileCode: faFileCode,\n faSignal: faSignal,\n faSignal5: faSignal5,\n faSignalPerfect: faSignalPerfect,\n faBus: faBus,\n faHeartCircleXmark: faHeartCircleXmark,\n faHouseChimney: faHouseChimney,\n faHomeLg: faHomeLg,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faPrescription: faPrescription,\n faShop: faShop,\n faStoreAlt: faStoreAlt,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faVihara: faVihara,\n faScaleUnbalanced: faScaleUnbalanced,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faSortUp: faSortUp,\n faSortAsc: faSortAsc,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faPlantWilt: faPlantWilt,\n faDiamond: faDiamond,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandHoldingDollar: faHandHoldingDollar,\n faHandHoldingUsd: faHandHoldingUsd,\n faBacterium: faBacterium,\n faHandPointer: faHandPointer,\n faDrumSteelpan: faDrumSteelpan,\n faHandScissors: faHandScissors,\n faHandsPraying: faHandsPraying,\n faPrayingHands: faPrayingHands,\n faArrowRotateRight: faArrowRotateRight,\n faArrowRightRotate: faArrowRightRotate,\n faArrowRotateForward: faArrowRotateForward,\n faRedo: faRedo,\n faBiohazard: faBiohazard,\n faLocationCrosshairs: faLocationCrosshairs,\n faLocation: faLocation,\n faMarsDouble: faMarsDouble,\n faChildDress: faChildDress,\n faUsersBetweenLines: faUsersBetweenLines,\n faLungsVirus: faLungsVirus,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faPhone: faPhone,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faChildReaching: faChildReaching,\n faHeadSideVirus: faHeadSideVirus,\n faUserGear: faUserGear,\n faUserCog: faUserCog,\n faArrowUp19: faArrowUp19,\n faSortNumericUp: faSortNumericUp,\n faDoorClosed: faDoorClosed,\n faShieldVirus: faShieldVirus,\n faDiceSix: faDiceSix,\n faMosquitoNet: faMosquitoNet,\n faBridgeWater: faBridgeWater,\n faPersonBooth: faPersonBooth,\n faTextWidth: faTextWidth,\n faHatWizard: faHatWizard,\n faPenFancy: faPenFancy,\n faPersonDigging: faPersonDigging,\n faDigging: faDigging,\n faTrash: faTrash,\n faGaugeSimple: faGaugeSimple,\n faGaugeSimpleMed: faGaugeSimpleMed,\n faTachometerAverage: faTachometerAverage,\n faBookMedical: faBookMedical,\n faPoo: faPoo,\n faQuoteRight: faQuoteRight,\n faQuoteRightAlt: faQuoteRightAlt,\n faShirt: faShirt,\n faTShirt: faTShirt,\n faTshirt: faTshirt,\n faCubes: faCubes,\n faDivide: faDivide,\n faTengeSign: faTengeSign,\n faTenge: faTenge,\n faHeadphones: faHeadphones,\n faHandsHolding: faHandsHolding,\n faHandsClapping: faHandsClapping,\n faRepublican: faRepublican,\n faArrowLeft: faArrowLeft,\n faPersonCircleXmark: faPersonCircleXmark,\n faRuler: faRuler,\n faAlignLeft: faAlignLeft,\n faDiceD6: faDiceD6,\n faRestroom: faRestroom,\n faJ: faJ,\n faUsersViewfinder: faUsersViewfinder,\n faFileVideo: faFileVideo,\n faUpRightFromSquare: faUpRightFromSquare,\n faExternalLinkAlt: faExternalLinkAlt,\n faTableCells: faTableCells,\n faTh: faTh,\n faFilePdf: faFilePdf,\n faBookBible: faBookBible,\n faBible: faBible,\n faO: faO,\n faSuitcaseMedical: faSuitcaseMedical,\n faMedkit: faMedkit,\n faUserSecret: faUserSecret,\n faOtter: faOtter,\n faPersonDress: faPersonDress,\n faFemale: faFemale,\n faCommentDollar: faCommentDollar,\n faBusinessTime: faBusinessTime,\n faBriefcaseClock: faBriefcaseClock,\n faTableCellsLarge: faTableCellsLarge,\n faThLarge: faThLarge,\n faBookTanakh: faBookTanakh,\n faTanakh: faTanakh,\n faPhoneVolume: faPhoneVolume,\n faVolumeControlPhone: faVolumeControlPhone,\n faHatCowboySide: faHatCowboySide,\n faClipboardUser: faClipboardUser,\n faChild: faChild,\n faLiraSign: faLiraSign,\n faSatellite: faSatellite,\n faPlaneLock: faPlaneLock,\n faTag: faTag,\n faComment: faComment,\n faCakeCandles: faCakeCandles,\n faBirthdayCake: faBirthdayCake,\n faCake: faCake,\n faEnvelope: faEnvelope,\n faAnglesUp: faAnglesUp,\n faAngleDoubleUp: faAngleDoubleUp,\n faPaperclip: faPaperclip,\n faArrowRightToCity: faArrowRightToCity,\n faRibbon: faRibbon,\n faLungs: faLungs,\n faArrowUp91: faArrowUp91,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faLitecoinSign: faLitecoinSign,\n faBorderNone: faBorderNone,\n faCircleNodes: faCircleNodes,\n faParachuteBox: faParachuteBox,\n faIndent: faIndent,\n faTruckFieldUn: faTruckFieldUn,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faMountain: faMountain,\n faUserDoctor: faUserDoctor,\n faUserMd: faUserMd,\n faCircleInfo: faCircleInfo,\n faInfoCircle: faInfoCircle,\n faCloudMeatball: faCloudMeatball,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faSquareVirus: faSquareVirus,\n faMeteor: faMeteor,\n faCarOn: faCarOn,\n faSleigh: faSleigh,\n faArrowDown19: faArrowDown19,\n faSortNumericAsc: faSortNumericAsc,\n faSortNumericDown: faSortNumericDown,\n faHandHoldingDroplet: faHandHoldingDroplet,\n faHandHoldingWater: faHandHoldingWater,\n faWater: faWater,\n faCalendarCheck: faCalendarCheck,\n faBraille: faBraille,\n faPrescriptionBottleMedical: faPrescriptionBottleMedical,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faLandmark: faLandmark,\n faTruck: faTruck,\n faCrosshairs: faCrosshairs,\n faPersonCane: faPersonCane,\n faTent: faTent,\n faVestPatches: faVestPatches,\n faCheckDouble: faCheckDouble,\n faArrowDownAZ: faArrowDownAZ,\n faSortAlphaAsc: faSortAlphaAsc,\n faSortAlphaDown: faSortAlphaDown,\n faMoneyBillWheat: faMoneyBillWheat,\n faCookie: faCookie,\n faArrowRotateLeft: faArrowRotateLeft,\n faArrowLeftRotate: faArrowLeftRotate,\n faArrowRotateBack: faArrowRotateBack,\n faArrowRotateBackward: faArrowRotateBackward,\n faUndo: faUndo,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faDumbbell: faDumbbell,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faTarpDroplet: faTarpDroplet,\n faHouseMedicalCircleCheck: faHouseMedicalCircleCheck,\n faPersonSkiingNordic: faPersonSkiingNordic,\n faSkiingNordic: faSkiingNordic,\n faCalendarPlus: faCalendarPlus,\n faPlaneArrival: faPlaneArrival,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faTrainSubway: faTrainSubway,\n faSubway: faSubway,\n faChartGantt: faChartGantt,\n faIndianRupeeSign: faIndianRupeeSign,\n faIndianRupee: faIndianRupee,\n faInr: faInr,\n faCropSimple: faCropSimple,\n faCropAlt: faCropAlt,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faLeftLong: faLeftLong,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faDna: faDna,\n faVirusSlash: faVirusSlash,\n faMinus: faMinus,\n faSubtract: faSubtract,\n faChess: faChess,\n faArrowLeftLong: faArrowLeftLong,\n faLongArrowLeft: faLongArrowLeft,\n faPlugCircleCheck: faPlugCircleCheck,\n faStreetView: faStreetView,\n faFrancSign: faFrancSign,\n faVolumeOff: faVolumeOff,\n faHandsAslInterpreting: faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAslInterpreting: faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting: faHandsAmericanSignLanguageInterpreting,\n faGear: faGear,\n faCog: faCog,\n faDropletSlash: faDropletSlash,\n faTintSlash: faTintSlash,\n faMosque: faMosque,\n faMosquito: faMosquito,\n faStarOfDavid: faStarOfDavid,\n faPersonMilitaryRifle: faPersonMilitaryRifle,\n faCartShopping: faCartShopping,\n faShoppingCart: faShoppingCart,\n faVials: faVials,\n faPlugCirclePlus: faPlugCirclePlus,\n faPlaceOfWorship: faPlaceOfWorship,\n faGripVertical: faGripVertical,\n faArrowTurnUp: faArrowTurnUp,\n faLevelUp: faLevelUp,\n faU: faU,\n faSquareRootVariable: faSquareRootVariable,\n faSquareRootAlt: faSquareRootAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faBackwardStep: faBackwardStep,\n faStepBackward: faStepBackward,\n faPallet: faPallet,\n faFaucet: faFaucet,\n faBaseballBatBall: faBaseballBatBall,\n faS: faS,\n faTimeline: faTimeline,\n faKeyboard: faKeyboard,\n faCaretDown: faCaretDown,\n faHouseChimneyMedical: faHouseChimneyMedical,\n faClinicMedical: faClinicMedical,\n faTemperatureThreeQuarters: faTemperatureThreeQuarters,\n faTemperature3: faTemperature3,\n faThermometer3: faThermometer3,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faMobileScreen: faMobileScreen,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faPlaneUp: faPlaneUp,\n faPiggyBank: faPiggyBank,\n faBatteryHalf: faBatteryHalf,\n faBattery3: faBattery3,\n faMountainCity: faMountainCity,\n faCoins: faCoins,\n faKhanda: faKhanda,\n faSliders: faSliders,\n faSlidersH: faSlidersH,\n faFolderTree: faFolderTree,\n faNetworkWired: faNetworkWired,\n faMapPin: faMapPin,\n faHamsa: faHamsa,\n faCentSign: faCentSign,\n faFlask: faFlask,\n faPersonPregnant: faPersonPregnant,\n faWandSparkles: faWandSparkles,\n faEllipsisVertical: faEllipsisVertical,\n faEllipsisV: faEllipsisV,\n faTicket: faTicket,\n faPowerOff: faPowerOff,\n faRightLong: faRightLong,\n faLongArrowAltRight: faLongArrowAltRight,\n faFlagUsa: faFlagUsa,\n faLaptopFile: faLaptopFile,\n faTty: faTty,\n faTeletype: faTeletype,\n faDiagramNext: faDiagramNext,\n faPersonRifle: faPersonRifle,\n faHouseMedicalCircleExclamation: faHouseMedicalCircleExclamation,\n faClosedCaptioning: faClosedCaptioning,\n faPersonHiking: faPersonHiking,\n faHiking: faHiking,\n faVenusDouble: faVenusDouble,\n faImages: faImages,\n faCalculator: faCalculator,\n faPeoplePulling: faPeoplePulling,\n faN: faN,\n faCableCar: faCableCar,\n faTram: faTram,\n faCloudRain: faCloudRain,\n faBuildingCircleXmark: faBuildingCircleXmark,\n faShip: faShip,\n faArrowsDownToLine: faArrowsDownToLine,\n faDownload: faDownload,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faDeleteLeft: faDeleteLeft,\n faBackspace: faBackspace,\n faEyeDropper: faEyeDropper,\n faEyeDropperEmpty: faEyeDropperEmpty,\n faEyedropper: faEyedropper,\n faFileCircleCheck: faFileCircleCheck,\n faForward: faForward,\n faMobile: faMobile,\n faMobileAndroid: faMobileAndroid,\n faMobilePhone: faMobilePhone,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faAlignCenter: faAlignCenter,\n faBookSkull: faBookSkull,\n faBookDead: faBookDead,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faOutdent: faOutdent,\n faDedent: faDedent,\n faHeartCircleExclamation: faHeartCircleExclamation,\n faHouse: faHouse,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeLgAlt: faHomeLgAlt,\n faCalendarWeek: faCalendarWeek,\n faLaptopMedical: faLaptopMedical,\n faB: faB,\n faFileMedical: faFileMedical,\n faDiceOne: faDiceOne,\n faKiwiBird: faKiwiBird,\n faArrowRightArrowLeft: faArrowRightArrowLeft,\n faExchange: faExchange,\n faRotateRight: faRotateRight,\n faRedoAlt: faRedoAlt,\n faRotateForward: faRotateForward,\n faUtensils: faUtensils,\n faCutlery: faCutlery,\n faArrowUpWideShort: faArrowUpWideShort,\n faSortAmountUp: faSortAmountUp,\n faMillSign: faMillSign,\n faBowlRice: faBowlRice,\n faSkull: faSkull,\n faTowerBroadcast: faTowerBroadcast,\n faBroadcastTower: faBroadcastTower,\n faTruckPickup: faTruckPickup,\n faUpLong: faUpLong,\n faLongArrowAltUp: faLongArrowAltUp,\n faStop: faStop,\n faCodeMerge: faCodeMerge,\n faUpload: faUpload,\n faHurricane: faHurricane,\n faMound: faMound,\n faToiletPortable: faToiletPortable,\n faCompactDisc: faCompactDisc,\n faFileArrowDown: faFileArrowDown,\n faFileDownload: faFileDownload,\n faCaravan: faCaravan,\n faShieldCat: faShieldCat,\n faBolt: faBolt,\n faZap: faZap,\n faGlassWater: faGlassWater,\n faOilWell: faOilWell,\n faVault: faVault,\n faMars: faMars,\n faToilet: faToilet,\n faPlaneCircleXmark: faPlaneCircleXmark,\n faYenSign: faYenSign,\n faCny: faCny,\n faJpy: faJpy,\n faRmb: faRmb,\n faYen: faYen,\n faRubleSign: faRubleSign,\n faRouble: faRouble,\n faRub: faRub,\n faRuble: faRuble,\n faSun: faSun,\n faGuitar: faGuitar,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faHorseHead: faHorseHead,\n faBoreHole: faBoreHole,\n faIndustry: faIndustry,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowsTurnToDots: faArrowsTurnToDots,\n faFlorinSign: faFlorinSign,\n faArrowDownShortWide: faArrowDownShortWide,\n faSortAmountDesc: faSortAmountDesc,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faLessThan: faLessThan,\n faAngleDown: faAngleDown,\n faCarTunnel: faCarTunnel,\n faHeadSideCough: faHeadSideCough,\n faGripLines: faGripLines,\n faThumbsDown: faThumbsDown,\n faUserLock: faUserLock,\n faArrowRightLong: faArrowRightLong,\n faLongArrowRight: faLongArrowRight,\n faAnchorCircleXmark: faAnchorCircleXmark,\n faEllipsis: faEllipsis,\n faEllipsisH: faEllipsisH,\n faChessPawn: faChessPawn,\n faKitMedical: faKitMedical,\n faFirstAid: faFirstAid,\n faPersonThroughWindow: faPersonThroughWindow,\n faToolbox: faToolbox,\n faHandsHoldingCircle: faHandsHoldingCircle,\n faBug: faBug,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faCar: faCar,\n faAutomobile: faAutomobile,\n faHandHoldingHand: faHandHoldingHand,\n faBookOpenReader: faBookOpenReader,\n faBookReader: faBookReader,\n faMountainSun: faMountainSun,\n faArrowsLeftRightToLine: faArrowsLeftRightToLine,\n faDiceD20: faDiceD20,\n faTruckDroplet: faTruckDroplet,\n faFileCircleXmark: faFileCircleXmark,\n faTemperatureArrowUp: faTemperatureArrowUp,\n faTemperatureUp: faTemperatureUp,\n faMedal: faMedal,\n faBed: faBed,\n faSquareH: faSquareH,\n faHSquare: faHSquare,\n faPodcast: faPodcast,\n faTemperatureFull: faTemperatureFull,\n faTemperature4: faTemperature4,\n faThermometer4: faThermometer4,\n faThermometerFull: faThermometerFull,\n faBell: faBell,\n faSuperscript: faSuperscript,\n faPlugCircleXmark: faPlugCircleXmark,\n faStarOfLife: faStarOfLife,\n faPhoneSlash: faPhoneSlash,\n faPaintRoller: faPaintRoller,\n faHandshakeAngle: faHandshakeAngle,\n faHandsHelping: faHandsHelping,\n faLocationDot: faLocationDot,\n faMapMarkerAlt: faMapMarkerAlt,\n faFile: faFile,\n faGreaterThan: faGreaterThan,\n faPersonSwimming: faPersonSwimming,\n faSwimmer: faSwimmer,\n faArrowDown: faArrowDown,\n faDroplet: faDroplet,\n faTint: faTint,\n faEraser: faEraser,\n faEarthAmericas: faEarthAmericas,\n faEarth: faEarth,\n faEarthAmerica: faEarthAmerica,\n faGlobeAmericas: faGlobeAmericas,\n faPersonBurst: faPersonBurst,\n faDove: faDove,\n faBatteryEmpty: faBatteryEmpty,\n faBattery0: faBattery0,\n faSocks: faSocks,\n faInbox: faInbox,\n faSection: faSection,\n faGaugeHigh: faGaugeHigh,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltFast: faTachometerAltFast,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faWineBottle: faWineBottle,\n faChessRook: faChessRook,\n faBarsStaggered: faBarsStaggered,\n faReorder: faReorder,\n faStream: faStream,\n faDharmachakra: faDharmachakra,\n faHotdog: faHotdog,\n faPersonWalkingWithCane: faPersonWalkingWithCane,\n faBlind: faBlind,\n faDrum: faDrum,\n faIceCream: faIceCream,\n faHeartCircleBolt: faHeartCircleBolt,\n faFax: faFax,\n faParagraph: faParagraph,\n faCheckToSlot: faCheckToSlot,\n faVoteYea: faVoteYea,\n faStarHalf: faStarHalf,\n faBoxesStacked: faBoxesStacked,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faLink: faLink,\n faChain: faChain,\n faEarListen: faEarListen,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faTreeCity: faTreeCity,\n faPlay: faPlay,\n faFont: faFont,\n faRupiahSign: faRupiahSign,\n faMagnifyingGlass: faMagnifyingGlass,\n faSearch: faSearch,\n faTableTennisPaddleBall: faTableTennisPaddleBall,\n faPingPongPaddleBall: faPingPongPaddleBall,\n faTableTennis: faTableTennis,\n faPersonDotsFromLine: faPersonDotsFromLine,\n faDiagnoses: faDiagnoses,\n faTrashCanArrowUp: faTrashCanArrowUp,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faNairaSign: faNairaSign,\n faCartArrowDown: faCartArrowDown,\n faWalkieTalkie: faWalkieTalkie,\n faFilePen: faFilePen,\n faFileEdit: faFileEdit,\n faReceipt: faReceipt,\n faSquarePen: faSquarePen,\n faPenSquare: faPenSquare,\n faPencilSquare: faPencilSquare,\n faSuitcaseRolling: faSuitcaseRolling,\n faPersonCircleExclamation: faPersonCircleExclamation,\n faChevronDown: faChevronDown,\n faBatteryFull: faBatteryFull,\n faBattery: faBattery,\n faBattery5: faBattery5,\n faSkullCrossbones: faSkullCrossbones,\n faCodeCompare: faCodeCompare,\n faListUl: faListUl,\n faListDots: faListDots,\n faSchoolLock: faSchoolLock,\n faTowerCell: faTowerCell,\n faDownLong: faDownLong,\n faLongArrowAltDown: faLongArrowAltDown,\n faRankingStar: faRankingStar,\n faChessKing: faChessKing,\n faPersonHarassing: faPersonHarassing,\n faBrazilianRealSign: faBrazilianRealSign,\n faLandmarkDome: faLandmarkDome,\n faLandmarkAlt: faLandmarkAlt,\n faArrowUp: faArrowUp,\n faTv: faTv,\n faTelevision: faTelevision,\n faTvAlt: faTvAlt,\n faShrimp: faShrimp,\n faListCheck: faListCheck,\n faTasks: faTasks,\n faJugDetergent: faJugDetergent,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faUserShield: faUserShield,\n faWind: faWind,\n faCarBurst: faCarBurst,\n faCarCrash: faCarCrash,\n faY: faY,\n faPersonSnowboarding: faPersonSnowboarding,\n faSnowboarding: faSnowboarding,\n faTruckFast: faTruckFast,\n faShippingFast: faShippingFast,\n faFish: faFish,\n faUserGraduate: faUserGraduate,\n faCircleHalfStroke: faCircleHalfStroke,\n faAdjust: faAdjust,\n faClapperboard: faClapperboard,\n faCircleRadiation: faCircleRadiation,\n faRadiationAlt: faRadiationAlt,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faJetFighterUp: faJetFighterUp,\n faDiagramProject: faDiagramProject,\n faProjectDiagram: faProjectDiagram,\n faCopy: faCopy,\n faVolumeXmark: faVolumeXmark,\n faVolumeMute: faVolumeMute,\n faVolumeTimes: faVolumeTimes,\n faHandSparkles: faHandSparkles,\n faGrip: faGrip,\n faGripHorizontal: faGripHorizontal,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faChildCombatant: faChildCombatant,\n faChildRifle: faChildRifle,\n faGun: faGun,\n faSquarePhone: faSquarePhone,\n faPhoneSquare: faPhoneSquare,\n faPlus: faPlus,\n faAdd: faAdd,\n faExpand: faExpand,\n faComputer: faComputer,\n faXmark: faXmark,\n faClose: faClose,\n faMultiply: faMultiply,\n faRemove: faRemove,\n faTimes: faTimes,\n faArrowsUpDownLeftRight: faArrowsUpDownLeftRight,\n faArrows: faArrows,\n faChalkboardUser: faChalkboardUser,\n faChalkboardTeacher: faChalkboardTeacher,\n faPesoSign: faPesoSign,\n faBuildingShield: faBuildingShield,\n faBaby: faBaby,\n faUsersLine: faUsersLine,\n faQuoteLeft: faQuoteLeft,\n faQuoteLeftAlt: faQuoteLeftAlt,\n faTractor: faTractor,\n faTrashArrowUp: faTrashArrowUp,\n faTrashRestore: faTrashRestore,\n faArrowDownUpLock: faArrowDownUpLock,\n faLinesLeaning: faLinesLeaning,\n faRulerCombined: faRulerCombined,\n faCopyright: faCopyright,\n faEquals: faEquals,\n faBlender: faBlender,\n faTeeth: faTeeth,\n faShekelSign: faShekelSign,\n faIls: faIls,\n faShekel: faShekel,\n faSheqel: faSheqel,\n faSheqelSign: faSheqelSign,\n faMap: faMap,\n faRocket: faRocket,\n faPhotoFilm: faPhotoFilm,\n faPhotoVideo: faPhotoVideo,\n faFolderMinus: faFolderMinus,\n faStore: faStore,\n faArrowTrendUp: faArrowTrendUp,\n faPlugCircleMinus: faPlugCircleMinus,\n faSignHanging: faSignHanging,\n faSign: faSign,\n faBezierCurve: faBezierCurve,\n faBellSlash: faBellSlash,\n faTablet: faTablet,\n faTabletAndroid: faTabletAndroid,\n faSchoolFlag: faSchoolFlag,\n faFill: faFill,\n faAngleUp: faAngleUp,\n faDrumstickBite: faDrumstickBite,\n faHollyBerry: faHollyBerry,\n faChevronLeft: faChevronLeft,\n faBacteria: faBacteria,\n faHandLizard: faHandLizard,\n faNotdef: faNotdef,\n faDisease: faDisease,\n faBriefcaseMedical: faBriefcaseMedical,\n faGenderless: faGenderless,\n faChevronRight: faChevronRight,\n faRetweet: faRetweet,\n faCarRear: faCarRear,\n faCarAlt: faCarAlt,\n faPumpSoap: faPumpSoap,\n faVideoSlash: faVideoSlash,\n faBatteryQuarter: faBatteryQuarter,\n faBattery2: faBattery2,\n faRadio: faRadio,\n faBabyCarriage: faBabyCarriage,\n faCarriageBaby: faCarriageBaby,\n faTrafficLight: faTrafficLight,\n faThermometer: faThermometer,\n faVrCardboard: faVrCardboard,\n faHandMiddleFinger: faHandMiddleFinger,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faTruckMoving: faTruckMoving,\n faGlassWaterDroplet: faGlassWaterDroplet,\n faDisplay: faDisplay,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faThumbtack: faThumbtack,\n faThumbTack: faThumbTack,\n faTrophy: faTrophy,\n faPersonPraying: faPersonPraying,\n faPray: faPray,\n faHammer: faHammer,\n faHandPeace: faHandPeace,\n faRotate: faRotate,\n faSyncAlt: faSyncAlt,\n faSpinner: faSpinner,\n faRobot: faRobot,\n faPeace: faPeace,\n faGears: faGears,\n faCogs: faCogs,\n faWarehouse: faWarehouse,\n faArrowUpRightDots: faArrowUpRightDots,\n faSplotch: faSplotch,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faDiceFour: faDiceFour,\n faSimCard: faSimCard,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faMercury: faMercury,\n faArrowTurnDown: faArrowTurnDown,\n faLevelDown: faLevelDown,\n faPersonFallingBurst: faPersonFallingBurst,\n faAward: faAward,\n faTicketSimple: faTicketSimple,\n faTicketAlt: faTicketAlt,\n faBuilding: faBuilding,\n faAnglesLeft: faAnglesLeft,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faQrcode: faQrcode,\n faClockRotateLeft: faClockRotateLeft,\n faHistory: faHistory,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faFileExport: faFileExport,\n faArrowRightFromFile: faArrowRightFromFile,\n faShield: faShield,\n faShieldBlank: faShieldBlank,\n faArrowUpShortWide: faArrowUpShortWide,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faHouseMedical: faHouseMedical,\n faGolfBallTee: faGolfBallTee,\n faGolfBall: faGolfBall,\n faCircleChevronLeft: faCircleChevronLeft,\n faChevronCircleLeft: faChevronCircleLeft,\n faHouseChimneyWindow: faHouseChimneyWindow,\n faPenNib: faPenNib,\n faTentArrowTurnLeft: faTentArrowTurnLeft,\n faTents: faTents,\n faWandMagic: faWandMagic,\n faMagic: faMagic,\n faDog: faDog,\n faCarrot: faCarrot,\n faMoon: faMoon,\n faWineGlassEmpty: faWineGlassEmpty,\n faWineGlassAlt: faWineGlassAlt,\n faCheese: faCheese,\n faYinYang: faYinYang,\n faMusic: faMusic,\n faCodeCommit: faCodeCommit,\n faTemperatureLow: faTemperatureLow,\n faPersonBiking: faPersonBiking,\n faBiking: faBiking,\n faBroom: faBroom,\n faShieldHeart: faShieldHeart,\n faGopuram: faGopuram,\n faEarthOceania: faEarthOceania,\n faGlobeOceania: faGlobeOceania,\n faSquareXmark: faSquareXmark,\n faTimesSquare: faTimesSquare,\n faXmarkSquare: faXmarkSquare,\n faHashtag: faHashtag,\n faUpRightAndDownLeftFromCenter: faUpRightAndDownLeftFromCenter,\n faExpandAlt: faExpandAlt,\n faOilCan: faOilCan,\n faT: faT,\n faHippo: faHippo,\n faChartColumn: faChartColumn,\n faInfinity: faInfinity,\n faVialCircleCheck: faVialCircleCheck,\n faPersonArrowDownToLine: faPersonArrowDownToLine,\n faVoicemail: faVoicemail,\n faFan: faFan,\n faPersonWalkingLuggage: faPersonWalkingLuggage,\n faUpDown: faUpDown,\n faArrowsAltV: faArrowsAltV,\n faCloudMoonRain: faCloudMoonRain,\n faCalendar: faCalendar,\n faTrailer: faTrailer,\n faBahai: faBahai,\n faHaykal: faHaykal,\n faSdCard: faSdCard,\n faDragon: faDragon,\n faShoePrints: faShoePrints,\n faCirclePlus: faCirclePlus,\n faPlusCircle: faPlusCircle,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faHandHolding: faHandHolding,\n faPlugCircleExclamation: faPlugCircleExclamation,\n faLinkSlash: faLinkSlash,\n faChainBroken: faChainBroken,\n faChainSlash: faChainSlash,\n faUnlink: faUnlink,\n faClone: faClone,\n faPersonWalkingArrowLoopLeft: faPersonWalkingArrowLoopLeft,\n faArrowUpZA: faArrowUpZA,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faFireFlameCurved: faFireFlameCurved,\n faFireAlt: faFireAlt,\n faTornado: faTornado,\n faFileCirclePlus: faFileCirclePlus,\n faBookQuran: faBookQuran,\n faQuran: faQuran,\n faAnchor: faAnchor,\n faBorderAll: faBorderAll,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faCookieBite: faCookieBite,\n faArrowTrendDown: faArrowTrendDown,\n faRss: faRss,\n faFeed: faFeed,\n faDrawPolygon: faDrawPolygon,\n faScaleBalanced: faScaleBalanced,\n faBalanceScale: faBalanceScale,\n faGaugeSimpleHigh: faGaugeSimpleHigh,\n faTachometer: faTachometer,\n faTachometerFast: faTachometerFast,\n faShower: faShower,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faM: faM,\n faTableList: faTableList,\n faThList: faThList,\n faCommentSms: faCommentSms,\n faSms: faSms,\n faBook: faBook,\n faUserPlus: faUserPlus,\n faCheck: faCheck,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBattery4: faBattery4,\n faHouseCircleCheck: faHouseCircleCheck,\n faAngleLeft: faAngleLeft,\n faDiagramSuccessor: faDiagramSuccessor,\n faTruckArrowRight: faTruckArrowRight,\n faArrowsSplitUpAndLeft: faArrowsSplitUpAndLeft,\n faHandFist: faHandFist,\n faFistRaised: faFistRaised,\n faCloudMoon: faCloudMoon,\n faBriefcase: faBriefcase,\n faPersonFalling: faPersonFalling,\n faImagePortrait: faImagePortrait,\n faPortrait: faPortrait,\n faUserTag: faUserTag,\n faRug: faRug,\n faEarthEurope: faEarthEurope,\n faGlobeEurope: faGlobeEurope,\n faCartFlatbedSuitcase: faCartFlatbedSuitcase,\n faLuggageCart: faLuggageCart,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faBahtSign: faBahtSign,\n faBookOpen: faBookOpen,\n faBookJournalWhills: faBookJournalWhills,\n faJournalWhills: faJournalWhills,\n faHandcuffs: faHandcuffs,\n faTriangleExclamation: faTriangleExclamation,\n faExclamationTriangle: faExclamationTriangle,\n faWarning: faWarning,\n faDatabase: faDatabase,\n faShare: faShare,\n faArrowTurnRight: faArrowTurnRight,\n faMailForward: faMailForward,\n faBottleDroplet: faBottleDroplet,\n faMaskFace: faMaskFace,\n faHillRockslide: faHillRockslide,\n faRightLeft: faRightLeft,\n faExchangeAlt: faExchangeAlt,\n faPaperPlane: faPaperPlane,\n faRoadCircleExclamation: faRoadCircleExclamation,\n faDungeon: faDungeon,\n faAlignRight: faAlignRight,\n faMoneyBill1Wave: faMoneyBill1Wave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faLifeRing: faLifeRing,\n faHands: faHands,\n faSignLanguage: faSignLanguage,\n faSigning: faSigning,\n faCalendarDay: faCalendarDay,\n faWaterLadder: faWaterLadder,\n faLadderWater: faLadderWater,\n faSwimmingPool: faSwimmingPool,\n faArrowsUpDown: faArrowsUpDown,\n faArrowsV: faArrowsV,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faWheelchairMove: faWheelchairMove,\n faWheelchairAlt: faWheelchairAlt,\n faTurnDown: faTurnDown,\n faLevelDownAlt: faLevelDownAlt,\n faPersonWalkingArrowRight: faPersonWalkingArrowRight,\n faSquareEnvelope: faSquareEnvelope,\n faEnvelopeSquare: faEnvelopeSquare,\n faDice: faDice,\n faBowlingBall: faBowlingBall,\n faBrain: faBrain,\n faBandage: faBandage,\n faBandAid: faBandAid,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faGifts: faGifts,\n faHotel: faHotel,\n faEarthAsia: faEarthAsia,\n faGlobeAsia: faGlobeAsia,\n faIdCardClip: faIdCardClip,\n faIdCardAlt: faIdCardAlt,\n faMagnifyingGlassPlus: faMagnifyingGlassPlus,\n faSearchPlus: faSearchPlus,\n faThumbsUp: faThumbsUp,\n faUserClock: faUserClock,\n faHandDots: faHandDots,\n faAllergies: faAllergies,\n faFileInvoice: faFileInvoice,\n faWindowMinimize: faWindowMinimize,\n faMugSaucer: faMugSaucer,\n faCoffee: faCoffee,\n faBrush: faBrush,\n faMask: faMask,\n faMagnifyingGlassMinus: faMagnifyingGlassMinus,\n faSearchMinus: faSearchMinus,\n faRulerVertical: faRulerVertical,\n faUserLarge: faUserLarge,\n faUserAlt: faUserAlt,\n faTrainTram: faTrainTram,\n faUserNurse: faUserNurse,\n faSyringe: faSyringe,\n faCloudSun: faCloudSun,\n faStopwatch20: faStopwatch20,\n faSquareFull: faSquareFull,\n faMagnet: faMagnet,\n faJar: faJar,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faBugSlash: faBugSlash,\n faArrowUpFromWaterPump: faArrowUpFromWaterPump,\n faBone: faBone,\n faUserInjured: faUserInjured,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faPlane: faPlane,\n faTentArrowsDown: faTentArrowsDown,\n faExclamation: faExclamation,\n faArrowsSpin: faArrowsSpin,\n faPrint: faPrint,\n faTurkishLiraSign: faTurkishLiraSign,\n faTry: faTry,\n faTurkishLira: faTurkishLira,\n faDollarSign: faDollarSign,\n faDollar: faDollar,\n faUsd: faUsd,\n faX: faX,\n faMagnifyingGlassDollar: faMagnifyingGlassDollar,\n faSearchDollar: faSearchDollar,\n faUsersGear: faUsersGear,\n faUsersCog: faUsersCog,\n faPersonMilitaryPointing: faPersonMilitaryPointing,\n faBuildingColumns: faBuildingColumns,\n faBank: faBank,\n faInstitution: faInstitution,\n faMuseum: faMuseum,\n faUniversity: faUniversity,\n faUmbrella: faUmbrella,\n faTrowel: faTrowel,\n faD: faD,\n faStapler: faStapler,\n faMasksTheater: faMasksTheater,\n faTheaterMasks: faTheaterMasks,\n faKipSign: faKipSign,\n faHandPointLeft: faHandPointLeft,\n faHandshakeSimple: faHandshakeSimple,\n faHandshakeAlt: faHandshakeAlt,\n faJetFighter: faJetFighter,\n faFighterJet: faFighterJet,\n faSquareShareNodes: faSquareShareNodes,\n faShareAltSquare: faShareAltSquare,\n faBarcode: faBarcode,\n faPlusMinus: faPlusMinus,\n faVideo: faVideo,\n faVideoCamera: faVideoCamera,\n faGraduationCap: faGraduationCap,\n faMortarBoard: faMortarBoard,\n faHandHoldingMedical: faHandHoldingMedical,\n faPersonCircleCheck: faPersonCircleCheck,\n faTurnUp: faTurnUp,\n faLevelUpAlt: faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBangladeshiTakaSign, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faNotdef, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faArrowTurnRight, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n", "var prefix = \"far\";\nvar faTrashCan = {\n prefix: 'far',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M170.5 51.6L151.5 80h145l-19-28.4c-1.5-2.2-4-3.6-6.7-3.6H177.1c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80H368h48 8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V432c0 44.2-35.8 80-80 80H112c-44.2 0-80-35.8-80-80V128H24c-13.3 0-24-10.7-24-24S10.7 80 24 80h8H80 93.8l36.7-55.1C140.9 9.4 158.4 0 177.1 0h93.7c18.7 0 36.2 9.4 46.6 24.9zM80 128V432c0 17.7 14.3 32 32 32H336c17.7 0 32-14.3 32-32V128H80zm80 64V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faMessage = {\n prefix: 'far',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M160 368c26.5 0 48 21.5 48 48v16l72.5-54.4c8.3-6.2 18.4-9.6 28.8-9.6H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16V352c0 8.8 7.2 16 16 16h96zm48 124l-.2 .2-5.1 3.8-17.1 12.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V474.7v-6.4V468v-4V416H112 64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L208 492z\"]\n};\nvar faCommentAlt = faMessage;\nvar faFileLines = {\n prefix: 'far',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm56 256c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faCalendarDays = {\n prefix: 'far',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192h80v56H48V192zm0 104h80v64H48V296zm128 0h96v64H176V296zm144 0h80v64H320V296zm80-48H320V192h80v56zm0 160v40c0 8.8-7.2 16-16 16H320V408h80zm-128 0v56H176V408h96zm-144 0v56H64c-8.8 0-16-7.2-16-16V408h80zM272 248H176V192h96v56z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faHandPointRight = {\n prefix: 'far',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M448 128l-177.6 0c1 5.2 1.6 10.5 1.6 16l0 16 32 0 144 0c8.8 0 16-7.2 16-16s-7.2-16-16-16zM224 144c0-17.7-14.3-32-32-32c0 0 0 0 0 0l-24 0c-66.3 0-120 53.7-120 120l0 48c0 52.5 33.7 97.1 80.7 113.4c-.5-3.1-.7-6.2-.7-9.4c0-20 9.2-37.9 23.6-49.7c-4.9-9-7.6-19.4-7.6-30.3c0-15.1 5.3-29 14-40c-8.8-11-14-24.9-14-40l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-40 0-40zM192 64s0 0 0 0c18 0 34.6 6 48 16l208 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-82 0c1.3 5.1 2 10.5 2 16c0 25.3-14.7 47.2-36 57.6c2.6 7 4 14.5 4 22.4c0 20-9.2 37.9-23.6 49.7c4.9 9 7.6 19.4 7.6 30.3c0 35.3-28.7 64-64 64l-64 0-24 0C75.2 448 0 372.8 0 280l0-48C0 139.2 75.2 64 168 64l24 0zm64 336c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0zm16-176c0 5.5-.7 10.9-2 16l2 0 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0 16zm-24 64l-40 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-24 0z\"]\n};\nvar faFaceSmileBeam = {\n prefix: 'far',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zm40-89.3l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFaceGrinStars = {\n prefix: 'far',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM183.2 132.6c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L176 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L242.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm160 0c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L336 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L402.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm6.3 175.8c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5c10.4-16.1-6.8-32.5-25.5-28.1z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faAddressBook = {\n prefix: 'far',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M384 48c8.8 0 16 7.2 16 16V448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H384zM96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM240 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H208zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faComments = {\n prefix: 'far',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128s-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6c-10.4-2-21.2-.6-30.7 4.2c-4.1 2.1-8.3 4.1-12.6 6c-16 7.2-32.9 13.5-49.9 18c2.8-4.6 5.4-9.1 7.9-13.6c1.1-1.9 2.2-3.9 3.2-5.9zM0 176c0 41.8 17.2 80.1 45.9 110.3c-.9 1.7-1.9 3.5-2.8 5.1c-10.3 18.4-22.3 36.5-36.6 52.1c-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7c4.8-2.2 9.6-4.5 14.2-6.8c15.1 3 30.9 4.5 47.1 4.5c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176zM432 480c16.2 0 31.9-1.6 47.1-4.5c4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5c3.8-8.8 2-19-4.6-25.9c-14.2-15.6-26.2-33.7-36.6-52.1c-.9-1.7-1.9-3.4-2.8-5.1C622.8 384.1 640 345.8 640 304c0-94.4-87.9-171.5-198.2-175.8c4.1 15.2 6.2 31.2 6.2 47.8l0 .6c87.2 6.7 144 67.5 144 127.4c0 28-11.4 54.9-32.7 77.2c-14.3 15-17.3 37.6-7.5 55.8c1.1 2 2.2 4 3.2 5.9c2.5 4.5 5.2 9 7.9 13.6c-17-4.5-33.9-10.7-49.9-18c-4.3-1.9-8.5-3.9-12.6-6c-9.5-4.8-20.3-6.2-30.7-4.2c-12.1 2.4-24.7 3.6-37.8 3.6c-61.7 0-110-26.5-136.8-62.3c-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z\"]\n};\nvar faPaste = {\n prefix: 'far',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M104.6 48H64C28.7 48 0 76.7 0 112V384c0 35.3 28.7 64 64 64h96V400H64c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H80c0 17.7 14.3 32 32 32h72.4C202 108.4 227.6 96 256 96h62c-7.1-27.6-32.2-48-62-48H215.4C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464H256c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16l140.1 0L464 243.9V448c0 8.8-7.2 16-16 16zM256 512H448c35.3 0 64-28.7 64-64V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64z\"]\n};\nvar faFileClipboard = faPaste;\nvar faFaceGrinTongueSquint = {\n prefix: 'far',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V392.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm116-98.9c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faFaceFlushed = {\n prefix: 'far',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM160.4 248a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm216-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192zM160 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm144-80a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 0a80 80 0 1 0 -160 0 80 80 0 1 0 160 0z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faSquareCaretRight = {\n prefix: 'far',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M400 96c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320zM384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faSquareMinus = {\n prefix: 'far',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM152 232H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faCompass = {\n prefix: 'far',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm306.7 69.1L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'far',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 432c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0zm64-16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFaceKissBeam = {\n prefix: 'far',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 41.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 427.1 257.4 432 240 432c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-68.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faLightbulb = {\n prefix: 'far',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7l0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5H109c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8l0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4l0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5H226.4c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8l0 0 0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80V416H272v16c0 44.2-35.8 80-80 80z\"]\n};\nvar faFlag = {\n prefix: 'far',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24V64 350.5 400v88c0 13.3 10.7 24 24 24s24-10.7 24-24V388l80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52V24zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8V334.7l-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5v-237z\"]\n};\nvar faSquareCheck = {\n prefix: 'far',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faCircleDot = {\n prefix: 'far',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'far',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM103 135c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9zm192 0c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faFutbol = {\n prefix: 'far',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M435.4 361.3l-89.7-6c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-22 87.2c-14.4 3.2-29.4 4.8-44.8 4.8s-30.3-1.7-44.8-4.8l-22-87.2c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-89.7 6C61.7 335.9 51.9 307 49 276.2L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15L100.4 118c19.9-22.4 44.6-40.5 72.4-52.7l69.1 57.6c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l69.1-57.6c27.8 12.2 52.5 30.3 72.4 52.7l-33.4 83.4c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9L463 276.2c-3 30.8-12.7 59.7-27.6 85.1zM256 48l.9 0h-1.8l.9 0zM56.7 196.2c.9-3 1.9-6.1 2.9-9.1l-2.9 9.1zM132 423l3.8 2.7c-1.3-.9-2.5-1.8-3.8-2.7zm248.1-.1c-1.3 1-2.7 2-4 2.9l4-2.9zm75.2-226.6l-3-9.2c1.1 3 2.1 6.1 3 9.2zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPenToSquare = {\n prefix: 'far',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152V424c0 48.6 39.4 88 88 88H360c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24V424c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40H200c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z\"]\n};\nvar faEdit = faPenToSquare;\nvar faHourglassHalf = {\n prefix: 'far',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M0 24C0 10.7 10.7 0 24 0H360c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V67c0 40.3-16 79-44.5 107.5L225.9 256l81.5 81.5C336 366 352 404.7 352 445v19h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V445c0-40.3 16-79 44.5-107.5L158.1 256 76.5 174.5C48 146 32 107.3 32 67V48H24C10.7 48 0 37.3 0 24zM110.5 371.5c-3.9 3.9-7.5 8.1-10.7 12.5H284.2c-3.2-4.4-6.8-8.6-10.7-12.5L192 289.9l-81.5 81.5zM284.2 128C297 110.4 304 89 304 67V48H80V67c0 22.1 7 43.4 19.8 61H284.2z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faEyeSlash = {\n prefix: 'far',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z\"]\n};\nvar faHand = {\n prefix: 'far',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M256 0c-25.3 0-47.2 14.7-57.6 36c-7-2.6-14.5-4-22.4-4c-35.3 0-64 28.7-64 64V261.5l-2.7-2.7c-25-25-65.5-25-90.5 0s-25 65.5 0 90.5L106.5 437c48 48 113.1 75 181 75H296h8c1.5 0 3-.1 4.5-.4c91.7-6.2 165-79.4 171.1-171.1c.3-1.5 .4-3 .4-4.5V160c0-35.3-28.7-64-64-64c-5.5 0-10.9 .7-16 2V96c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4C303.2 14.7 281.3 0 256 0zM240 96.1c0 0 0-.1 0-.1V64c0-8.8 7.2-16 16-16s16 7.2 16 16V95.9c0 0 0 .1 0 .1V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96c0 0 0 0 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16v55.9c0 0 0 .1 0 .1v80c0 13.3 10.7 24 24 24s24-10.7 24-24V160.1c0 0 0-.1 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16V332.9c-.1 .6-.1 1.3-.2 1.9c-3.4 69.7-59.3 125.6-129 129c-.6 0-1.3 .1-1.9 .2H296h-8.5c-55.2 0-108.1-21.9-147.1-60.9L52.7 315.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L119 336.4c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V96c0-8.8 7.2-16 16-16c8.8 0 16 7.1 16 15.9V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96.1z\"]\n};\nvar faHandPaper = faHand;\nvar faHandSpock = {\n prefix: 'far',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M221.7 25.3L215.6 2.1l6.2 23.2zm48.9 28.4l23.2-6.2v0l-23.2 6.2zM193.3 74.3l-23.2 6.2 0 0 23.2-6.2zm46.5 175.3l-22.1 9.3c4.9 11.6 17.9 17.5 29.9 13.4s18.7-16.7 15.4-28.9l-23.2 6.2zm-51-121.1l-22.1 9.3v0l22.1-9.3zm-52.4-21.3l9.3 22.1h0l-9.3-22.1zm-21.3 52.4L93 168.8h0l22.1-9.3zm5.4 144.9l14.7-18.9h0l-14.7 18.9zm-56.1 7l18.9 14.7 0 0L64.4 311.4zm7 56.1L56.7 386.5h0l14.7-18.9zm92 71.6l-14.7 18.9 14.7-18.9zm300.1-48.5l23.3 5.8-23.3-5.8zm55.2-220.9l23.3 5.8-23.3-5.8zm-29.1-48.5l5.8-23.3-5.8 23.3zm-48.5 29.1l23.3 5.8v0l-23.3-5.8zM415 255l23.3 5.8 0 0L415 255zm-2.6-.5l23.6 4.2 0 0-23.6-4.2zM439.4 103l23.6 4.2v0L439.4 103zM407 56.6l-4.2 23.6L407 56.6zM360.6 89L337 84.8 360.6 89zM331.5 252.6l-23.6-4.2 0 0 23.6 4.2zm-8 .3l23.2-6.2 0 0-23.2 6.2zM336 488l.5-24-.5 24zm-157-138L193.8 331l-14.7 18.9zM227.9 48.5c8.5-2.3 17.3 2.8 19.6 11.4l46.4-12.3c-9.1-34.2-44.1-54.5-78.3-45.4l12.3 46.4zM216.5 68.1c-2.3-8.5 2.8-17.3 11.4-19.6L215.6 2.1c-34.2 9.1-54.5 44.1-45.4 78.3l46.4-12.3zM263 243.4L216.5 68.1 170.1 80.4l46.5 175.3L263 243.4zM166.7 137.8l51 121.1L262 240.2 211 119.2l-44.2 18.6zm-21-8.5c8.1-3.4 17.5 .4 21 8.5L211 119.2C197.3 86.6 159.7 71.3 127.2 85l18.6 44.2zm-8.5 21c-3.4-8.1 .4-17.5 8.5-21L127.2 85C94.6 98.7 79.3 136.3 93 168.8l44.2-18.6zm76.2 181l-76.2-181L93 168.8l76.2 181 44.2-18.6zm-107.6-7.8l58.5 45.5L193.8 331l-58.5-45.5-29.5 37.9zm-22.5 2.8c5.4-7 15.5-8.2 22.5-2.8l29.5-37.9c-27.9-21.7-68.1-16.7-89.8 11.2l37.9 29.5zm2.8 22.5c-7-5.4-8.2-15.5-2.8-22.5L45.5 296.7c-21.7 27.9-16.7 68.1 11.2 89.8l29.5-37.9zm92 71.6l-92-71.6L56.7 386.5l92 71.6 29.5-37.9zM305.9 464c-46.3 0-91.2-15.4-127.7-43.8l-29.5 37.9C193.6 493 248.9 512 305.9 512V464zm30.1 0H305.9v48H336V464zm2.8 0c-.8 0-1.5 0-2.3 0l-1 48c1.1 0 2.2 0 3.3 0V464zm101.5-79.2C428.7 431.3 386.8 464 338.8 464v48c70 0 131.1-47.7 148-115.6l-46.6-11.6zm55.2-220.9L440.3 384.8l46.6 11.6 55.2-220.9-46.6-11.6zm-11.6-19.4c8.6 2.1 13.8 10.8 11.6 19.4l46.6 11.6c8.6-34.3-12.3-69-46.6-77.6l-11.6 46.6zm-19.4 11.6c2.1-8.6 10.8-13.8 19.4-11.6l11.6-46.6c-34.3-8.6-69 12.3-77.6 46.6l46.6 11.6zM438.3 260.8l26.2-104.7-46.6-11.6L391.7 249.2l46.6 11.6zM413.7 280c11.6 0 21.7-7.9 24.6-19.2l-46.6-11.6c2.5-10.1 11.6-17.2 22-17.2v48zm-24.9-29.7c-2.8 15.5 9.2 29.7 24.9 29.7V232c14.1 0 24.8 12.8 22.3 26.7l-47.3-8.4zM415.8 98.8L388.8 250.3l47.3 8.4L463 107.2l-47.3-8.4zm-13-18.6c8.7 1.5 14.5 9.9 13 18.6l47.3 8.4c6.2-34.8-17-68-51.8-74.2l-8.4 47.3zm-18.6 13c1.5-8.7 9.9-14.5 18.6-13L411.2 33c-34.8-6.2-68 17-74.2 51.8l47.3 8.4zM355.2 256.8L384.2 93.2 337 84.8 307.9 248.4l47.3 8.4zM327.5 280c13.6 0 25.3-9.8 27.7-23.2l-47.3-8.4c1.7-9.5 9.9-16.4 19.6-16.4v48zm-27.2-20.9c3.3 12.3 14.4 20.9 27.2 20.9V232c9 0 16.9 6.1 19.2 14.8l-46.4 12.3zM247.5 59.9l52.8 199.2 46.4-12.3L293.9 47.6 247.5 59.9zM360 488c0 13.5-11.1 24.3-24.5 24l1-48c-13.5-.3-24.5 10.5-24.5 24h48zm-24 24c13.3 0 24-10.8 24-24H312c0-13.2 10.7-24 24-24v48zM169.2 349.8c-6.4-15.2 11.6-29 24.6-18.8l-29.5 37.9c26 20.2 61.9-7.3 49.1-37.7l-44.2 18.6z\"]\n};\nvar faFaceKiss = {\n prefix: 'far',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 25.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 411.1 257.4 416 240 416c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.8-.5-.1-.1-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiss = faFaceKiss;\nvar faFaceGrinTongue = {\n prefix: 'far',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V363.6c-8.9-8-16.7-17.1-23.1-27.1c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1c-6.4 9.9-14.2 19-23 27V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'far',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M104 0C90.7 0 80 10.7 80 24c0 11.2 7.6 20.6 18 23.2c-7.8 8-16.1 17-24.4 27C38.2 116.7 0 178.8 0 250.9c0 44.8 24.6 72.2 48 87.8V352H96V325c0-9-5-17.2-13-21.3c-18-9.3-35-24.7-35-52.7c0-55.5 29.8-106.8 62.4-145.9c16-19.2 32.1-34.8 44.2-45.5c1.9-1.7 3.7-3.2 5.3-4.6c1.7 1.4 3.4 3 5.3 4.6c12.1 10.7 28.2 26.3 44.2 45.5c5.3 6.3 10.5 13 15.5 20L159 191c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57.8-57.8c12.8 25.9 21.2 54.3 21.2 83.8c0 28-17 43.4-35 52.7c-8 4.1-13 12.3-13 21.3v27h48V338.7c23.4-15.6 48-42.9 48-87.8c0-72.1-38.2-134.2-73.6-176.7c-8.3-9.9-16.6-19-24.4-27c10.3-2.7 18-12.1 18-23.2c0-13.3-10.7-24-24-24H160 104zM52.7 464l16.6-32H250.8l16.6 32H52.7zm207.9-80H59.5c-12 0-22.9 6.7-28.4 17.3L4.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C0 493.8 18.2 512 40.8 512H279.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2c-5.5-10.6-16.5-17.3-28.4-17.3z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'far',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faFaceGrinWide = {\n prefix: 'far',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM224 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm96 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faFaceFrownOpen = {\n prefix: 'far',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM182.4 382.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'far',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M64 64V241.6c5.2-1 10.5-1.6 16-1.6H96V208 64c0-8.8-7.2-16-16-16s-16 7.2-16 16zM80 288c-17.7 0-32 14.3-32 32c0 0 0 0 0 0v24c0 66.3 53.7 120 120 120h48c52.5 0 97.1-33.7 113.4-80.7c-3.1 .5-6.2 .7-9.4 .7c-20 0-37.9-9.2-49.7-23.6c-9 4.9-19.4 7.6-30.3 7.6c-15.1 0-29-5.3-40-14c-11 8.8-24.9 14-40 14H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H120 80zM0 320s0 0 0 0c0-18 6-34.6 16-48V64C16 28.7 44.7 0 80 0s64 28.7 64 64v82c5.1-1.3 10.5-2 16-2c25.3 0 47.2 14.7 57.6 36c7-2.6 14.5-4 22.4-4c20 0 37.9 9.2 49.7 23.6c9-4.9 19.4-7.6 30.3-7.6c35.3 0 64 28.7 64 64v64 24c0 92.8-75.2 168-168 168H168C75.2 512 0 436.8 0 344V320zm336-64c0-8.8-7.2-16-16-16s-16 7.2-16 16v48 16c0 8.8 7.2 16 16 16s16-7.2 16-16V256zM160 240c5.5 0 10.9 .7 16 2v-2V208c0-8.8-7.2-16-16-16s-16 7.2-16 16v32h16zm64 24v40c0 8.8 7.2 16 16 16s16-7.2 16-16V256 240c0-8.8-7.2-16-16-16s-16 7.2-16 16v24z\"]\n};\nvar faBookmark = {\n prefix: 'far',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48C0 21.5 21.5 0 48 0l0 48V441.4l130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4V48H48V0H336c26.5 0 48 21.5 48 48V488c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488V48z\"]\n};\nvar faHandPointDown = {\n prefix: 'far',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M64 448l0-177.6c5.2 1 10.5 1.6 16 1.6l16 0 0 32 0 144c0 8.8-7.2 16-16 16s-16-7.2-16-16zM80 224c-17.7 0-32-14.3-32-32c0 0 0 0 0 0l0-24c0-66.3 53.7-120 120-120l48 0c52.5 0 97.1 33.7 113.4 80.7c-3.1-.5-6.2-.7-9.4-.7c-20 0-37.9 9.2-49.7 23.6c-9-4.9-19.4-7.6-30.3-7.6c-15.1 0-29 5.3-40 14c-11-8.8-24.9-14-40-14l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0-40 0zM0 192s0 0 0 0c0 18 6 34.6 16 48l0 208c0 35.3 28.7 64 64 64s64-28.7 64-64l0-82c5.1 1.3 10.5 2 16 2c25.3 0 47.2-14.7 57.6-36c7 2.6 14.5 4 22.4 4c20 0 37.9-9.2 49.7-23.6c9 4.9 19.4 7.6 30.3 7.6c35.3 0 64-28.7 64-64l0-64 0-24C384 75.2 308.8 0 216 0L168 0C75.2 0 0 75.2 0 168l0 24zm336 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64zM160 272c5.5 0 10.9-.7 16-2l0 2 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 16 0zm64-24l0-40c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-24z\"]\n};\nvar faFolder = {\n prefix: 'far',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M0 96C0 60.7 28.7 32 64 32H196.1c19.1 0 37.4 7.6 50.9 21.1L289.9 96H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16H286.6c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7H64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faUser = {\n prefix: 'far',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'far',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M48 416c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320zm16 64c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480zm64-224c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faStar = {\n prefix: 'far',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.6 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z\"]\n};\nvar faChessKnight = {\n prefix: 'far',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M226.6 48H117.3l17.1 12.8c6 4.5 9.6 11.6 9.6 19.2s-3.6 14.7-9.6 19.2l-6.5 4.9c-10 7.5-16 19.3-16 31.9l-.3 91c0 10.2 4.9 19.9 13.2 25.8l1.9 1.3c9.9 7.1 23.3 7 33.2-.1l49.9-36.3c10.7-7.8 25.7-5.4 33.5 5.3s5.4 25.7-5.3 33.5l-49.9 36.3-53.8 39.1c-7.3 5.3-13 12.2-16.9 20.1H66.8c5.3-22.1 17.8-41.9 35.9-56.3c-1.3-.8-2.6-1.7-3.8-2.6L97 291.8c-21-15-33.4-39.2-33.3-65l.3-91c.1-19.8 6.7-38.7 18.6-53.9l-.4-.3C70.7 73 64 59.6 64 45.3C64 20.3 84.3 0 109.3 0H226.6C331.2 0 416 84.8 416 189.4c0 11.1-1 22.2-2.9 33.2L390.1 352H341.3l24.5-137.8c1.5-8.2 2.2-16.5 2.2-24.8C368 111.3 304.7 48 226.6 48zM85.2 432L68.7 464H379.3l-16.6-32H85.2zm315.7-30.7l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H56.8C34.2 512 16 493.8 16 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C52.5 390.7 63.5 384 75.5 384h297c12 0 22.9 6.7 28.4 17.3zM172 128a20 20 0 1 1 0 40 20 20 0 1 1 0-40z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'far',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm2.8-183.3l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 141.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faFaceLaugh = {\n prefix: 'far',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'far',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M384 480h48c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224H144c-11.4 0-21.9 6-27.6 15.9L48 357.1V96c0-8.8 7.2-16 16-16H181.5c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8H416c8.8 0 16 7.2 16 16v32h48V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H87.7 384z\"]\n};\nvar faClipboard = {\n prefix: 'far',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M280 64h40c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64h40 9.6C121 27.5 153.3 0 192 0s71 27.5 78.4 64H280zM64 112c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H304v24c0 13.3-10.7 24-24 24H192 104c-13.3 0-24-10.7-24-24V112H64zm128-8a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faChessQueen = {\n prefix: 'far',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-95.2-8c-18.1 0-31.3 12.8-35.6 26.9c-8 26.2-32.4 45.2-61.2 45.2c-10 0-19.4-2.3-27.7-6.3c-7.6-3.7-16.7-3.3-24 1.2C.7 162.1-3.1 177.1 3.7 188.9L97.6 352H153l-83-144.1c40.5-2.2 75.3-25.9 93.1-59.8c22 26.8 55.4 43.9 92.8 43.9s70.8-17.1 92.8-43.9c17.8 34 52.6 57.7 93.1 59.8L359 352h55.4l93.9-163.1c6.8-11.7 3-26.7-8.6-33.8c-7.3-4.5-16.4-4.9-24-1.2c-8.4 4-17.7 6.3-27.7 6.3c-28.8 0-53.2-19-61.2-45.2C382.5 100.8 369.3 88 351.2 88c-14.5 0-26.3 8.5-32.4 19.3c-12.4 22-35.9 36.7-62.8 36.7s-50.4-14.8-62.8-36.7C187.1 96.5 175.4 88 160.8 88zM133.2 432H378.8l16.6 32H116.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3h-265c-12 0-22.9 6.7-28.4 17.3L68.6 452.5c-3 5.8-4.6 12.2-4.6 18.7c0 22.5 18.2 40.8 40.8 40.8H407.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"]\n};\nvar faHandBackFist = {\n prefix: 'far',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 64c0-8.8 7.2-16 16-16s16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16V264c0 31.3-20 58-48 67.9c-9.6 3.4-16 12.5-16 22.6V488c0 13.3 10.7 24 24 24s24-10.7 24-24V370.2c38-20.1 64-60.1 64-106.2V160c0-35.3-28.7-64-64-64c-2.8 0-5.6 .2-8.3 .5C332.8 77.1 311.9 64 288 64c-2.8 0-5.6 .2-8.3 .5C268.8 45.1 247.9 32 224 32c-2.8 0-5.6 .2-8.3 .5C204.8 13.1 183.9 0 160 0C124.7 0 96 28.7 96 64v64.3c-11.7 7.4-22.5 16.4-32 26.9l17.8 16.1L64 155.2l-9.4 10.5C40 181.8 32 202.8 32 224.6v12.8c0 49.6 24.2 96.1 64.8 124.5l13.8-19.7L96.8 361.9l8.9 6.2c6.9 4.8 14.4 8.6 22.3 11.3V488c0 13.3 10.7 24 24 24s24-10.7 24-24V359.9c0-12.6-9.8-23.1-22.4-23.9c-7.3-.5-14.3-2.9-20.3-7.1l-13.1 18.7 13.1-18.7-8.9-6.2C96.6 303.1 80 271.3 80 237.4V224.6c0-9.9 3.7-19.4 10.3-26.8l9.4-10.5c3.8-4.2 7.9-8.1 12.3-11.6V208c0 8.8 7.2 16 16 16s16-7.2 16-16V142.3 128 64z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'far',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm224 64c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faChartBar = {\n prefix: 'far',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M24 32c13.3 0 24 10.7 24 24V408c0 13.3 10.7 24 24 24H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-39.8 0-72-32.2-72-72V56C0 42.7 10.7 32 24 32zM128 136c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zm24 72H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96H424c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faBarChart = faChartBar;\nvar faWindowRestore = {\n prefix: 'far',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 48H208c-17.7 0-32 14.3-32 32V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V336h16c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32zM48 448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V256H48V448zM64 128H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z\"]\n};\nvar faSquarePlus = {\n prefix: 'far',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faImage = {\n prefix: 'far',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M448 80c8.8 0 16 7.2 16 16V415.8l-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3V96c0-8.8 7.2-16 16-16H448zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faFolderClosed = {\n prefix: 'far',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M251.7 127.6l0 0c10.5 10.5 24.7 16.4 39.6 16.4H448c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H197.5c4.2 0 8.3 1.7 11.3 4.7l33.9-33.9L208.8 84.7l42.9 42.9zM48 240H464V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V240zM285.7 93.7L242.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H291.3c-2.1 0-4.2-.8-5.7-2.3z\"]\n};\nvar faLemon = {\n prefix: 'far',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M368 80c-3.2 0-6.2 .4-8.9 1.3C340 86.8 313 91.9 284.8 84.6C227.4 69.7 160.2 92 110.1 142.1S37.7 259.4 52.6 316.8c7.3 28.2 2.2 55.2-3.3 74.3c-.8 2.8-1.3 5.8-1.3 8.9c0 17.7 14.3 32 32 32c3.2 0 6.2-.4 8.9-1.3c19.1-5.5 46.1-10.7 74.3-3.3c57.4 14.9 124.6-7.4 174.7-57.5s72.4-117.3 57.5-174.7c-7.3-28.2-2.2-55.2 3.3-74.3c.8-2.8 1.3-5.8 1.3-8.9c0-17.7-14.3-32-32-32zm0-48c44.2 0 80 35.8 80 80c0 7.7-1.1 15.2-3.1 22.3c-4.6 15.8-7.1 32.9-3 48.9c20.1 77.6-10.9 161.5-70 220.7s-143.1 90.2-220.7 70c-16-4.1-33-1.6-48.9 3c-7.1 2-14.6 3.1-22.3 3.1c-44.2 0-80-35.8-80-80c0-7.7 1.1-15.2 3.1-22.3c4.6-15.8 7.1-32.9 3-48.9C-14 251.3 17 167.3 76.2 108.2S219.3 18 296.8 38.1c16 4.1 33 1.6 48.9-3c7.1-2 14.6-3.1 22.3-3.1zM246.7 167c-52 15.2-96.5 59.7-111.7 111.7c-3.7 12.7-17.1 20-29.8 16.3s-20-17.1-16.3-29.8c19.8-67.7 76.6-124.5 144.3-144.3c12.7-3.7 26.1 3.6 29.8 16.3s-3.6 26.1-16.3 29.8z\"]\n};\nvar faHandshake = {\n prefix: 'far',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M272.2 64.6l-51.1 51.1c-15.3 4.2-29.5 11.9-41.5 22.5L153 161.9C142.8 171 129.5 176 115.8 176H96V304c20.4 .6 39.8 8.9 54.3 23.4l35.6 35.6 7 7 0 0L219.9 397c6.2 6.2 16.4 6.2 22.6 0c1.7-1.7 3-3.7 3.7-5.8c2.8-7.7 9.3-13.5 17.3-15.3s16.4 .6 22.2 6.5L296.5 393c11.6 11.6 30.4 11.6 41.9 0c5.4-5.4 8.3-12.3 8.6-19.4c.4-8.8 5.6-16.6 13.6-20.4s17.3-3 24.4 2.1c9.4 6.7 22.5 5.8 30.9-2.6c9.4-9.4 9.4-24.6 0-33.9L340.1 243l-35.8 33c-27.3 25.2-69.2 25.6-97 .9c-31.7-28.2-32.4-77.4-1.6-106.5l70.1-66.2C303.2 78.4 339.4 64 377.1 64c36.1 0 71 13.3 97.9 37.2L505.1 128H544h40 40c8.8 0 16 7.2 16 16V352c0 17.7-14.3 32-32 32H576c-11.8 0-22.2-6.4-27.7-16H463.4c-3.4 6.7-7.9 13.1-13.5 18.7c-17.1 17.1-40.8 23.8-63 20.1c-3.6 7.3-8.5 14.1-14.6 20.2c-27.3 27.3-70 30-100.4 8.1c-25.1 20.8-62.5 19.5-86-4.1L159 404l-7-7-35.6-35.6c-5.5-5.5-12.7-8.7-20.4-9.3C96 369.7 81.6 384 64 384H32c-17.7 0-32-14.3-32-32V144c0-8.8 7.2-16 16-16H56 96h19.8c2 0 3.9-.7 5.3-2l26.5-23.6C175.5 77.7 211.4 64 248.7 64H259c4.4 0 8.9 .2 13.2 .6zM544 320V176H496c-5.9 0-11.6-2.2-15.9-6.1l-36.9-32.8c-18.2-16.2-41.7-25.1-66.1-25.1c-25.4 0-49.8 9.7-68.3 27.1l-70.1 66.2c-10.3 9.8-10.1 26.3 .5 35.7c9.3 8.3 23.4 8.1 32.5-.3l71.9-66.4c9.7-9 24.9-8.4 33.9 1.4s8.4 24.9-1.4 33.9l-.8 .8 74.4 74.4c10 10 16.5 22.3 19.4 35.1H544zM64 336a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm528 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faGem = {\n prefix: 'far',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M168.5 72L256 165l87.5-93h-175zM383.9 99.1L311.5 176h129L383.9 99.1zm50 124.9H256 78.1L256 420.3 433.9 224zM71.5 176h129L128.1 99.1 71.5 176zm434.3 40.1l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4z\"]\n};\nvar faCirclePlay = {\n prefix: 'far',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c7.6-4.2 16.8-4.1 24.3 .5l144 88c7.1 4.4 11.5 12.1 11.5 20.5s-4.4 16.1-11.5 20.5l-144 88c-7.4 4.5-16.7 4.7-24.3 .5s-12.3-12.2-12.3-20.9V168c0-8.7 4.7-16.7 12.3-20.9z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faCircleCheck = {\n prefix: 'far',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'far',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faIdBadge = {\n prefix: 'far',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M256 48V64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H256zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'far',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm86.9-85.1l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faRegistered = {\n prefix: 'far',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152V264v96c0 13.3 10.7 24 24 24s24-10.7 24-24V288h60.9l37.2 81.9c5.5 12.1 19.7 17.4 31.8 11.9s17.4-19.7 11.9-31.8L315.7 275c21.8-14.3 36.3-39 36.3-67c0-44.2-35.8-80-80-80H184c-13.3 0-24 10.7-24 24zm48 88V176h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H208z\"]\n};\nvar faAddressCard = {\n prefix: 'far',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM208 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H176zM376 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faFaceTired = {\n prefix: 'far',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.5 64.3C196.1 302.1 223.8 288 256 288s59.9 14.1 79.5 32.3C354.5 338.1 368 362 368 384c0 5.4-2.7 10.4-7.2 13.4s-10.2 3.4-15.2 1.3l-17.2-7.5c-22.8-10-47.5-15.1-72.4-15.1s-49.6 5.2-72.4 15.1l-17.2 7.5c-4.9 2.2-10.7 1.7-15.2-1.3s-7.2-8-7.2-13.4c0-22 13.5-45.9 32.5-63.7zm-43-173.6l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faFontAwesome = {\n prefix: 'far',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M48 56c0-13.3-10.7-24-24-24S0 42.7 0 56V456c0 13.3 10.7 24 24 24s24-10.7 24-24V124.2l12.5-2.4c16.7-3.2 31.5-8.5 44.2-13.1l0 0 0 0c3.7-1.3 7.1-2.6 10.4-3.7c15.2-5.2 30.4-9.1 51.2-9.1c25.6 0 43 6 63.5 13.3l.5 .2c20.9 7.4 44.8 15.9 79.1 15.9c32.4 0 53.7-6.8 90.5-19.6V342.9l-9.5 3.3c-41.5 14.4-55.2 19.2-81 19.2c-25.7 0-43.1-6-63.6-13.3l-.6-.2c-20.8-7.4-44.8-15.8-79-15.8c-16.8 0-31 2-43.9 5c-12.9 3-20.9 16-17.9 28.9s16 20.9 28.9 17.9c9.6-2.2 20.1-3.7 32.9-3.7c25.6 0 43 6 63.5 13.3l.5 .2c20.9 7.4 44.8 15.9 79.1 15.9c34.4 0 56.4-7.7 97.8-22.2c7.5-2.6 15.5-5.4 24.4-8.5l16.2-5.5V360 72 38.4L416.2 49.3c-9.7 3.3-18.2 6.3-25.7 8.9c-41.5 14.4-55.2 19.2-81 19.2c-25.7 0-43.1-6-63.6-13.3l-.6-.2c-20.8-7.4-44.8-15.8-79-15.8c-27.8 0-48.5 5.5-66.6 11.6c-4.9 1.7-9.3 3.3-13.6 4.8c-11.9 4.3-22 7.9-34.7 10.3L48 75.4V56z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faFaceSmileWink = {\n prefix: 'far',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'far',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm55 241.1c-3.8-12.7-17.2-19.9-29.9-16.1s-19.9 17.2-16.1 29.9l48 160c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l25-83.4 25 83.4c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l48-160c3.8-12.7-3.4-26.1-16.1-29.9s-26.1 3.4-29.9 16.1l-25 83.4-25-83.4c-3-10.2-12.4-17.1-23-17.1s-19.9 7-23 17.1l-25 83.4-25-83.4z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'far',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm72 208c-13.3 0-24 10.7-24 24V336v56c0 13.3 10.7 24 24 24s24-10.7 24-24V360h44c42 0 76-34 76-76s-34-76-76-76H136zm68 104H160V256h44c15.5 0 28 12.5 28 28s-12.5 28-28 28z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'far',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5v13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1V200.5c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2V456c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V276.2zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5V456c0 30.9 25.1 56 56 56H456c30.9 0 56-25.1 56-56V200.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z\"]\n};\nvar faFileZipper = {\n prefix: 'far',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16h48v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm48 112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8H136.6c-14.5 0-27.2 9.7-30.9 23.8zM128 336h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'far',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faSnowflake = {\n prefix: 'far',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c13.3 0 24 10.7 24 24V70.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-57 57v76.5l66.2-38.2 20.9-77.8c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4L373 142.2l37.1-21.4c11.5-6.6 26.2-2.7 32.8 8.8s2.7 26.2-8.8 32.8L397 183.8l31.5 8.4c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-77.8-20.9L272 256l66.2 38.2 77.8-20.9c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4L397 328.2l37.1 21.4c11.5 6.6 15.4 21.3 8.8 32.8s-21.3 15.4-32.8 8.8L373 369.8l8.4 31.5c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-20.9-77.8L248 297.6v76.5l57 57c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V441.9l-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V297.6l-66.2 38.2-20.9 77.8c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4L75 369.8 37.9 391.2c-11.5 6.6-26.2 2.7-32.8-8.8s-2.7-26.2 8.8-32.8L51 328.2l-31.5-8.4c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l77.8 20.9L176 256l-66.2-38.2L31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4L51 183.8 13.9 162.4c-11.5-6.6-15.4-21.3-8.8-32.8s21.3-15.4 32.8-8.8L75 142.2l-8.4-31.5c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l20.9 77.8L200 214.4V137.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faNewspaper = {\n prefix: 'far',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M168 80c-13.3 0-24 10.7-24 24V408c0 8.4-1.4 16.5-4.1 24H440c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H168zM72 480c-39.8 0-72-32.2-72-72V112C0 98.7 10.7 88 24 88s24 10.7 24 24V408c0 13.3 10.7 24 24 24s24-10.7 24-24V104c0-39.8 32.2-72 72-72H440c39.8 0 72 32.2 72 72V408c0 39.8-32.2 72-72 72H72zM176 136c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V136zm200-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zM200 272H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'far',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M338.9 446.8c-25.4 11-53.4 17.2-82.9 17.2C141.1 464 48 370.9 48 256S141.1 48 256 48s208 93.1 208 208c0 22.4-3.5 43.9-10.1 64.1c3.1 4.5 5.7 9.4 7.8 14.6c12.7-1.6 25.1 .4 36.2 5c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-6.5-25.3zM296 316c0-6.9-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4C258.7 276.9 241.4 272 224 272c-3.6 0-6.8 2.5-7.7 6s.6 7.2 3.8 9l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0 0 0c-2.5 1.4-4.1 4.1-4.1 7s1.6 5.6 4.1 7l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0c-3.2 1.8-4.7 5.5-3.8 9s4.1 6 7.7 6c17.4 0 34.7-4.9 47.9-12.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3s-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4c-2.7-1.5-5.7-3-8.7-4.3c3.1-1.3 6-2.7 8.7-4.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm159.3-20c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C375.7 186.8 355 180 335.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faStarHalfStroke = {\n prefix: 'far',\n iconName: 'star-half-stroke',\n icon: [640, 512, [\"star-half-alt\"], \"f5c0\", \"M341.5 13.5C337.5 5.2 329.1 0 319.9 0s-17.6 5.2-21.6 13.5L229.7 154.8 76.5 177.5c-9 1.3-16.5 7.6-19.3 16.3s-.5 18.1 5.9 24.5L174.2 328.4 148 483.9c-1.5 9 2.2 18.1 9.7 23.5s17.3 6 25.3 1.7l137-73.2 137 73.2c8.1 4.3 17.9 3.7 25.3-1.7s11.2-14.5 9.7-23.5L465.6 328.4 576.8 218.2c6.5-6.4 8.7-15.9 5.9-24.5s-10.3-14.9-19.3-16.3L410.1 154.8 341.5 13.5zM320 384.7V79.1l52.5 108.1c3.5 7.1 10.2 12.1 18.1 13.3l118.3 17.5L423 303c-5.5 5.5-8.1 13.3-6.8 21l20.2 119.6L331.2 387.5c-3.5-1.9-7.4-2.8-11.2-2.8z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faFileExcel = {\n prefix: 'far',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm90.9 233.3c-8.1-10.5-23.2-12.3-33.7-4.2s-12.3 23.2-4.2 33.7L161.6 320l-44.5 57.3c-8.1 10.5-6.3 25.5 4.2 33.7s25.5 6.3 33.7-4.2L192 359.1l37.1 47.6c8.1 10.5 23.2 12.3 33.7 4.2s12.3-23.2 4.2-33.7L222.4 320l44.5-57.3c8.1-10.5 6.3-25.5-4.2-33.7s-25.5-6.3-33.7 4.2L192 280.9l-37.1-47.6z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'far',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM217.6 228.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'far',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M48.2 66.8c-.1-.8-.2-1.7-.2-2.5c0-.1 0-.1 0-.2c0-8.8 7.2-16 16-16c.9 0 1.9 .1 2.8 .2C74.3 49.5 80 56.1 80 64c0 8.8-7.2 16-16 16c-7.9 0-14.5-5.7-15.8-13.2zM0 64c0 26.9 16.5 49.9 40 59.3V228.7C16.5 238.1 0 261.1 0 288c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H324.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V123.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H123.3C113.9 16.5 90.9 0 64 0C28.7 0 0 28.7 0 64zm368 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM324.7 88c6.5 16 19.3 28.9 35.3 35.3V228.7c-16 6.5-28.9 19.3-35.3 35.3H123.3c-6.5-16-19.3-28.9-35.3-35.3V123.3c16-6.5 28.9-19.3 35.3-35.3H324.7zM384 272a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM80 288c0 7.9-5.7 14.5-13.2 15.8c-.8 .1-1.7 .2-2.5 .2l-.2 0c-8.8 0-16-7.2-16-16c0-.9 .1-1.9 .2-2.8C49.5 277.7 56.1 272 64 272c8.8 0 16 7.2 16 16zm391.3-40h45.4c6.5 16 19.3 28.9 35.3 35.3V388.7c-16 6.5-28.9 19.3-35.3 35.3H315.3c-6.5-16-19.3-28.9-35.3-35.3V352H232v36.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H516.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V283.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H448v16.4c9.8 8.8 17.8 19.5 23.3 31.6zm88.9-26.7a16 16 0 1 1 31.5 5.5 16 16 0 1 1 -31.5-5.5zM271.8 450.7a16 16 0 1 1 -31.5-5.5 16 16 0 1 1 31.5 5.5zm301.5 13c-7.5-1.3-13.2-7.9-13.2-15.8c0-8.8 7.2-16 16-16c7.9 0 14.5 5.7 15.8 13.2l0 .1c.1 .9 .2 1.8 .2 2.7c0 8.8-7.2 16-16 16c-.9 0-1.9-.1-2.8-.2z\"]\n};\nvar faCircleRight = {\n prefix: 'far',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1c-4.2-4.5-10.1-7.1-16.3-7.1C266 128 256 138 256 150.3V208H160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96v57.7c0 12.3 10 22.3 22.3 22.3c6.2 0 12.1-2.6 16.3-7.1l99.9-107.1c3.5-3.8 5.5-8.7 5.5-13.8s-2-10.1-5.5-13.8L294.6 135.1z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faFaceRollingEyes = {\n prefix: 'far',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM168 376c0 13.3 10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192c-13.3 0-24 10.7-24 24zm-8-104c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm192-32c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'far',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M48 115.8C38.2 107 32 94.2 32 80c0-26.5 21.5-48 48-48c14.2 0 27 6.2 35.8 16H460.2c8.8-9.8 21.6-16 35.8-16c26.5 0 48 21.5 48 48c0 14.2-6.2 27-16 35.8V396.2c9.8 8.8 16 21.6 16 35.8c0 26.5-21.5 48-48 48c-14.2 0-27-6.2-35.8-16H115.8c-8.8 9.8-21.6 16-35.8 16c-26.5 0-48-21.5-48-48c0-14.2 6.2-27 16-35.8V115.8zM125.3 96c-4.8 13.6-15.6 24.4-29.3 29.3V386.7c13.6 4.8 24.4 15.6 29.3 29.3H450.7c4.8-13.6 15.6-24.4 29.3-29.3V125.3c-13.6-4.8-24.4-15.6-29.3-29.3H125.3zm2.7 64c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faHeart = {\n prefix: 'far',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8v-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5v3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20c0 0-.1-.1-.1-.1c0 0 0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5v3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2v-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z\"]\n};\nvar faFaceSurprise = {\n prefix: 'far',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faCirclePause = {\n prefix: 'far',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm224-72V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faCircle = {\n prefix: 'far',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faCircleUp = {\n prefix: 'far',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4c-4.5 4.2-7.1 10.1-7.1 16.3c0 12.3 10 22.3 22.3 22.3H208v96c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256h57.7c12.3 0 22.3-10 22.3-22.3c0-6.2-2.6-12.1-7.1-16.3L269.8 117.5c-3.8-3.5-8.7-5.5-13.8-5.5s-10.1 2-13.8 5.5L135.1 217.4z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faFileAudio = {\n prefix: 'far',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 464H320c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM192 272V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L129.4 376H112c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h17.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8zm85.8-4c11.6 20 18.2 43.3 18.2 68s-6.6 48-18.2 68c-6.6 11.5-21.3 15.4-32.8 8.8s-15.4-21.3-8.8-32.8c7.5-12.9 11.8-27.9 11.8-44s-4.3-31.1-11.8-44c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8z\"]\n};\nvar faFileImage = {\n prefix: 'far',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm96 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm69.2 46.9c-3-4.3-7.9-6.9-13.2-6.9s-10.2 2.6-13.2 6.9l-41.3 59.7-11.9-19.1c-2.9-4.7-8.1-7.5-13.6-7.5s-10.6 2.8-13.6 7.5l-40 64c-3.1 4.9-3.2 11.1-.4 16.2s8.2 8.2 14 8.2h48 32 40 72c6 0 11.4-3.3 14.2-8.6s2.4-11.6-1-16.5l-72-104z\"]\n};\nvar faCircleQuestion = {\n prefix: 'far',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm169.8-90.7c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faFaceMehBlank = {\n prefix: 'far',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faEye = {\n prefix: 'far',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\"]\n};\nvar faFaceSadCry = {\n prefix: 'far',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M400 406.1V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V440.6c-28.7 15-61.4 23.4-96 23.4s-67.3-8.5-96-23.4V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V406.1C72.6 368.2 48 315 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 59-24.6 112.2-64 150.1zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm166.6 9.7c5.5-5.8 14.8-9.7 25.4-9.7s19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C391.7 186.8 371 180 351.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9zM208 320v32c0 26.5 21.5 48 48 48s48-21.5 48-48V320c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faFileCode = {\n prefix: 'far',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z\"]\n};\nvar faWindowMaximize = {\n prefix: 'far',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M.3 89.5C.1 91.6 0 93.8 0 96V224 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64V224 96c0-35.3-28.7-64-64-64H64c-2.2 0-4.4 .1-6.5 .3c-9.2 .9-17.8 3.8-25.5 8.2C21.8 46.5 13.4 55.1 7.7 65.5c-3.9 7.3-6.5 15.4-7.4 24zM48 224H464l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192z\"]\n};\nvar faFaceFrown = {\n prefix: 'far',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM174.6 384.1c-4.5 12.5-18.2 18.9-30.7 14.4s-18.9-18.2-14.4-30.7C146.9 319.4 198.9 288 256 288s109.1 31.4 126.6 79.9c4.5 12.5-2 26.2-14.4 30.7s-26.2-2-30.7-14.4C328.2 358.5 297.2 336 256 336s-72.2 22.5-81.4 48.1zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrown = faFaceFrown;\nvar faFloppyDisk = {\n prefix: 'far',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M48 96V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V170.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H309.5c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8V184c0 13.3-10.7 24-24 24H104c-13.3 0-24-10.7-24-24V80H64c-8.8 0-16 7.2-16 16zm80-16v80H272V80H128zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faSave = faFloppyDisk;\nvar faCommentDots = {\n prefix: 'far',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M168.2 384.9c-15-5.4-31.7-3.1-44.6 6.4c-8.2 6-22.3 14.8-39.4 22.7c5.6-14.7 9.9-31.3 11.3-49.4c1-12.9-3.3-25.7-11.8-35.5C60.4 302.8 48 272 48 240c0-79.5 83.3-160 208-160s208 80.5 208 160s-83.3 160-208 160c-31.6 0-61.3-5.5-87.8-15.1zM26.3 423.8c-1.6 2.7-3.3 5.4-5.1 8.1l-.3 .5c-1.6 2.3-3.2 4.6-4.8 6.9c-3.5 4.7-7.3 9.3-11.3 13.5c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c5.1 0 10.2-.3 15.3-.8l.7-.1c4.4-.5 8.8-1.1 13.2-1.9c.8-.1 1.6-.3 2.4-.5c17.8-3.5 34.9-9.5 50.1-16.1c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9zM144 272a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm80 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCommenting = faCommentDots;\nvar faFaceGrinSquint = {\n prefix: 'far',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zm-216-161.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandPointer = {\n prefix: 'far',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M160 64c0-8.8 7.2-16 16-16s16 7.2 16 16V200c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c8.8 0 16 7.2 16 16c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c7.8 0 14.3 5.6 15.7 13c1.6 8.2 7.3 15.1 15.1 18s16.7 1.6 23.3-3.6c2.7-2.1 6.1-3.4 9.9-3.4c8.8 0 16 7.2 16 16l0 16V392c0 39.8-32.2 72-72 72H272 212.3h-.9c-37.4 0-72.4-18.7-93.2-49.9L50.7 312.9c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4L116 353.2c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23V320 64zM176 0c-35.3 0-64 28.7-64 64V261.7C91.2 238 55.5 232.8 28.5 250.7C-.9 270.4-8.9 310.1 10.8 339.5L78.3 440.8c29.7 44.5 79.6 71.2 133.1 71.2h.9H272h56c66.3 0 120-53.7 120-120V288l0-16c0-35.3-28.7-64-64-64c-4.5 0-8.8 .5-13 1.3c-11.7-15.4-30.2-25.3-51-25.3c-6.9 0-13.5 1.1-19.7 3.1C288.7 170.7 269.6 160 248 160c-2.7 0-5.4 .2-8 .5V64c0-35.3-28.7-64-64-64zm48 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faHandScissors = {\n prefix: 'far',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M.2 276.3c-1.2-35.3 26.4-65 61.7-66.2l3.3-.1L57 208.1C22.5 200.5 .7 166.3 8.3 131.8S50.2 75.5 84.7 83.2l173 38.3c2.3-2.9 4.7-5.7 7.1-8.5l18.4-20.3C299.9 74.5 323.5 64 348.3 64l10.2 0c54.1 0 104.1 28.7 131.3 75.4l1.5 2.6c13.6 23.2 20.7 49.7 20.7 76.6L512 344c0 66.3-53.7 120-120 120l-8 0-96 0c-35.3 0-64-28.7-64-64c0-2.8 .2-5.6 .5-8.3c-19.4-11-32.5-31.8-32.5-55.7c0-.8 0-1.6 0-2.4L66.4 338c-35.3 1.2-65-26.4-66.2-61.7zm63.4-18.2c-8.8 .3-15.7 7.7-15.4 16.5s7.7 15.7 16.5 15.4l161.5-5.6c9.8-.3 18.7 5.3 22.7 14.2s2.2 19.3-4.5 26.4c-2.8 2.9-4.4 6.7-4.4 11c0 8.8 7.2 16 16 16c9.1 0 17.4 5.1 21.5 13.3s3.2 17.9-2.3 25.1c-2 2.7-3.2 6-3.2 9.6c0 8.8 7.2 16 16 16l96 0 8 0c39.8 0 72-32.2 72-72l0-125.4c0-18.4-4.9-36.5-14.2-52.4l-1.5-2.6c-18.6-32-52.8-51.6-89.8-51.6l-10.2 0c-11.3 0-22 4.8-29.6 13.1l-17.5-15.9 17.5 15.9-18.4 20.3c-.6 .6-1.1 1.3-1.7 1.9l57 13.2c8.6 2 14 10.6 12 19.2s-10.6 14-19.2 12l-85.6-19.7L74.3 130c-8.6-1.9-17.2 3.5-19.1 12.2s3.5 17.2 12.2 19.1l187.5 41.6c10.2 2.3 17.8 10.9 18.7 21.4l.1 1c.6 6.6-1.5 13.1-5.8 18.1s-10.6 7.9-17.2 8.2L63.6 258.1z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'far',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M516.1 325.5c1 3 2.1 6 3.3 8.9c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c1.2-2.9 2.3-5.9 3.3-8.9C152.5 406.2 229.5 464 320 464s167.5-57.8 196.1-138.5zM320 48c-101.4 0-185.8 72.5-204.3 168.5c-6.7-3.1-14.3-4.3-22.3-3.1c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-8-1.2-15.7 .1-22.3 3.1C505.8 120.5 421.4 48 320 48zM78.5 341.1C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7zm483 0c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zM439 336.5C414.4 374.6 370.3 400 319.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1zM281.6 228.8l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0zm160 0l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faCalendarXmark = {\n prefix: 'far',\n iconName: 'calendar-xmark',\n icon: [512, 512, [\"calendar-times\"], \"f273\", \"M160 0c13.3 0 24 10.7 24 24V64H328V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V192 144 128c0-35.3 28.7-64 64-64h40V24c0-13.3 10.7-24 24-24zM432 192H80V448c0 8.8 7.2 16 16 16H416c8.8 0 16-7.2 16-16V192zm-95 89l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faFileVideo = {\n prefix: 'far',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM80 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v16l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1L240 368v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V288z\"]\n};\nvar faFilePdf = {\n prefix: 'far',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M64 464H96v48H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V288H336V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z\"]\n};\nvar faComment = {\n prefix: 'far',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M123.6 391.3c12.9-9.4 29.6-11.8 44.6-6.4c26.5 9.6 56.2 15.1 87.8 15.1c124.7 0 208-80.5 208-160s-83.3-160-208-160S48 160.5 48 240c0 32 12.4 62.8 35.7 89.2c8.6 9.7 12.8 22.5 11.8 35.5c-1.4 18.1-5.7 34.7-11.3 49.4c17-7.9 31.1-16.7 39.4-22.7zM21.2 431.9c1.8-2.7 3.5-5.4 5.1-8.1c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208s-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6c-15.1 6.6-32.3 12.6-50.1 16.1c-.8 .2-1.6 .3-2.4 .5c-4.4 .8-8.7 1.5-13.2 1.9c-.2 0-.5 .1-.7 .1c-5.1 .5-10.2 .8-15.3 .8c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c4.1-4.2 7.8-8.7 11.3-13.5c1.7-2.3 3.3-4.6 4.8-6.9c.1-.2 .2-.3 .3-.5z\"]\n};\nvar faEnvelope = {\n prefix: 'far',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faHourglass = {\n prefix: 'far',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V67c0 40.3 16 79 44.5 107.5L158.1 256 76.5 337.5C48 366 32 404.7 32 445v19H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V445c0-40.3-16-79-44.5-107.5L225.9 256l81.5-81.5C336 146 352 107.3 352 67V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM192 289.9l81.5 81.5C293 391 304 417.4 304 445v19H80V445c0-27.6 11-54 30.5-73.5L192 289.9zm0-67.9l-81.5-81.5C91 121 80 94.6 80 67V48H304V67c0 27.6-11 54-30.5 73.5L192 222.1z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faCalendarCheck = {\n prefix: 'far',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zM329 297L217 409c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 95-95c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faHardDrive = {\n prefix: 'far',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M64 80c-8.8 0-16 7.2-16 16V258c5.1-1.3 10.5-2 16-2H448c5.5 0 10.9 .7 16 2V96c0-8.8-7.2-16-16-16H64zM48 320v96c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V320c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM0 320V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V320v96c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320zm280 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'far',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-14.8 14.8-65.7 23.6-88.3 26.7c-5.6 .9-10.3-3.9-9.5-9.5C403.3 79.9 412 29 426.8 14.2zM75 75C158.2-8.3 284.5-22.2 382.2 33.2c-1.5 4.8-2.9 9.6-4.1 14.3c-3.1 12.2-5.5 24.6-7.3 35c-80.8-53.6-190.7-44.8-261.9 26.4C37.7 180.1 28.9 290 82.5 370.8c-10.5 1.8-22.9 4.2-35 7.3c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75zm389.6 58.9c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c3.1-12.2 5.5-24.6 7.3-35c80.8 53.6 190.7 44.8 261.9-26.4c71.2-71.2 80-181.1 26.4-261.9c10.5-1.8 22.9-4.2 35-7.3zm-105.4 93c10.1-16.3 33.9-16.9 37.9 1.9c9.5 44.4-3.7 93.5-39.3 129.1s-84.8 48.8-129.1 39.3c-18.7-4-18.2-27.8-1.9-37.9c25.2-15.7 50.2-35.4 73.6-58.8s43.1-48.4 58.8-73.6zM92 265.3l97.4-29.7c11.6-3.5 22.5 7.3 19 19l-29.7 97.4c-2.6 8.6-13.4 11.3-19.8 4.9c-2-2-3.2-4.6-3.4-7.3l-5.1-56.1-56.1-5.1c-2.8-.3-5.4-1.5-7.3-3.4c-6.3-6.3-3.6-17.2 4.9-19.8zm193-178.2c2 2 3.2 4.6 3.4 7.3l5.1 56.1 56.1 5.1c2.8 .3 5.4 1.5 7.3 3.4c6.3 6.3 3.6 17.2-4.9 19.8l-97.4 29.7c-11.6 3.5-22.5-7.3-19-19L265.3 92c2.6-8.6 13.4-11.3 19.8-4.9zM14.9 497.1c-19.6-19.6-20-51-.7-70.3C29 412 79.8 403.2 102.4 400.1c5.6-.9 10.3 3.9 9.5 9.5c-3.2 22.5-11.9 73.5-26.7 88.3C66 517 34.5 516.6 14.9 497.1z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faRectangleList = {\n prefix: 'far',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm96 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm104 0c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm-72-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faListAlt = faRectangleList;\nvar faCalendarPlus = {\n prefix: 'far',\n iconName: 'calendar-plus',\n icon: [512, 512, [], \"f271\", \"M184 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H96c-35.3 0-64 28.7-64 64v16 48V448c0 35.3 28.7 64 64 64H416c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H376V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H184V24zM80 192H432V448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V192zm176 40c-13.3 0-24 10.7-24 24v48H184c-13.3 0-24 10.7-24 24s10.7 24 24 24h48v48c0 13.3 10.7 24 24 24s24-10.7 24-24V352h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V256c0-13.3-10.7-24-24-24z\"]\n};\nvar faCircleLeft = {\n prefix: 'far',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M48 256a208 208 0 1 1 416 0A208 208 0 1 1 48 256zm464 0A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3V304h96c17.7 0 32-14.3 32-32V240c0-17.7-14.3-32-32-32H256V150.3c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1L117.5 242.2c-3.5 3.8-5.5 8.7-5.5 13.8s2 10.1 5.5 13.8l99.9 107.1z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faMoneyBill1 = {\n prefix: 'far',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M112 112c0 35.3-28.7 64-64 64V336c35.3 0 64 28.7 64 64H464c0-35.3 28.7-64 64-64V176c-35.3 0-64-28.7-64-64H112zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm80-48c0 8.8 7.2 16 16 16v64h-8c-8.8 0-16 7.2-16 16s7.2 16 16 16h24 24c8.8 0 16-7.2 16-16s-7.2-16-16-16h-8V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faClock = {\n prefix: 'far',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faKeyboard = {\n prefix: 'far',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 112c-8.8 0-16 7.2-16 16V384c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H64zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 320H400c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm-72-72c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'far',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faImages = {\n prefix: 'far',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 80H512c8.8 0 16 7.2 16 16V320c0 8.8-7.2 16-16 16H490.8L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336H160c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16zM96 96V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faFaceGrin = {\n prefix: 'far',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrin = faFaceGrin;\nvar faFaceMeh = {\n prefix: 'far',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM184 328c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faMeh = faFaceMeh;\nvar faIdCard = {\n prefix: 'far',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M528 160V416c0 8.8-7.2 16-16 16H320c0-44.2-35.8-80-80-80H176c-44.2 0-80 35.8-80 80H64c-8.8 0-16-7.2-16-16V160H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM272 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm104-48c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faSun = {\n prefix: 'far',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M375.7 19.7c-1.5-8-6.9-14.7-14.4-17.8s-16.1-2.2-22.8 2.4L256 61.1 173.5 4.2c-6.7-4.6-15.3-5.5-22.8-2.4s-12.9 9.8-14.4 17.8l-18.1 98.5L19.7 136.3c-8 1.5-14.7 6.9-17.8 14.4s-2.2 16.1 2.4 22.8L61.1 256 4.2 338.5c-4.6 6.7-5.5 15.3-2.4 22.8s9.8 13 17.8 14.4l98.5 18.1 18.1 98.5c1.5 8 6.9 14.7 14.4 17.8s16.1 2.2 22.8-2.4L256 450.9l82.5 56.9c6.7 4.6 15.3 5.5 22.8 2.4s12.9-9.8 14.4-17.8l18.1-98.5 98.5-18.1c8-1.5 14.7-6.9 17.8-14.4s2.2-16.1-2.4-22.8L450.9 256l56.9-82.5c4.6-6.7 5.5-15.3 2.4-22.8s-9.8-12.9-17.8-14.4l-98.5-18.1L375.7 19.7zM269.6 110l65.6-45.2 14.4 78.3c1.8 9.8 9.5 17.5 19.3 19.3l78.3 14.4L402 242.4c-5.7 8.2-5.7 19 0 27.2l45.2 65.6-78.3 14.4c-9.8 1.8-17.5 9.5-19.3 19.3l-14.4 78.3L269.6 402c-8.2-5.7-19-5.7-27.2 0l-65.6 45.2-14.4-78.3c-1.8-9.8-9.5-17.5-19.3-19.3L64.8 335.2 110 269.6c5.7-8.2 5.7-19 0-27.2L64.8 176.8l78.3-14.4c9.8-1.8 17.5-9.5 19.3-19.3l14.4-78.3L242.4 110c8.2 5.7 19 5.7 27.2 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM192 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'far',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faCircleDown = {\n prefix: 'far',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 464a208 208 0 1 1 0-416 208 208 0 1 1 0 416zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3H304V160c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32v96H150.3C138 256 128 266 128 278.3c0 6.2 2.6 12.1 7.1 16.3l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faThumbsDown = {\n prefix: 'far',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M323.8 477.2c-38.2 10.9-78.1-11.2-89-49.4l-5.7-20c-3.7-13-10.4-25-19.5-35l-51.3-56.4c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l51.3 56.4c14.1 15.5 24.4 34 30.1 54.1l5.7 20c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7l-5.7-20c-5.7-19.9-14.7-38.7-26.6-55.5c-5.2-7.3-5.8-16.9-1.7-24.9s12.3-13 21.3-13L448 288c8.8 0 16-7.2 16-16c0-6.8-4.3-12.7-10.4-15c-7.4-2.8-13-9-14.9-16.7s.1-15.8 5.3-21.7c2.5-2.8 4-6.5 4-10.6c0-7.8-5.6-14.3-13-15.7c-8.2-1.6-15.1-7.3-18-15.2s-1.6-16.7 3.6-23.3c2.1-2.7 3.4-6.1 3.4-9.9c0-6.7-4.2-12.6-10.2-14.9c-11.5-4.5-17.7-16.9-14.4-28.8c.4-1.3 .6-2.8 .6-4.3c0-8.8-7.2-16-16-16H286.5c-12.6 0-25 3.7-35.5 10.7l-61.7 41.1c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l61.7-41.1c18.4-12.3 40-18.8 62.1-18.8H384c34.7 0 62.9 27.6 64 62c14.6 11.7 24 29.7 24 50c0 4.5-.5 8.8-1.3 13c15.4 11.7 25.3 30.2 25.3 51c0 6.5-1 12.8-2.8 18.7C504.8 238.3 512 254.3 512 272c0 35.3-28.6 64-64 64l-92.3 0c4.7 10.4 8.7 21.2 11.8 32.2l5.7 20c10.9 38.2-11.2 78.1-49.4 89zM32 384c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H32z\"]\n};\nvar faChessPawn = {\n prefix: 'far',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M232 152A72 72 0 1 0 88 152a72 72 0 1 0 144 0zm24 120H243.4l10.7 80H205.7L195 272H160 125l-10.7 80H65.9l10.7-80H64c-13.3 0-24-10.7-24-24s10.7-24 24-24c-15.1-20.1-24-45-24-72C40 85.7 93.7 32 160 32s120 53.7 120 120c0 27-8.9 51.9-24 72c13.3 0 24 10.7 24 24s-10.7 24-24 24zM52.7 464H267.3l-16.6-32H69.2L52.7 464zm207.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H40.8C18.2 512 0 493.8 0 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C36.5 390.7 47.5 384 59.5 384h201z\"]\n};\nvar faCreditCard = {\n prefix: 'far',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M512 80c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H512zm16 144V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V224H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faBell = {\n prefix: 'far',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V49.9C119.5 61.4 64 124.2 64 200v33.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416H424c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4V200c0-75.8-55.5-138.6-128-150.1V32c0-17.7-14.3-32-32-32zm0 96h8c57.4 0 104 46.6 104 104v33.4c0 47.9 13.9 94.6 39.7 134.6H72.3C98.1 328 112 281.3 112 233.4V200c0-57.4 46.6-104 104-104h8zm64 352H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faFile = {\n prefix: 'far',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64z\"]\n};\nvar faHospital = {\n prefix: 'far',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M232 0c-39.8 0-72 32.2-72 72v8H72C32.2 80 0 112.2 0 152V440c0 39.8 32.2 72 72 72h.2 .2 .2 .2 .2H73h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H75h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H77h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H79h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H82h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H85h.2 .2 .2 .2H86h.2 .2 .2 .2H87h.2 .2 .2 .2H88h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H98h.2 .2 .2 .2H99h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2v0H456h8v0H568c39.8 0 72-32.2 72-72V152c0-39.8-32.2-72-72-72H480V72c0-39.8-32.2-72-72-72H232zM480 128h88c13.3 0 24 10.7 24 24v40H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56v48H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56V440c0 13.3-10.7 24-24 24H480V336 128zM72 128h88V464h-.1-.2-.2-.2H159h-.2-.2-.2H158h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H154h-.2-.2-.2H153h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H150h-.2-.2-.2H149h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H146h-.2-.2-.2H145h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H142h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H139h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H136h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H133h-.2-.2-.2-.2-.2-.2-.2-.2H131h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H128h-.2-.2-.2-.2-.2-.2-.2-.2H126h-.2-.2-.2-.2-.2-.2-.2-.2H124h-.2-.2-.2-.2-.2-.2-.2-.2H122h-.2-.2-.2-.2-.2-.2-.2-.2H120h-.2-.2-.2-.2-.2-.2-.2-.2H118h-.2-.2-.2-.2-.2-.2-.2-.2H116h-.2-.2-.2-.2-.2-.2-.2-.2H114h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H111h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H108h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H105h-.2-.2-.2-.2H104h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H100h-.2-.2-.2-.2H99h-.2-.2-.2-.2H98h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H88h-.2-.2-.2-.2H87h-.2-.2-.2-.2H86h-.2-.2-.2-.2H85h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H82h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H79h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H77h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H75h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H73h-.2-.2-.2-.2-.2H72c-13.2 0-24-10.7-24-24V336h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V240h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V152c0-13.3 10.7-24 24-24zM208 72c0-13.3 10.7-24 24-24H408c13.3 0 24 10.7 24 24V336 464H368V400c0-26.5-21.5-48-48-48s-48 21.5-48 48v64H208V72zm88 24v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V168h24c8.8 0 16-7.2 16-16V136c0-8.8-7.2-16-16-16H344V96c0-8.8-7.2-16-16-16H312c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faChessRook = {\n prefix: 'far',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M80 80V192c0 2.5 1.2 4.9 3.2 6.4l51.2 38.4c6.8 5.1 10.4 13.4 9.5 21.9L133.5 352H85.2l9.4-85L54.4 236.8C40.3 226.2 32 209.6 32 192V72c0-22.1 17.9-40 40-40H376c22.1 0 40 17.9 40 40V192c0 17.6-8.3 34.2-22.4 44.8L353.4 267l9.4 85H314.5l-10.4-93.3c-.9-8.4 2.7-16.8 9.5-21.9l51.2-38.4c2-1.5 3.2-3.9 3.2-6.4V80H304v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H192v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H80zm4.7 384H363.3l-16.6-32H101.2L84.7 464zm271.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H72.8C50.2 512 32 493.8 32 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C68.5 390.7 79.5 384 91.5 384h265zM208 288c-8.8 0-16-7.2-16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 8.8-7.2 16-16 16H208z\"]\n};\nvar faStarHalf = {\n prefix: 'far',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M293.3 .6c10.9 2.5 18.6 12.2 18.6 23.4V408.7c0 8.9-4.9 17-12.7 21.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5c4.9-10.1 16.1-15.4 27-12.9zM263.9 128.4l-28.6 58.8c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l92.5-49.4V128.4z\"]\n};\nvar faChessKing = {\n prefix: 'far',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M248 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V56H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v40H59.6C26.7 144 0 170.7 0 203.6c0 8.2 1.7 16.3 4.9 23.8L59.1 352h52.3L49 208.2c-.6-1.5-1-3-1-4.6c0-6.4 5.2-11.6 11.6-11.6H224 388.4c6.4 0 11.6 5.2 11.6 11.6c0 1.6-.3 3.2-1 4.6L336.5 352h52.3l54.2-124.6c3.3-7.5 4.9-15.6 4.9-23.8c0-32.9-26.7-59.6-59.6-59.6H248V104h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V24zM101.2 432H346.8l16.6 32H84.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3H91.5c-12 0-22.9 6.7-28.4 17.3L36.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C32 493.8 50.2 512 72.8 512H375.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"]\n};\nvar faCircleUser = {\n prefix: 'far',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M406.5 399.6C387.4 352.9 341.5 320 288 320H224c-53.5 0-99.4 32.9-118.5 79.6C69.9 362.2 48 311.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 55.7-21.9 106.2-57.5 143.6zm-40.1 32.7C334.4 452.4 296.6 464 256 464s-78.4-11.6-110.5-31.7c7.3-36.7 39.7-64.3 78.5-64.3h64c38.8 0 71.2 27.6 78.5 64.3zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-272a40 40 0 1 1 0-80 40 40 0 1 1 0 80zm-88-40a88 88 0 1 0 176 0 88 88 0 1 0 -176 0z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faCopy = {\n prefix: 'far',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M448 384H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64H396.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V320c0 35.3-28.7 64-64 64zM64 128h96v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H256c8.8 0 16-7.2 16-16V416h48v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z\"]\n};\nvar faShareFromSquare = {\n prefix: 'far',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M400 255.4V240 208c0-8.8-7.2-16-16-16H352 336 289.5c-50.9 0-93.9 33.5-108.3 79.6c-3.3-9.4-5.2-19.8-5.2-31.6c0-61.9 50.1-112 112-112h48 16 32c8.8 0 16-7.2 16-16V80 64.6L506 160 400 255.4zM336 240h16v48c0 17.7 14.3 32 32 32h3.7c7.9 0 15.5-2.9 21.4-8.2l139-125.1c7.6-6.8 11.9-16.5 11.9-26.7s-4.3-19.9-11.9-26.7L409.9 8.9C403.5 3.2 395.3 0 386.7 0C367.5 0 352 15.5 352 34.7V80H336 304 288c-88.4 0-160 71.6-160 160c0 60.4 34.6 99.1 63.9 120.9c5.9 4.4 11.5 8.1 16.7 11.2c4.4 2.7 8.5 4.9 11.9 6.6c3.4 1.7 6.2 3 8.2 3.9c2.2 1 4.6 1.4 7.1 1.4h2.5c9.8 0 17.8-8 17.8-17.8c0-7.8-5.3-14.7-11.6-19.5l0 0c-.4-.3-.7-.5-1.1-.8c-1.7-1.1-3.4-2.5-5-4.1c-.8-.8-1.7-1.6-2.5-2.6s-1.6-1.9-2.4-2.9c-1.8-2.5-3.5-5.3-5-8.5c-2.6-6-4.3-13.3-4.3-22.4c0-36.1 29.3-65.5 65.5-65.5H304h32zM72 32C32.2 32 0 64.2 0 104V440c0 39.8 32.2 72 72 72H408c39.8 0 72-32.2 72-72V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V104c0-13.3 10.7-24 24-24h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H72z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faCopyright = {\n prefix: 'far',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c-31.2-31.2-31.2-81.9 0-113.1s81.9-31.2 113.1 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-50-50-131-50-181 0s-50 131 0 181s131 50 181 0c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-31.2 31.2-81.9 31.2-113.1 0z\"]\n};\nvar faMap = {\n prefix: 'far',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M565.6 36.2C572.1 40.7 576 48.1 576 56V392c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456V120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5V421.2l120-45.7V90.8L48 136.5zM360 422.7V137.3l-144-48V374.7l144 48zm48-1.5l120-45.7V90.8L408 136.5V421.2z\"]\n};\nvar faBellSlash = {\n prefix: 'far',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L542.6 400c2.7-7.8 1.3-16.5-3.9-23l-14.9-18.6C495.5 322.9 480 278.8 480 233.4V200c0-75.8-55.5-138.6-128-150.1V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V49.9c-43.9 7-81.5 32.7-104.4 68.7L38.8 5.1zM221.7 148.4C239.6 117.1 273.3 96 312 96h8 8c57.4 0 104 46.6 104 104v33.4c0 32.7 6.4 64.8 18.7 94.5L221.7 148.4zM406.2 416l-60.9-48H168.3c21.2-32.8 34.4-70.3 38.4-109.1L160 222.1v11.4c0 45.4-15.5 89.5-43.8 124.9L101.3 377c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6H406.2zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faHandLizard = {\n prefix: 'far',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M72 112c-13.3 0-24 10.7-24 24s10.7 24 24 24H240c35.3 0 64 28.7 64 64s-28.7 64-64 64H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H288c4.5 0 8.9 1.3 12.7 3.6l64 40c7 4.4 11.3 12.1 11.3 20.4v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V413.3L281.1 384H136c-39.8 0-72-32.2-72-72s32.2-72 72-72H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H72c-39.8 0-72-32.2-72-72S32.2 64 72 64H281.6c46.7 0 90.9 21.5 119.7 58.3l78.4 100.1c20.9 26.7 32.3 59.7 32.3 93.7V424c0 13.3-10.7 24-24 24s-24-10.7-24-24V316.1c0-23.2-7.8-45.8-22.1-64.1L363.5 151.9c-19.7-25.2-49.9-39.9-81.9-39.9H72z\"]\n};\nvar faFaceSmile = {\n prefix: 'far',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSmile = faFaceSmile;\nvar faHandPeace = {\n prefix: 'far',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M250.8 1.4c-35.2-3.7-66.6 21.8-70.3 57L174 119 156.7 69.6C145 36.3 108.4 18.8 75.1 30.5S24.2 78.8 35.9 112.1L88.7 262.2C73.5 276.7 64 297.3 64 320v0 24c0 92.8 75.2 168 168 168h48c92.8 0 168-75.2 168-168V272 256 224c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4c-10.4-21.3-32.3-36-57.6-36c-.7 0-1.5 0-2.2 0l5.9-56.3c3.7-35.2-21.8-66.6-57-70.3zm-.2 155.4C243.9 166.9 240 179 240 192v48c0 .7 0 1.4 0 2c-5.1-1.3-10.5-2-16-2h-7.4l-5.4-15.3 17-161.3c.9-8.8 8.8-15.2 17.6-14.2s15.2 8.8 14.2 17.6l-9.5 90.1zM111.4 85.6L165.7 240H144c-4 0-8 .3-11.9 .9L81.2 96.2c-2.9-8.3 1.5-17.5 9.8-20.4s17.5 1.5 20.4 9.8zM288 192c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16c0 8.8-7.2 16-16 16s-16-7.2-16-16V192zm38.4 108c10.4 21.3 32.3 36 57.6 36c5.5 0 10.9-.7 16-2v10c0 66.3-53.7 120-120 120H232c-66.3 0-120-53.7-120-120l0-24 0 0c0-17.7 14.3-32 32-32h80c8.8 0 16 7.2 16 16s-7.2 16-16 16H184c-13.3 0-24 10.7-24 24s10.7 24 24 24h40c35.3 0 64-28.7 64-64c0-.7 0-1.4 0-2c5.1 1.3 10.5 2 16 2c7.9 0 15.4-1.4 22.4-4zM400 272c0 8.8-7.2 16-16 16s-16-7.2-16-16V240 224c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'far',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM215.3 137.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm122.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faBuilding = {\n prefix: 'far',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M64 48c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16h80V400c0-26.5 21.5-48 48-48s48 21.5 48 48v64h80c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm88 40c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V104zM232 88h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V104c0-8.8 7.2-16 16-16zM88 232c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V232zm144-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faFaceGrinBeamSweat = {\n prefix: 'far',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3C497.1 120.8 512 102.7 512 81c0-20-28.6-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0c-9.5 12.6-27.1 37.2-36 57.5c-.3 .7-.6 1.4-.9 2.1C417.8 69.7 416 76 416 81c0 26 21.5 47 48 47c4.4 0 8.7-.6 12.8-1.7zM395.4 41.2C355.3 15.2 307.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256c0-35.8-7.3-69.9-20.6-100.8c-8.6 3.1-17.8 4.8-27.4 4.8c-8.9 0-17.6-1.5-25.7-4.2C454.7 185.5 464 219.7 464 256c0 114.9-93.1 208-208 208S48 370.9 48 256S141.1 48 256 48c48.7 0 93.4 16.7 128.9 44.7c-.6-3.8-.9-7.7-.9-11.7c0-11.4 3.8-22.4 7.1-30.5c1.3-3.1 2.7-6.2 4.3-9.3zM375 336.5c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5zM217.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faMoon = {\n prefix: 'far',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M144.7 98.7c-21 34.1-33.1 74.3-33.1 117.3c0 98 62.8 181.4 150.4 211.7c-12.4 2.8-25.3 4.3-38.6 4.3C126.6 432 48 353.3 48 256c0-68.9 39.4-128.4 96.8-157.3zm62.1-66C91.1 41.2 0 137.9 0 256C0 379.7 100 480 223.5 480c47.8 0 92-15 128.4-40.6c1.9-1.3 3.7-2.7 5.5-4c4.8-3.6 9.4-7.4 13.9-11.4c2.7-2.4 5.3-4.8 7.9-7.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-3.7 .6-7.4 1.2-11.1 1.6c-5 .5-10.1 .9-15.3 1c-1.2 0-2.5 0-3.7 0c-.1 0-.2 0-.3 0c-96.8-.2-175.2-78.9-175.2-176c0-54.8 24.9-103.7 64.1-136c1-.9 2.1-1.7 3.2-2.6c4-3.2 8.2-6.2 12.5-9c3.1-2 6.3-4 9.6-5.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-3.6-.3-7.1-.5-10.7-.6c-2.7-.1-5.5-.1-8.2-.1c-3.3 0-6.5 .1-9.8 .2c-2.3 .1-4.6 .2-6.9 .4z\"]\n};\nvar faCalendar = {\n prefix: 'far',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192z\"]\n};\nvar faFaceGrinTongueWink = {\n prefix: 'far',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M348.3 442.4c2.4-8.4 3.7-17.3 3.7-26.4V363.5c8.8-8 16.6-17.1 23-27c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c6.5 10 14.3 19.1 23.1 27.1V416c0 9.2 1.3 18 3.7 26.4C95.1 408.4 48 337.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 81.7-47.1 152.4-115.7 186.4zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm176.7 12a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-.4-72a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM320 416c0 35.3-28.7 64-64 64s-64-28.7-64-64V378.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6V416z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faClone = {\n prefix: 'far',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M64 464H288c8.8 0 16-7.2 16-16V384h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM224 352c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H224z\"]\n};\nvar faFaceAngry = {\n prefix: 'far',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm72.4-118.5c9.7-9 10.2-24.2 1.2-33.9C315.3 344.3 290.6 328 256 328s-59.3 16.3-73.5 31.6c-9 9.7-8.5 24.9 1.2 33.9s24.9 8.5 33.9-1.2c7.4-7.9 20-16.4 38.5-16.4s31.1 8.5 38.5 16.4c9 9.7 24.2 10.2 33.9 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faRectangleXmark = {\n prefix: 'far',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm175 79c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faPaperPlane = {\n prefix: 'far',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z\"]\n};\nvar faLifeRing = {\n prefix: 'far',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M385.1 419.1C349.7 447.2 304.8 464 256 464s-93.7-16.8-129.1-44.9l80.4-80.4c14.3 8.4 31 13.3 48.8 13.3s34.5-4.8 48.8-13.3l80.4 80.4zm68.1 .2C489.9 374.9 512 318.1 512 256s-22.1-118.9-58.8-163.3L465 81c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L419.3 58.8C374.9 22.1 318.1 0 256 0S137.1 22.1 92.7 58.8L81 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L58.8 92.7C22.1 137.1 0 193.9 0 256s22.1 118.9 58.8 163.3L47 431c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l11.8-11.8C137.1 489.9 193.9 512 256 512s118.9-22.1 163.3-58.8L431 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.8-11.8zm-34.1-34.1l-80.4-80.4c8.4-14.3 13.3-31 13.3-48.8s-4.8-34.5-13.3-48.8l80.4-80.4C447.2 162.3 464 207.2 464 256s-16.8 93.7-44.9 129.1zM385.1 92.9l-80.4 80.4c-14.3-8.4-31-13.3-48.8-13.3s-34.5 4.8-48.8 13.3L126.9 92.9C162.3 64.8 207.2 48 256 48s93.7 16.8 129.1 44.9zM173.3 304.8L92.9 385.1C64.8 349.7 48 304.8 48 256s16.8-93.7 44.9-129.1l80.4 80.4c-8.4 14.3-13.3 31-13.3 48.8s4.8 34.5 13.3 48.8zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faFaceGrimace = {\n prefix: 'far',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM168 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h8V320h-8zm40 48h32V320H208v48zm96 0V320H272v48h32zm32 0h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v48zM168 288H344c30.9 0 56 25.1 56 56s-25.1 56-56 56H168c-30.9 0-56-25.1-56-56s25.1-56 56-56zm-23.6-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faCalendarMinus = {\n prefix: 'far',\n iconName: 'calendar-minus',\n icon: [512, 512, [], \"f272\", \"M160 0c13.3 0 24 10.7 24 24V64H328V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V192 144 128c0-35.3 28.7-64 64-64h40V24c0-13.3 10.7-24 24-24zM432 192H80V448c0 8.8 7.2 16 16 16H416c8.8 0 16-7.2 16-16V192zM328 352H184c-13.3 0-24-10.7-24-24s10.7-24 24-24H328c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faCircleXmark = {\n prefix: 'far',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faThumbsUp = {\n prefix: 'far',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M323.8 34.8c-38.2-10.9-78.1 11.2-89 49.4l-5.7 20c-3.7 13-10.4 25-19.5 35l-51.3 56.4c-8.9 9.8-8.2 25 1.6 33.9s25 8.2 33.9-1.6l51.3-56.4c14.1-15.5 24.4-34 30.1-54.1l5.7-20c3.6-12.7 16.9-20.1 29.7-16.5s20.1 16.9 16.5 29.7l-5.7 20c-5.7 19.9-14.7 38.7-26.6 55.5c-5.2 7.3-5.8 16.9-1.7 24.9s12.3 13 21.3 13L448 224c8.8 0 16 7.2 16 16c0 6.8-4.3 12.7-10.4 15c-7.4 2.8-13 9-14.9 16.7s.1 15.8 5.3 21.7c2.5 2.8 4 6.5 4 10.6c0 7.8-5.6 14.3-13 15.7c-8.2 1.6-15.1 7.3-18 15.1s-1.6 16.7 3.6 23.3c2.1 2.7 3.4 6.1 3.4 9.9c0 6.7-4.2 12.6-10.2 14.9c-11.5 4.5-17.7 16.9-14.4 28.8c.4 1.3 .6 2.8 .6 4.3c0 8.8-7.2 16-16 16H286.5c-12.6 0-25-3.7-35.5-10.7l-61.7-41.1c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l61.7 41.1c18.4 12.3 40 18.8 62.1 18.8H384c34.7 0 62.9-27.6 64-62c14.6-11.7 24-29.7 24-50c0-4.5-.5-8.8-1.3-13c15.4-11.7 25.3-30.2 25.3-51c0-6.5-1-12.8-2.8-18.7C504.8 273.7 512 257.7 512 240c0-35.3-28.6-64-64-64l-92.3 0c4.7-10.4 8.7-21.2 11.8-32.2l5.7-20c10.9-38.2-11.2-78.1-49.4-89zM32 192c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWindowMinimize = {\n prefix: 'far',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M24 432c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faSquareFull = {\n prefix: 'far',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M464 48V464H48V48H464zM48 0H0V48 464v48H48 464h48V464 48 0H464 48z\"]\n};\nvar faNoteSticky = {\n prefix: 'far',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H288V352c0-17.7 14.3-32 32-32h80V96c0-8.8-7.2-16-16-16H64zM288 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V320v5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7H288z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faFaceSadTear = {\n prefix: 'far',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M175.9 448c-35-.1-65.5-22.6-76-54.6C67.6 356.8 48 308.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208s-93.1 208-208 208c-28.4 0-55.5-5.7-80.1-16zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM128 369c0 26 21.5 47 48 47s48-21 48-47c0-20-28.4-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0C156.6 308.6 128 349 128 369zm128-65c-13.3 0-24 10.7-24 24s10.7 24 24 24c30.7 0 58.7 11.5 80 30.6c9.9 8.8 25 8 33.9-1.9s8-25-1.9-33.9C338.3 320.2 299 304 256 304zm47.6-96a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faHandPointLeft = {\n prefix: 'far',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M64 128l177.6 0c-1 5.2-1.6 10.5-1.6 16l0 16-32 0L64 160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm224 16c0-17.7 14.3-32 32-32c0 0 0 0 0 0l24 0c66.3 0 120 53.7 120 120l0 48c0 52.5-33.7 97.1-80.7 113.4c.5-3.1 .7-6.2 .7-9.4c0-20-9.2-37.9-23.6-49.7c4.9-9 7.6-19.4 7.6-30.3c0-15.1-5.3-29-14-40c8.8-11 14-24.9 14-40l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-40 0-40zm32-80s0 0 0 0c-18 0-34.6 6-48 16L64 80C28.7 80 0 108.7 0 144s28.7 64 64 64l82 0c-1.3 5.1-2 10.5-2 16c0 25.3 14.7 47.2 36 57.6c-2.6 7-4 14.5-4 22.4c0 20 9.2 37.9 23.6 49.7c-4.9 9-7.6 19.4-7.6 30.3c0 35.3 28.7 64 64 64l64 0 24 0c92.8 0 168-75.2 168-168l0-48c0-92.8-75.2-168-168-168l-24 0zM256 400c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0zM240 224c0 5.5 .7 10.9 2 16l-2 0-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0 16zm24 64l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l24 0z\"]\n};\nvar icons = {\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faHandPointRight: faHandPointRight,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faLightbulb: faLightbulb,\n faFlag: faFlag,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faEyeSlash: faEyeSlash,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faHandSpock: faHandSpock,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faBookmark: faBookmark,\n faHandPointDown: faHandPointDown,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faUser: faUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faStar: faStar,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faClipboard: faClipboard,\n faChessQueen: faChessQueen,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faImage: faImage,\n faFolderClosed: faFolderClosed,\n faLemon: faLemon,\n faHandshake: faHandshake,\n faGem: faGem,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faIdBadge: faIdBadge,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faEnvelopeOpen: faEnvelopeOpen,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faFileExcel: faFileExcel,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faHeart: faHeart,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faCircle: faCircle,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faFileAudio: faFileAudio,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faFileCode: faFileCode,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandPointer: faHandPointer,\n faHandScissors: faHandScissors,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faFileVideo: faFileVideo,\n faFilePdf: faFilePdf,\n faComment: faComment,\n faEnvelope: faEnvelope,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faCalendarCheck: faCalendarCheck,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faCalendarPlus: faCalendarPlus,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faKeyboard: faKeyboard,\n faClosedCaptioning: faClosedCaptioning,\n faImages: faImages,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faSun: faSun,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faThumbsDown: faThumbsDown,\n faChessPawn: faChessPawn,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faBell: faBell,\n faFile: faFile,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faChessRook: faChessRook,\n faStarHalf: faStarHalf,\n faChessKing: faChessKing,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faCopy: faCopy,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faCopyright: faCopyright,\n faMap: faMap,\n faBellSlash: faBellSlash,\n faHandLizard: faHandLizard,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faHandPeace: faHandPeace,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faBuilding: faBuilding,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faMoon: faMoon,\n faCalendar: faCalendar,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faClone: faClone,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faPaperPlane: faPaperPlane,\n faLifeRing: faLifeRing,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faThumbsUp: faThumbsUp,\n faWindowMinimize: faWindowMinimize,\n faSquareFull: faSquareFull,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faHandPointLeft: faHandPointLeft\n};\n\nexport { icons as far, prefix, faTrashCan, faTrashAlt, faMessage, faCommentAlt, faFileLines, faFileAlt, faFileText, faCalendarDays, faCalendarAlt, faHandPointRight, faFaceSmileBeam, faSmileBeam, faFaceGrinStars, faGrinStars, faAddressBook, faContactBook, faComments, faPaste, faFileClipboard, faFaceGrinTongueSquint, faGrinTongueSquint, faFaceFlushed, faFlushed, faSquareCaretRight, faCaretSquareRight, faSquareMinus, faMinusSquare, faCompass, faSquareCaretDown, faCaretSquareDown, faFaceKissBeam, faKissBeam, faLightbulb, faFlag, faSquareCheck, faCheckSquare, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faFutbol, faFutbolBall, faSoccerBall, faPenToSquare, faEdit, faHourglassHalf, faHourglass2, faEyeSlash, faHand, faHandPaper, faHandSpock, faFaceKiss, faKiss, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faFaceGrinWide, faGrinAlt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faBookmark, faHandPointDown, faFolder, faFolderBlank, faUser, faSquareCaretLeft, faCaretSquareLeft, faStar, faChessKnight, faFaceLaughSquint, faLaughSquint, faFaceLaugh, faLaugh, faFolderOpen, faClipboard, faChessQueen, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faChartBar, faBarChart, faWindowRestore, faSquarePlus, faPlusSquare, faImage, faFolderClosed, faLemon, faHandshake, faGem, faCirclePlay, faPlayCircle, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faIdBadge, faFaceLaughBeam, faLaughBeam, faRegistered, faAddressCard, faContactCard, faVcard, faFaceTired, faTired, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faEnvelopeOpen, faFileZipper, faFileArchive, faSquare, faSnowflake, faNewspaper, faFaceKissWinkHeart, faKissWinkHeart, faStarHalfStroke, faStarHalfAlt, faFileExcel, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faCircleRight, faArrowAltCircleRight, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faHeart, faFaceSurprise, faSurprise, faCirclePause, faPauseCircle, faCircle, faCircleUp, faArrowAltCircleUp, faFileAudio, faFileImage, faCircleQuestion, faQuestionCircle, faFaceMehBlank, faMehBlank, faEye, faFaceSadCry, faSadCry, faFileCode, faWindowMaximize, faFaceFrown, faFrown, faFloppyDisk, faSave, faCommentDots, faCommenting, faFaceGrinSquint, faGrinSquint, faHandPointer, faHandScissors, faFaceGrinTears, faGrinTears, faCalendarXmark, faCalendarTimes, faFileVideo, faFilePdf, faComment, faEnvelope, faHourglass, faHourglassEmpty, faCalendarCheck, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faRectangleList, faListAlt, faCalendarPlus, faCircleLeft, faArrowAltCircleLeft, faMoneyBill1, faMoneyBillAlt, faClock, faClockFour, faKeyboard, faClosedCaptioning, faImages, faFaceGrin, faGrin, faFaceMeh, faMeh, faIdCard, faDriversLicense, faSun, faFaceLaughWink, faLaughWink, faCircleDown, faArrowAltCircleDown, faThumbsDown, faChessPawn, faCreditCard, faCreditCardAlt, faBell, faFile, faHospital, faHospitalAlt, faHospitalWide, faChessRook, faStarHalf, faChessKing, faCircleUser, faUserCircle, faCopy, faShareFromSquare, faShareSquare, faCopyright, faMap, faBellSlash, faHandLizard, faFaceSmile, faSmile, faHandPeace, faFaceGrinHearts, faGrinHearts, faBuilding, faFaceGrinBeamSweat, faGrinBeamSweat, faMoon, faCalendar, faFaceGrinTongueWink, faGrinTongueWink, faClone, faFaceAngry, faAngry, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faPaperPlane, faLifeRing, faFaceGrimace, faGrimace, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faThumbsUp, faWindowMinimize, faSquareFull, faNoteSticky, faStickyNote, faFaceSadTear, faSadTear, faHandPointLeft };\n"], "mappings": "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AA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACvE,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACvE,UAAU;AAAA,QAAM,UAAU;AAAA,QAC1B,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACvE,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACvE,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACtF,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACtF,UAAU;AAAA,QAAM,UAAU;AAAA,QAC1B,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,U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AAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,SAAS;AAAA,YACT,UAAU,CAAC,gBAAgB,cAAc;AAAA,UAC3C;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,SAAS;AAAA,YACT,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,UACZ;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,UACZ;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,UACZ;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAA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ACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACAC;AAAA,IACA;AAAA,IACAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;Ap4B/JA,gBAAgB;AAGhB,iBAAS,KAAK;", "names": ["_global", "exports", "module", "hasOwnProperty", "i", "n", "from", "s", "exports", "warn", "format", "error", "ReactDebugCurrentFrame", "context", "getComponentName", "init", "x", "hasOwnProperty", "config", "self", "createElement", "i", "defaultProps", "cloneElement", "escape", "text", "index", "c", "iterator", "n", "toArray", "createContext", "pending", "rejected", "forwardRef", "render", "isValidElementType", "useContext", "Context", "useState", "initialState", "useReducer", "reducer", "useRef", "useEffect", "create", "useLayoutEffect", "useCallback", "useMemo", "useDebugValue", "prefix", "fn", "s", "Component", "prototype", "location", "e", "exports", "module", "exports", "e", "requestAnimationFrame", "cancelAnimationFrame", "error", "index", "last", "i", "left", "right", "a", "b", "timer", "initialTime", "options", "delay", "exports", "module", "exports", "error", "exports", "module", "exports", "React", "Scheduler", "warn", "format", "error", "ReactDebugCurrentFrame", "Fragment", "i", "hasOwnProperty", "prefix", "sanitizeURL", "_ref", "capitalize", "x", "fn", "s", "c", "prototype", "init", "workInProgress", "getComponentName", "context", "toString", "get", "set", "e", "isHydrating", "validateProps", "isArray", "options", "text", "prefixes", "isEmpty", "camelize", "_", "styles", "style", "registrationNameDependencies", "possibleRegistrationNames", "isReserved", "getEventTarget", "a", "b", "d", "listener", "f", "callCallback", "current", "root", "map", "queuedEvent", "index", "initial", "log", "passive", "start", "end", "normalize", "from", "y", "shallowEqual", "offset", "range", "isTextNode", "noop", "createElement", "div", "namespace", "createInstance", "location", "has", "defaultProps", "renderLanes", "update", "queue", "pending", "effect", "last", "updateFragment", "child", "reconcileChildFibers", "isObject", "reducer", "initialState", "create", "destroy", "render", "subtreeRenderLanes", "isIterable", "error$1", "commitTime", "retry", "hydrate", "createPortal", "currentHook", "ReactCurrentDispatcher", "exports", "module", "exports", "isValidElementType", "Element", "Fragment", "isContextConsumer", "isElement", "exports", "module", "exports", "module", "exports", "module", "text", "x", "location", "error", "exports", "module", "text", "x", "y", "validate", "location", "i", "error", "checker", "iterator", "exports", "module", "exports", "module", "getPrototypeOf", "i", "e", "require_react_is_development", "exports", "isValidElementType", "Element", "Fragment", "isContextConsumer", "isElement", "require_react_is", "exports", "module", "exports", "get", "entry", "defaultEqualityCheck", "a", "b", "i", "exports", "get", "createSelector", "params", "i", "createStructuredSelector", "selectors", "index", "exports", "module", "undefined", "VERSION", "setTag", "e", "index", "offset", "collection", "n", "iterator", "map", "set", "runInContext", "context", "_", "Array", "Date", "Error", "Function", "Math", "Object", "RegExp", "String", "TypeError", "objectProto", "hasOwnProperty", "idCounter", "Buffer", "Symbol", "Uint8Array", "Map", "Promise", "Set", "WeakMap", "isArray", "isObject", "result", "start", "end", "iteratee", "size", "values", "isBuffer", "isType", "isTypedArray", "get", "key", "setTimeout", "includes", "isFunction", "objectToString", "object", "last", "identity", "isArrayLike", "isPlainObject", "indexOf", "actions", "toString", "clearTimeout", "order", "fn", "ary", "noop", "othValue", "convert", "transform", "reference", "concat", "fill", "findIndex", "fromPairs", "initial", "intersection", "join", "slice", "sortedUniq", "take", "uniq", "uniqBy", "zip", "tap", "toArray", "parent", "clone", "countBy", "filter", "find", "findLast", "forEach", "groupBy", "isString", "keyBy", "reduce", "reject", "bind", "debounce", "options", "flush", "defer", "delay", "flip", "partial", "partialRight", "spread", "wrap", "cloneDeep", "isArrayBuffer", "isBoolean", "isDate", "isElement", "isEmpty", "isError", "isFinite", "isNaN", "isNumber", "isRegExp", "isUndefined", "create", "prototype", "defaults", "findKey", "functions", "merge", "omit", "pick", "update", "clamp", "inRange", "capitalize", "endsWith", "escape", "parseInt", "replace", "trim", "truncate", "unescape", "matchesProperty", "chain", "range", "prefix", "add", "max", "maxBy", "min", "minBy", "round", "value", "isStringOrNumber", "value", "FlatObjectCache", "_cache", "_proto", "prototype", "set", "key", "selectorFn", "get", "remove", "clear", "isValidCacheKey", "cacheKey", "defaultCacheCreator", "defaultCacheKeyValidator", "parseReselectArgs", "reselectArgs", "args", "concat", "lastArgument", "length", "resultFunc", "createSelectorOptions", "undefined", "pop", "inputSelectors", "Array", "isArray", "createCachedSelector", "_len", "arguments", "_key", "_parseReselectArgs", "polymorphicOptions", "options", "keySelector", "Object", "assign", "recomputations", "resultFuncWithRecomputations", "apply", "patchedReselectArgs", "push", "cache", "cacheObject", "selectorCreator", "createSelector", "keySelectorCreator", "selector", "cacheResponse", "console", "warn", "getMatchingSelector", "removeMatchingSelector", "clearCache", "dependencies", "resetRecomputations", "createStructuredCachedSelector", "selectors", "createStructuredSelector", "validateCacheSize", "cacheSize", "Error", "Number", "isInteger", "FifoObjectCache", "_temp", "_ref", "_cacheOrdering", "_cacheSize", "earliest", "index", "indexOf", "splice", "LruObjectCache", "_registerCacheHit", "_deleteCacheHit", "FlatMapCache", "Map", "FifoMapCache", "size", "keys", "next", "LruMapCache", "has", "exports", "module", "undefined", "toString", "isString", "isArray", "isObject", "defaults", "map", "iterator", "context", "i", "j", "format", "formatMoney", "exports", "module", "f", "g", "define", "r", "e", "n", "t", "o", "i", "c", "u", "a", "p", "options", "resolve", "reject", "fn", "promise", "self", "config", "VERSION", "create", "client", "params", "b", "d", "k", "l", "h", "m", "q", "v", "w", "x", "y", "z", "A", "B", "D", "E", "F", "G", "H", "prefix", "exports", "module", "f", "g", "define", "r", "e", "n", "t", "o", "i", "c", "u", "a", "p", "options", "resolve", "reject", "v", "fn", "promise", "analytics", "VERSION", "Client", "client", "config", "self", "api", "create", "headers", "error", "validate", "atob", "prefix", "parse", "params", "stringify", "namespace", "k", "b", "b2", "b3", "exports", "module", "f", "g", "define", "r", "e", "n", "t", "o", "i", "c", "u", "a", "p", "options", "resolve", "reject", "ua", "document", "EventEmitter", "createFrame", "config", "v", "fn", "promise", "s", "min", "max", "Framebus", "self", "listener", "_", "m", "k", "k2", "error", "index", "styles", "style", "analytics", "shadow", "HostedFields", "client", "j", "cards", "VERSION", "create", "functions", "atob", "prefix", "b", "b2", "b3", "exports", "module", "f", "g", "define", "r", "e", "n", "t", "o", "i", "c", "u", "a", "p", "options", "resolve", "reject", "ua", "document", "EventEmitter", "ExtendedPromise", "createFrame", "config", "v", "fn", "promise", "s", "min", "max", "Framebus", "self", "listener", "_", "m", "k", "k2", "error", "VERSION", "create", "client", "analytics", "ApplePay", "applePay", "defaults", "Client", "api", "headers", "validate", "params", "b", "d", "l", "h", "q", "w", "x", "y", "z", "A", "B", "D", "E", "F", "G", "H", "find", "index", "styles", "style", "shadow", "HostedFields", "j", "cards", "dataCollector", "hostedFields", "functions", "atob", "prefix", "Modal", "noop", "top", "left", "offset", "parse", "stringify", "namespace", "b2", "b3", "isProduction", "VenmoDesktop", "context", "hash", "delay", "require_ReactPropTypesSecret", "exports", "module", "exports", "module", "require_checkPropTypes", "exports", "module", "text", "x", "location", "error", "require_factoryWithTypeCheckers", "exports", "module", "text", "x", "y", "validate", "location", "i", "error", "checker", "iterator", "require_prop_types", "exports", "module", "exports", "module", "exports", "module", "_extends", "i", "exports", "module", "_defineProperty", "exports", "module", "_arrayLikeToArray", "i", "exports", "module", "_arrayWithoutHoles", "exports", "module", "_iterableToArray", "exports", "module", "_unsupportedIterableToArray", "o", "n", "exports", "module", "_nonIterableSpread", "exports", "module", "_toConsumableArray", "exports", "module", "_classCallCheck", "exports", "module", "_typeof", "obj", "exports", "module", "self", "exports", "module", "_typeof", "self", "exports", "module", "o", "_getPrototypeOf", "exports", "module", "_defineProperties", "i", "_createClass", "exports", "module", "o", "p", "_setPrototypeOf", "exports", "module", "exports", "module", "i", "exports", "throttle", "fn", "last", "timer", "_default", "exports", "_defineProperty2", "_toConsumableArray2", "a", "b", "index", "Scrollspy", "get", "i", "max", "offset", "render", "style", "counter", "exports", "module", "Math", "tinycolor", "R", "G", "B", "h", "s", "v", "l", "format", "fn", "i", "a", "r", "g", "b", "max", "min", "d", "p", "q", "t", "f", "c2", "flip", "o", "n", "c", "exports", "module", "EventSubscription", "exports", "module", "EmitterSubscription", "listener", "context", "exports", "module", "format", "invariant", "error", "exports", "module", "invariant", "EventSubscriptionVendor", "exports", "module", "emptyFunction", "exports", "module", "invariant", "BaseEventEmitter", "addListener", "listener", "context", "emitter", "exports", "module", "exports", "module", "i", "exports", "e", "_default", "exports", "calculateVariant", "a", "b", "index", "_default", "exports", "emitter", "PushtellEventEmitter", "index", "error", "_default", "exports", "_slicedToArray", "i", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "selectVariant", "useExperiment", "_default", "exports", "_typeof", "obj", "_getRequireWildcardCache", "nodeInterop", "filterVariants", "error", "CoreExperiment", "_default", "exports", "_typeof", "obj", "_getRequireWildcardCache", "nodeInterop", "_classCallCheck", "_defineProperties", "i", "_createClass", "o", "p", "_setPrototypeOf", "self", "e", "_getPrototypeOf", "_defineProperty", "Experiment", "render", "exports", "_typeof", "obj", "_getRequireWildcardCache", "nodeInterop", "_classCallCheck", "_defineProperties", "i", "_createClass", "o", "p", "_setPrototypeOf", "self", "e", "_getPrototypeOf", "_defineProperty", "Variant", "render", "exports", "module", "exports", "module", "_typeof", "obj", "_getRequireWildcardCache", "nodeInterop", "_classCallCheck", "_defineProperties", "i", "_createClass", "o", "p", "_setPrototypeOf", "self", "e", "_getPrototypeOf", "_defineProperty", "style", "Debugger", "render", "exports", "_default", "error", "exports", "_default", "error", "exports", "module", "left", "right", "application", "map", "error", "options", "_", "index", "params", "e", "context", "filter", "set", "match", "selectors", "oldValue", "index", "left", "right", "_", "error", "context", "descriptors", "constructor", "module", "prototype", "a", "b", "application", "logger", "element", "c", "n", "k", "v", "filter", "resolve", "read", "write", "prefix", "import_react", "import_react_dom", "import_react", "React", "setBatch", "getBatch", "batch", "last", "notify", "listener", "get", "import_react", "_ref", "context", "Context", "React", "PropTypes", "import_react", "import_react", "import_react", "context", "useReduxContext", "useStore", "context", "useStore", "useDispatch", "import_react", "refEquality", "a", "b", "s", "context", "useReduxContext", "useSelector", "die", "error", "args", "e", "errors", "msg", "apply", "Error", "length", "map", "s", "join", "isDraft", "value", "DRAFT_STATE", "isDraftable", "proto", "Object", "getPrototypeOf", "Ctor", "hasOwnProperty", "call", "constructor", "Function", "toString", "objectCtorString", "Array", "isArray", "DRAFTABLE", "_value$constructor", "isMap", "isSet", "each", "obj", "iter", "enumerableOnly", "getArchtype", "Object", "keys", "ownKeys", "forEach", "key", "entry", "index", "thing", "state", "DRAFT_STATE", "type_", "Array", "isArray", "isMap", "isSet", "has", "prop", "prototype", "hasOwnProperty", "call", "get", "set", "propOrOldValue", "value", "t", "add", "is", "x", "y", "target", "hasMap", "Map", "hasSet", "Set", "latest", "copy_", "base_", "shallowCopy", "base", "slice", "descriptors", "getOwnPropertyDescriptors", "i", "length", "desc", "writable", "configurable", "enumerable", "create", "getPrototypeOf", "freeze", "deep", "isFrozen", "isDraft", "isDraftable", "clear", "delete", "dontMutateFrozenCollections", "die", "getPlugin", "pluginKey", "plugin", "plugins", "loadPlugin", "implementation", "getCurrentScope", "currentScope", "usePatchesInScope", "scope", "patchListener", "patches_", "inversePatches_", "patchListener_", "revokeScope", "leaveScope", "drafts_", "revokeDraft", "parent_", "enterScope", "immer", "immer_", "canAutoFreeze_", "unfinalizedDrafts_", "draft", "revoke_", "revoked_", "processResult", "result", "baseDraft", "isReplaced", "useProxies_", "willFinalizeES5_", "modified_", "finalize", "maybeFreeze", "generateReplacementPatches_", "NOTHING", "undefined", "rootScope", "path", "childValue", "finalizeProperty", "scope_", "finalized_", "draft_", "resultEach", "generatePatches_", "parentState", "targetObject", "rootPath", "targetIsSet", "res", "assigned_", "concat", "autoFreeze_", "peek", "getDescriptorFromProto", "source", "proto", "getOwnPropertyDescriptor", "markChanged", "prepareCopy", "createProxy", "parent", "proxyMap_", "proxySet_", "isManual_", "traps", "objectTraps", "arrayTraps", "Proxy", "revocable", "revoke", "proxy", "createES5Proxy_", "push", "current", "currentImpl", "copy", "archType", "hasChanges_", "copyHelper", "from", "enableES5", "proxyProperty", "this", "assertUnrevoked", "markChangesSweep", "drafts", "hasArrayChanges", "hasObjectChanges", "baseValue", "baseIsDraft", "descriptor", "JSON", "stringify", "defineProperty", "markChangesRecursively", "object", "min", "Math", "value", "currentScope", "hasSymbol", "Symbol", "hasMap", "Map", "hasSet", "Set", "hasProxies", "Proxy", "revocable", "Reflect", "NOTHING", "for", "DRAFTABLE", "DRAFT_STATE", "value", "errors", "data", "path", "op", "plugin", "thing", "objectCtorString", "Object", "prototype", "constructor", "ownKeys", "Reflect", "getOwnPropertySymbols", "obj", "getOwnPropertyNames", "concat", "getOwnPropertyDescriptors", "target", "res", "forEach", "key", "getOwnPropertyDescriptor", "plugins", "objectTraps", "get", "state", "prop", "DRAFT_STATE", "source", "latest", "has", "desc", "getDescriptorFromProto", "_desc$get", "call", "draft_", "undefined", "finalized_", "isDraftable", "peek", "base_", "prepareCopy", "copy_", "createProxy", "scope_", "immer_", "set", "modified_", "current", "currentState", "assigned_", "is", "markChanged", "Number", "isNaN", "deleteProperty", "owner", "writable", "configurable", "type_", "enumerable", "defineProperty", "die", "getPrototypeOf", "setPrototypeOf", "arrayTraps", "each", "fn", "arguments", "apply", "this", "parseInt", "Immer", "e", "config", "hasProxies", "base", "recipe", "patchListener", "defaultBase", "self", "_this", "args", "produce", "draft", "_this2", "result", "scope", "enterScope", "proxy", "hasError", "revokeScope", "leaveScope", "Promise", "then", "usePatchesInScope", "processResult", "error", "NOTHING", "autoFreeze_", "freeze", "p", "ip", "getPlugin", "generateReplacementPatches_", "produceWithPatches", "patches", "inversePatches", "nextState", "useProxies", "setUseProxies", "autoFreeze", "setAutoFreeze", "createDraft", "isDraft", "isManual_", "finishDraft", "useProxies_", "applyPatches", "i", "length", "patch", "slice", "applyPatchesImpl", "applyPatches_", "immer", "bind", "i", "randomString", "isPlainObject", "reducer", "listener", "index", "i", "observable", "_ref", "subscribe", "warning", "e", "isPlainObject", "reducer", "initialState", "i", "a", "b", "createStore", "import_reselect", "middleware", "_ref", "_i", "noop2", "isPlainObject", "fn", "MiddlewareArray", "EnhancerArray", "_", "key", "options", "_c", "nestedValue", "x", "thunk", "reducer", "enhancers", "reducer", "x", "initialState", "_c", "reducer2", "draft", "slice", "options", "m", "_", "update", "sort", "merge", "a", "b", "i", "RejectWithValue", "FulfillWithMeta", "pending", "rejected", "error", "reject", "notify", "module", "import_lodash", "import_lodash", "module", "import_lodash", "cart", "canvas", "fn", "wrap", "kindOf", "isBoolean", "isPlainObject", "prototype", "isDate", "fn", "i", "l", "context", "extend", "a", "b", "descriptors", "filter", "iterator", "m", "p2", "hasOwnProperty", "reducer", "define", "visit", "isThenable", "config", "error", "filter", "i", "options", "index", "build", "params", "options", "prototype", "toString", "encode", "params", "options", "rejected", "options", "fn", "h", "options", "i", "index", "e", "headers", "isFormData", "isFileList", "transitional", "i", "context", "filter", "w", "headers", "self", "i", "format", "prototype", "config", "context", "headers", "fn", "config", "resolve", "reject", "validateStatus", "write", "read", "standardBrowserEnv", "nonStandardBrowserEnv", "min", "i", "listener", "e", "loaded", "inRange", "config", "resolve", "reject", "transitional", "fn", "e", "i", "config", "config2", "config", "a", "b", "mergeMap", "merge", "VERSION", "i", "VERSION", "options", "validators", "config", "transitional", "headers", "promise", "i", "error", "resolve", "i", "promise", "reject", "config", "listener", "index", "c", "wrap", "context", "create", "VERSION", "Axios", "AxiosError", "CanceledError", "isCancel", "CancelToken", "VERSION", "all", "isAxiosError", "spread", "toFormData", "AxiosHeaders", "HttpStatusCode", "mergeConfig", "d", "b", "p", "__extends", "P", "resolve", "reject", "e", "rejected", "__generator", "_", "t", "f", "y", "g", "n", "v", "o", "s", "m", "i", "n", "r", "e", "error", "__spreadArray", "from", "i", "l", "v", "g", "q", "n", "a", "b", "e", "settle", "r", "reject", "f", "o", "m", "i", "n", "v", "resolve", "reject", "settle", "d", "isFunction", "i", "index", "Subscription", "isFunction", "e", "__spreadArray", "isFunction", "__spreadArray", "noop", "error", "error", "__extends", "Subscriber", "error", "bind", "fn", "ConsumerObserver", "error", "__extends", "SafeSubscriber", "isFunction", "error", "noop", "x", "fn", "Observable", "observable", "error", "resolve", "reject", "x", "isFunction", "isFunction", "init", "__extends", "OperatorSubscriber", "err", "__extends", "Subject", "observable", "__extends", "AnonymousSubject", "Action", "__extends", "delay", "__spreadArray", "__extends", "AsyncAction", "delay", "error", "e", "actions", "Action", "Scheduler", "delay", "__extends", "AsyncScheduler", "actions", "error", "__extends", "QueueAction", "delay", "__extends", "QueueScheduler", "isFunction", "isFunction", "x", "isFunction", "isFunction", "isFunction", "isFunction", "readableStream", "isFunction", "isFunction", "i", "promise", "process", "readableStream", "delay", "delay", "delay", "i", "iterator", "isFunction", "iterator", "index", "isArray", "fn", "__spreadArray", "isArray", "getPrototypeOf", "i", "i", "index", "isFunction", "a", "i", "b", "sourceIndex", "n", "merge", "isArray", "filter", "index", "zip", "completed", "sourceIndex", "__spreadArray", "i", "isFunction", "noop", "index", "a", "b", "config", "delay", "index", "noop", "error", "isFunction", "_a", "i", "noop", "__spreadArray", "IS_PRODUCTION", "isError", "isString", "isPlainObject", "isRegExp", "isThenable", "isNaN", "max", "i", "e", "isString", "isRegExp", "error", "i", "options", "i", "isString", "i", "console", "logger", "from", "isError", "isPlainObject", "e", "a", "b", "p", "i", "fn", "e", "e", "log", "_", "c", "WINDOW", "listener", "options", "handlers", "e", "WINDOW", "WINDOW", "e", "error", "options", "error", "e", "WINDOW", "WINDOW", "from", "WINDOW", "isString", "e", "i", "isNaN", "prototype", "States", "resolve", "_", "reject", "e", "isThenable", "add", "resolve", "reject", "counter", "parseUrl", "performance", "performance", "headers", "append", "e", "offset", "headers", "categories", "delay", "error", "DEBUG_BUILD", "index", "resolve", "reject", "DEBUG_BUILD", "isThenable", "context", "session", "options", "client", "i", "e", "b", "Scope", "context", "context", "client", "userAgent", "session", "end", "client", "options", "Scope", "client", "context", "session", "isPlainObject", "client", "Scope", "top", "e", "isThenable", "context", "DEBUG_BUILD", "endSession", "layer", "session", "userAgent", "options", "session", "k", "options", "defaultIntegrations", "client", "DEBUG_BUILD", "i", "fn", "headers", "options", "DEBUG_BUILD", "session", "promise", "resolve", "trace", "isError", "isErrorEvent", "isThenable", "isPlainObject", "e", "options", "DEBUG_BUILD", "client", "top", "options", "flush", "DEBUG_BUILD", "error", "options", "name", "options", "client", "DEBUG_BUILD", "e", "i", "INTEGRATION_NAME", "context", "e", "client", "INTEGRATION_NAME", "options", "client", "INTEGRATIONS", "WINDOW", "fn", "options", "e", "DEBUG_BUILD", "exceptionFromError", "parseStackFrames", "client", "e", "eventFromUnknownInput", "eventFromMessage", "isError", "isPlainObject", "prototype", "headers", "options", "WINDOW", "eventFromMessage", "DEBUG_BUILD", "WINDOW", "document", "e", "DEBUG_BUILD", "options", "e", "options", "resolve", "reject", "INTEGRATION_NAME", "options", "client", "dom", "DEBUG_BUILD", "e", "from", "parseUrl", "WINDOW", "INTEGRATION_NAME", "_shouldDropEvent", "DEBUG_BUILD", "i", "INTEGRATION_NAME", "options", "client", "error", "isString", "eventFromUnknownInput", "e", "e2", "DEBUG_BUILD", "INTEGRATION_NAME", "WINDOW", "userAgent", "headers", "DEFAULT_KEY", "DEFAULT_LIMIT", "INTEGRATION_NAME", "_linkedErrorsIntegration", "options", "client", "exceptionFromError", "linkedErrorsIntegration", "LinkedErrors", "INTEGRATION_NAME", "options", "WINDOW", "fn", "e", "linkedErrorsIntegration", "options", "WINDOW", "WINDOW", "DEBUG_BUILD", "from", "WINDOW", "CoreIntegrations", "BrowserIntegrations", "init", "options", "browserInit", "options", "reducer", "initialState", "_", "client", "i", "last", "resolve", "p", "trim", "start", "end", "from", "f", "convertIntegrationFnToClass", "fn", "defineIntegration", "INTEGRATION_NAME", "options", "prefix", "f", "defineIntegration", "convertIntegrationFnToClass", "init", "options", "accounting", "a", "e", "context", "isAxiosError", "IS_PRODUCTION", "error", "c", "o", "initialState", "slice", "update", "combined", "localState", "createSelector2", "canvas", "o", "module", "initialState", "update", "combined", "localState", "module", "import_lodash", "t", "getAllShallow", "getAllDeep", "initialState", "update", "combined", "localState", "defaultSelectors", "createSelector2", "c", "module", "catalogs", "s", "p", "fetchSubcatalogs", "initialState", "slice", "update", "combined", "localState", "defaultSelectors", "createSelector2", "s", "allActions", "module", "import_lodash", "dom", "n", "a", "b", "w", "h", "r", "catalogs", "c", "s", "p", "error", "k", "w", "h", "products", "v", "n", "wrap", "options", "combined", "localState", "defaultSelectors", "createSelector2", "n", "module", "c", "start", "end", "canvas", "x", "y", "canvases", "initialState", "update", "canvas", "x", "y", "all", "options", "a", "b", "o", "w", "h", "wrap", "x", "y", "combined", "localState", "defaultSelectors", "createSelector2", "c", "canvas", "n", "module", "initialState", "cart", "update", "r", "createSelector2", "filter", "merge", "canvas", "n", "module", "import_lodash", "options", "combined", "localState", "createSelector2", "c", "s", "p", "p", "module", "import_react", "import_react", "import_lodash", "import_lodash", "fn", "delay", "e", "import_lodash", "a", "b", "initialState", "slice", "update", "import_lodash", "combined", "localState", "defaultSelectors", "p", "createSelector2", "all", "c", "allActions", "module", "import_lodash", "import_lodash", "w", "h", "z", "v", "filter", "import_lodash", "import_lodash", "filter", "n", "a", "b", "initialState", "update", "combined", "localState", "defaultSelectors", "createSelector2", "_", "crops", "c", "n", "canvas", "node", "w", "h", "canvas", "context", "error", "error", "module", "initialState", "slice", "save", "initialState", "slice", "combined", "localState", "module", "get", "initialState", "slice", "combined", "localState", "module", "combined", "localState", "error", "headers", "h", "module", "initialState", "slice", "import_client", "client", "error", "dataCollector", "hostedFields", "get", "update", "getAll", "update", "a", "b", "initialState", "update", "combined", "localState", "defaultSelectors", "createSelector2", "module", "initialState", "slice", "combined", "localState", "module", "add", "initialState", "combined", "localState", "csrfField", "update", "module", "cart_default", "initialState", "slice", "cart_default", "getAll", "a", "slice", "combined", "localState", "defaultSelectors", "zip", "zip", "validate", "zipLookup", "zip", "error", "IS_PRODUCTION", "module", "getAll", "initialState", "update", "combined", "localState", "module", "combined", "localState", "createSelector2", "module", "combined", "localState", "cart", "cart_default", "module", "save", "getDetails", "initialState", "slice", "combined", "localState", "module", "initialState", "update", "combined", "localState", "createSelector2", "module", "import_react", "import_lodash", "ownKeys", "_objectSpread2", "i", "_defineProperty", "_typeof", "obj", "i", "_defineProperty", "i", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_nonIterableSpread", "o", "n", "noop", "e", "WINDOW", "get", "_defineProperty", "_ref", "_ref2", "_objectSpread2", "config", "set", "d", "css", "style", "toArray", "styles", "s", "w", "listener", "fn", "prefix", "bindInternal4", "a", "b", "c", "iterator", "counter", "index", "icons", "icon", "params", "_defineProperty", "prefix", "build", "lookup", "reducer", "o", "style", "icon", "a", "config", "c", "emptyCanonicalIcon", "params", "v", "Library", "add", "_objectSpread2", "_ref", "k", "mixout", "_typeof", "hooks", "noAuto", "api", "autoReplace", "get", "main", "styles", "offset", "_ref2", "resolve", "reject", "noop", "p", "begin", "end", "i2svg", "WINDOW", "options", "toArray", "_toConsumableArray", "hclAdd", "hclRemove", "prefixes", "f", "e", "render", "mask", "layer", "counter", "text", "provides", "replace", "watch", "parseTransformString", "n", "providers", "i", "import_prop_types", "import_react", "ownKeys", "_objectSpread2", "i", "_defineProperty", "_typeof", "obj", "_objectWithoutPropertiesLoose", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "o", "n", "flip", "camelize", "capitalize", "style", "s", "createElement", "PRODUCTION", "e", "icon", "_ref", "PropTypes", "React", "React", "Link_default", "categories", "catalogs", "c", "e", "React", "Link_default", "Scrollspy", "CatalogSelector_default", "import_react", "import_react", "import_react", "end", "isElement", "_ref", "style", "name", "getComputedStyle", "isElement", "getComputedStyle", "css", "window", "round", "min", "max", "toPaddingObject", "_ref", "options", "popperOffsets", "min", "max", "offset", "effect", "_ref", "x", "y", "round", "popper", "getComputedStyle", "options", "effect", "_ref", "options", "window", "fn", "hash", "x", "y", "x", "y", "getComputedStyle", "getComputedStyle", "clippingParents", "getComputedStyle", "isElement", "_ref", "reference", "end", "options", "isElement", "popperOffsets", "offset", "options", "placements", "placement", "a", "b", "_ref", "options", "placements", "placement", "i", "check", "_loop", "_i", "checks", "_ref", "offset", "_ref", "options", "x", "y", "_ref", "_ref", "options", "popperOffsets", "offset", "min", "max", "map", "sort", "debounce", "fn", "pending", "resolve", "p", "c", "s", "fn", "merged", "defaultModifiers", "defaultOptions", "createPopper", "reference", "popper", "options", "isElement", "m", "_ref", "getComputedStyle", "index", "fn", "debounce", "resolve", "destroy", "state", "effect", "noopFn", "BOX_CLASS", "CONTENT_CLASS", "BACKDROP_CLASS", "ARROW_CLASS", "SVG_ARROW_CLASS", "TOUCH_OPTIONS", "passive", "capture", "hasOwnProperty", "obj", "key", "call", "getValueAtIndexOrReturn", "value", "index", "defaultValue", "Array", "isArray", "v", "isType", "type", "str", "toString", "indexOf", "invokeWithArgsOrReturn", "args", "debounce", "fn", "ms", "timeout", "arg", "clearTimeout", "setTimeout", "removeProperties", "keys", "clone", "forEach", "splitBySpaces", "split", "filter", "Boolean", "normalizeToArray", "concat", "pushIfUnique", "arr", "push", "unique", "item", "getBasePlacement", "placement", "arrayFrom", "slice", "removeUndefinedProps", "Object", "reduce", "acc", "undefined", "div", "document", "createElement", "isElement", "some", "isNodeList", "isMouseEvent", "isReferenceElement", "_tippy", "reference", "getArrayOfElements", "querySelectorAll", "setTransitionDuration", "els", "el", "style", "transitionDuration", "setVisibilityState", "state", "setAttribute", "getOwnerDocument", "elementOrElements", "element", "ownerDocument", "body", "isCursorOutsideInteractiveBorder", "popperTreeData", "event", "clientX", "clientY", "every", "_ref", "popperRect", "popperState", "props", "interactiveBorder", "basePlacement", "offsetData", "modifiersData", "offset", "topDistance", "top", "y", "bottomDistance", "bottom", "leftDistance", "left", "x", "rightDistance", "right", "exceedsTop", "exceedsBottom", "exceedsLeft", "exceedsRight", "updateTransitionEndListener", "box", "action", "listener", "method", "currentInput", "isTouch", "lastMouseMoveTime", "onDocumentTouchStart", "window", "performance", "addEventListener", "onDocumentMouseMove", "now", "removeEventListener", "onWindowBlur", "activeElement", "instance", "blur", "isVisible", "bindGlobalEventListeners", "isBrowser", "ua", "navigator", "userAgent", "isIE", "test", "createMemoryLeakWarning", "txt", "join", "clean", "spacesAndTabs", "lineStartWithSpaces", "replace", "trim", "getDevMessage", "message", "getFormattedMessage", "visitedMessages", "resetVisitedMessages", "Set", "warnWhen", "condition", "has", "add", "console", "warn", "errorWhen", "error", "validateTargets", "targets", "didPassFalsyValue", "didPassPlainObject", "prototype", "String", "pluginProps", "animateFill", "followCursor", "inlinePositioning", "sticky", "renderProps", "allowHTML", "animation", "arrow", "content", "inertia", "maxWidth", "role", "theme", "zIndex", "defaultProps", "appendTo", "aria", "expanded", "delay", "duration", "getReferenceClientRect", "hideOnClick", "ignoreAttributes", "interactive", "interactiveDebounce", "moveTransition", "onAfterUpdate", "onBeforeUpdate", "onCreate", "onDestroy", "onHidden", "onHide", "onMount", "onShow", "onShown", "onTrigger", "onUntrigger", "onClickOutside", "plugins", "popperOptions", "render", "showOnCreate", "touch", "trigger", "triggerTarget", "defaultKeys", "setDefaultProps", "partialProps", "validateProps", "getExtendedPassedProps", "passedProps", "plugin", "name", "getDataAttributeProps", "propKeys", "valueAsString", "getAttribute", "JSON", "parse", "e", "evaluateProps", "out", "prop", "nonPluginProps", "didPassUnknownProp", "length", "innerHTML", "dangerouslySetInnerHTML", "html", "createArrowElement", "className", "appendChild", "setContent", "textContent", "getChildren", "popper", "firstElementChild", "boxChildren", "children", "find", "node", "classList", "contains", "backdrop", "onUpdate", "prevProps", "nextProps", "removeAttribute", "removeChild", "$$tippy", "idCounter", "mouseMoveListeners", "mountedInstances", "createTippy", "showTimeout", "hideTimeout", "scheduleHideAnimationFrame", "isVisibleFromClick", "didHideDueToDocumentMouseDown", "didTouchMove", "ignoreOnFirstUpdate", "lastTriggerEvent", "currentTransitionEndListener", "onFirstUpdate", "listeners", "debouncedOnMouseMove", "onMouseMove", "currentTarget", "id", "popperInstance", "isEnabled", "isDestroyed", "isMounted", "isShown", "clearDelayTimeouts", "setProps", "show", "hide", "hideWithInteractivity", "enable", "disable", "unmount", "destroy", "pluginsHooks", "map", "hasAriaExpanded", "hasAttribute", "addListeners", "handleAriaExpandedAttribute", "handleStyles", "invokeHook", "scheduleShow", "getDocument", "getNormalizedTouchSettings", "getIsCustomTouchBehavior", "getIsDefaultRenderFn", "getCurrentTarget", "parent", "parentNode", "getDefaultTemplateChildren", "getDelay", "isShow", "pointerEvents", "hook", "shouldInvokePropsHook", "pluginHooks", "handleAriaContentAttribute", "attr", "nodes", "currentValue", "nextValue", "cleanupInteractiveMouseListeners", "onDocumentPress", "target", "removeDocumentPress", "onTouchMove", "onTouchStart", "addDocumentPress", "doc", "onTransitionedOut", "callback", "onTransitionEnd", "onTransitionedIn", "on", "eventType", "handler", "options", "onMouseLeave", "onBlurOrFocusOut", "removeListeners", "shouldScheduleClickHide", "isEventListenerStopped", "wasFocused", "scheduleHide", "isCursorOverReferenceOrPopper", "getNestedPopperTree", "getBoundingClientRect", "shouldBail", "relatedTarget", "createPopperInstance", "destroyPopperInstance", "computedReference", "contextElement", "tippyModifier", "enabled", "phase", "requires", "attributes", "modifiers", "padding", "adaptive", "createPopper", "mount", "nextElementSibling", "touchValue", "touchDelay", "requestAnimationFrame", "cancelAnimationFrame", "nestedPopper", "forceUpdate", "isAlreadyVisible", "isDisabled", "isTouchAndTouchDisabled", "visibility", "transition", "offsetHeight", "isAlreadyHidden", "i", "tippy", "optionalProps", "elements", "isSingleContentElement", "isMoreThanOneReferenceElement", "instances", "applyStylesModifier", "applyStyles", "effect", "_ref", "state", "initialStyles", "popper", "position", "options", "strategy", "left", "top", "margin", "arrow", "reference", "Object", "assign", "elements", "style", "styles", "tippy", "setDefaultProps", "render", "isBrowser", "window", "document", "preserveRef", "ref", "node", "hasOwnProperty", "call", "current", "ssrSafeCreateDiv", "createElement", "toDataAttributes", "attrs", "dataAttrs", "placement", "referenceHidden", "escaped", "deepEqual", "x", "y", "Object", "keys", "length", "prop", "uniqueByShape", "arr", "output", "forEach", "item", "find", "outputItem", "push", "deepPreserveProps", "instanceProps", "componentProps", "popperOptions", "modifiers", "useIsomorphicLayoutEffect", "useLayoutEffect", "useEffect", "useMutableBox", "initialValue", "useRef", "updateClassName", "box", "action", "classNames", "split", "name", "classList", "classNamePlugin", "defaultValue", "fn", "instance", "popper", "firstElementChild", "isDefaultRenderFn", "props", "render", "$$tippy", "add", "className", "process", "console", "warn", "join", "remove", "onCreate", "onBeforeUpdate", "onAfterUpdate", "TippyGenerator", "tippy", "Tippy", "_ref", "children", "content", "visible", "singleton", "reference", "disabled", "ignoreAttributes", "__source", "__self", "restOfNativeProps", "_objectWithoutPropertiesLoose", "isControlledMode", "undefined", "isSingletonMode", "useState", "mounted", "setMounted", "setAttrs", "singletonContent", "setSingletonContent", "mutableBox", "container", "renders", "nativeStateProp", "trigger", "hideOnClick", "computedProps", "plugins", "data", "onTrigger", "event", "_ref2", "currentTarget", "state", "$$activeSingletonInstance", "deps", "concat", "type", "element", "disable", "show", "hook", "destroy", "cleanup", "setProps", "popperInstance", "forceUpdate", "enable", "hide", "filter", "enabled", "phase", "requires", "hideData", "modifiersData", "isReferenceHidden", "hasPopperEscaped", "attributes", "React", "cloneElement", "createPortal", "Tippy", "defaultProps", "forwardRef", "TippyWrapper", "_ref", "ref", "children", "props", "_objectWithoutPropertiesLoose", "React", "cloneElement", "node", "preserveRef", "forwardRef", "TippyGenerator", "tippy", "React", "React", "close", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "icon", "Icon_default", "icon", "disabled", "dataAttributes", "React", "Icon_default", "Button_default", "React", "IS_PRODUCTION", "Button_default", "SiteHeader_default", "import_react", "import_react", "handlers", "e", "disabled", "e", "icon", "React", "Icon_default", "Button_default", "index", "Menu_default", "React", "Link_default", "Menu_default", "import_react", "import_react", "text", "React", "SignInSSO_default", "session", "React", "Link_default", "SignInSSO_default", "Menu_default", "React", "useEffect", "React", "Button_default", "initialState", "combined", "localState", "allActions", "module", "import_lodash", "update", "a", "b", "initialState", "r", "update", "combined", "localState", "defaultSelectors", "createSelector2", "rooms", "module", "initialState", "update", "combined", "localState", "wallPreview", "module", "createSelector2", "canvas", "width", "combined", "localState", "defaultSelectors", "createSelector2", "crops", "multiphotos", "n", "w", "h", "b", "import_lodash", "crops", "error", "module", "session", "React", "SiteHeader_default", "WOSSiteHeader_default", "import_react", "import_accounting", "import_react", "style", "React", "Spinner_default", "canvas", "createSelector2", "options", "import_react", "import_react", "import_accounting", "import_react", "import_lodash", "React", "disabled", "disabled", "debounceTime", "onChange", "e", "React", "Input_default", "React", "Input_default", "Button_default", "CustomSizePicker_default", "update", "p", "React", "CustomSizePicker_default", "import_react", "React", "import_react", "import_accounting", "React", "e", "catalogs", "products", "p", "e", "params", "React", "Icon_default", "Spinner_default", "Button_default", "PriceTool_default", "import_react", "import_react_dom", "import_react", "React", "useEffect", "useRef", "useState", "React", "Button_default", "Modal_default", "alertMessage", "React", "Button_default", "Modal_default", "Alert_default", "import_react", "import_lodash", "React", "Button_default", "Pagination_default", "import_react", "import_react", "import_tinycolor2", "import_react", "import_react", "tinycolor", "React", "RgbDisplay_default", "index", "React", "Spinner_default", "i", "RgbDisplay_default", "import_react", "onChange", "React", "import_react", "React", "index", "tinycolor", "React", "p", "Button_default", "Alert_default", "cartProducts", "React", "i", "CartProductList_default", "import_react", "React", "Button_default", "Link_default", "Spinner_default", "CartHeader_default", "import_react", "import_react", "React", "BillingSummary_default", "import_react", "icon", "React", "FlashMessage_default", "React", "BillingSummary_default", "FlashMessage_default", "Button_default", "CartSidebar_default", "import_react", "import_react", "import_lodash", "e", "React", "Button_default", "import_react", "React", "Button_default", "Modal_default", "Alert_default", "e", "import_react", "import_react", "React", "Alert_default", "import_react", "import_react", "text", "disabled", "d", "t", "upToLeft", "e", "l", "React", "Button_default", "Spinner_default", "Menu_default", "NavigationTile_default", "React", "NavigationTile_default", "e", "a", "b", "React", "project", "Modal_default", "Button_default", "getAll", "create", "update", "destroy", "getAll", "update", "restore", "destroy", "initialState", "slice", "combined", "localState", "allActions", "module", "p", "cart_default", "React", "Menu_default", "Alert_default", "React", "useState", "useMemo", "useEffect", "React", "e", "Button_default", "ImageGallery_default", "import_react", "onChange", "React", "import_react", "React", "Link_default", "import_react", "import_lodash", "createSelector2", "import_react", "import_react", "e", "React", "React", "React", "cartProducts", "cart_default", "params", "p", "index", "React", "Spinner_default", "Button_default", "CartHeader_default", "Pagination_default", "CartProductList_default", "CartSidebar_default", "ImageGallery_default", "Alert_default", "Modal_default", "CartPage_default", "import_react", "import_react", "import_react", "React", "e", "Button_default", "import_react", "import_react", "import_react", "React", "Button_default", "SubcatalogButton_default", "s", "React", "e", "Button_default", "SubcatalogButton_default", "Modal_default", "Alert_default", "import_react", "React", "Button_default", "Link_default", "TooltipModalContent_default", "React", "Modal_default", "TooltipModalContent_default", "index", "import_react", "import_react", "import_react", "filter", "w", "c", "styles", "e", "i", "React", "Button_default", "import_react", "filter", "e", "options", "React", "React", "Filter_default", "import_react", "React", "CustomSizePicker_default", "import_react", "import_react", "import_accounting", "React", "ProductButton_default", "React", "ProductButton_default", "products", "React", "Modal_default", "TooltipModalContent_default", "filter", "Button_default", "Filter_default", "import_react", "import_accounting", "import_react", "import_react", "React", "OptionButton_default", "disabled", "e", "delay", "React", "OptionButton_default", "options", "React", "Modal_default", "TooltipModalContent_default", "filter", "Filter_default", "import_react", "React", "Link_default", "import_react", "React", "MobileNavigation_default", "import_react", "import_lodash", "import_react", "createSelector2", "crops", "n", "multiphotos", "w", "h", "b", "React", "Button_default", "Spinner_default", "import_react", "React", "Button_default", "Spinner_default", "import_react", "React", "Button_default", "Spinner_default", "Alert_default", "cart_default", "c", "React", "e", "Button_default", "React", "MobileNavigation_default", "Spinner_default", "Button_default", "ProductSidebar_default", "import_react", "o", "initialState", "update", "combined", "localState", "defaultSelectors", "tn", "module", "import_react", "import_react", "n", "activeTextNodeElement", "React", "e", "l", "t", "i", "import_react", "import_lodash", "e", "React", "import_react", "i", "React", "e", "import_react", "import_tinycolor2", "useEventCallback", "handler", "callbackRef", "useRef", "fn", "value", "current", "clamp", "number", "min", "max", "isTouch", "event", "getParentWindow", "node", "ownerDocument", "defaultView", "self", "getRelativePosition", "touchId", "rect", "getBoundingClientRect", "pointer", "touches", "i", "length", "identifier", "left", "pageX", "pageXOffset", "width", "top", "pageY", "pageYOffset", "height", "preventDefaultMove", "preventDefault", "Interactive", "React", "memo", "o", "onMove", "onKey", "rest", "container", "onMoveCallback", "onKeyCallback", "hasTouch", "x", "useMemo", "handleMove", "buttons", "toggleDocumentEvents", "handleMoveEnd", "state", "touch", "parentWindow", "toggleEvent", "addEventListener", "removeEventListener", "e", "nativeEvent", "el", "changedTouches", "focus", "keyCode", "which", "handleMoveStart", "handleKeyDown", "useEffect", "onTouchStart", "onMouseDown", "className", "ref", "onKeyDown", "tabIndex", "role", "formatClassName", "names", "filter", "Boolean", "join", "Pointer", "r", "color", "nodeClassName", "style", "backgroundColor", "round", "digits", "base", "Math", "pow", "angleUnits", "grad", "turn", "rad", "PI", "current", "hsvaToHsla", "e", "s", "v", "a", "hh", "h", "round", "l", "hsvaToHslString", "hsva", "r", "current", "hsvaToRgba", "e", "h", "s", "v", "a", "hh", "Math", "floor", "b", "c", "d", "module", "r", "round", "g", "current", "rgbaStringToHsva", "rgbaString", "match", "exec", "rgbaToHsva", "r", "Number", "g", "b", "a", "h", "s", "v", "rgbStringToHsva", "current", "rgbaToHsva", "e", "r", "g", "b", "a", "max", "Math", "delta", "min", "hh", "h", "round", "s", "v", "current", "Hue", "React", "memo", "r", "hue", "onChange", "nodeClassName", "formatClassName", "className", "Interactive", "onMove", "interaction", "h", "left", "onKey", "offset", "clamp", "aria-label", "aria-valuenow", "round", "aria-valuemax", "aria-valuemin", "Pointer", "color", "hsvaToHslString", "s", "v", "a", "Saturation", "hsva", "containerStyle", "backgroundColor", "style", "top", "aria-valuetext", "equalColorObjects", "first", "second", "prop", "equalColorString", "replace", "second", "useColorManipulation", "colorModel", "color", "onChange", "onChangeCallback", "useEventCallback", "useState", "toHsva", "hsva", "updateHsva", "cache", "useRef", "useEffect", "equal", "current", "newHsva", "newColor", "equalColorObjects", "fromHsva", "handleChange", "useCallback", "params", "Object", "assign", "nonce", "useIsomorphicLayoutEffect", "window", "useLayoutEffect", "getNonce", "__webpack_nonce__", "handleChange", "styleElementMap", "Map", "useStyleSheet", "nodeRef", "useIsomorphicLayoutEffect", "parentDocument", "current", "ownerDocument", "document", "has", "styleElement", "createElement", "innerHTML", "set", "nonce", "getNonce", "setAttribute", "head", "appendChild", "ColorPicker", "t", "className", "colorModel", "color", "defaultColor", "onChange", "rest", "useRef", "useColorManipulation", "hsva", "updateHsva", "nodeClassName", "formatClassName", "React", "ref", "Saturation", "Hue", "hue", "h", "handleChange", "colorModel", "defaultColor", "toHsva", "rgbStringToHsva", "fromHsva", "hsva", "hsvaToRgba", "r", "g", "b", "equal", "equalColorString", "RgbStringColorPicker", "props", "React", "ColorPicker", "c", "tinycolor", "React", "e", "import_react", "React", "import_react", "alignItems", "React", "React", "v", "e", "React", "import_react", "import_react", "min", "max", "onChange", "React", "e", "Slider_default", "import_lodash", "headers", "all", "create", "update", "destroy", "getAll", "create", "update", "destroy", "initialState", "update", "arrangements", "combined", "localState", "createSelector2", "canvas", "x", "y", "module", "x", "y", "canvas", "index", "crops", "filter", "f", "promise", "width", "height", "config", "update", "import_react", "loaded", "import_react", "import_react", "import_lodash", "w", "h", "x", "y", "import_react", "styles", "onLoad", "e", "React", "Spinner_default", "import_react", "import_lodash", "b", "x", "y", "w", "h", "styles", "e", "React", "Button_default", "Modal_default", "import_react", "React", "styles", "onLoad", "theme", "x", "y", "w", "h", "styles", "React", "import_react", "import_react", "styles", "w", "l", "i", "offset", "y", "React", "x", "y", "w", "h", "styles", "React", "Node", "React", "import_react", "import_lodash", "s", "a", "b", "x", "y", "wrap", "e", "React", "x", "y", "e", "React", "Spinner_default", "top", "left", "e", "canvas", "React", "stage", "Button_default", "Slider_default", "Stage_default", "import_react", "import_react", "React", "Button_default", "Slider_default", "import_react", "import_tinycolor2", "tinycolor", "React", "e", "Button_default", "RgbDisplay_default", "React", "Button_default", "Toolbar_default", "import_react", "import_lodash", "import_lodash", "o", "u", "x", "y", "import_react", "React", "import_react", "f", "metalabels", "p", "React", "e", "import_react", "import_react", "import_lodash", "filter", "metalabels", "React", "Button_default", "e", "React", "e", "Button_default", "filter", "sort", "options", "Slider_default", "import_react", "import_react", "v", "i", "n", "o", "e", "React", "OptionButton", "t", "import_react", "React", "i", "text", "React", "Button_default", "Modal_default", "import_react", "IS_PRODUCTION", "c", "format", "f", "options", "a", "r", "p", "React", "Button_default", "products", "init", "f", "s", "p", "filter", "a", "t", "v", "b", "i", "e", "n", "g", "o", "products", "top", "d", "c", "m", "React", "Button_default", "Shuffler_default", "import_react", "import_react", "import_lodash", "import_react", "import_react", "React", "Spinner_default", "React", "Button_default", "item", "React", "Button_default", "e", "SpecialContentSidebar_default", "import_react", "import_react", "installedModules", "__webpack_require__", "moduleId", "exports", "module", "i", "l", "modules", "call", "m", "c", "d", "name", "getter", "o", "Object", "defineProperty", "enumerable", "get", "r", "Symbol", "toStringTag", "value", "t", "mode", "__esModule", "ns", "create", "key", "bind", "n", "object", "property", "prototype", "hasOwnProperty", "p", "s", "e", "a", "u", "extendStatics", "b", "setPrototypeOf", "__proto__", "Array", "__extends", "__", "this", "constructor", "__assign", "assign", "arguments", "length", "apply", "__awaiter", "thisArg", "_arguments", "P", "generator", "Promise", "resolve", "reject", "fulfilled", "step", "next", "rejected", "result", "done", "then", "__generator", "body", "f", "y", "g", "_", "label", "sent", "trys", "ops", "verb", "iterator", "v", "op", "TypeError", "pop", "push", "__values", "__read", "ar", "error", "__spread", "concat", "last", "ExtensionsMap", "mobileRegexp", "md5", "data", "btoa", "hash", "b64", "safeUrl", "replace", "getVersion", "isMobile", "navigator", "userAgent", "test", "isFacebook", "resolveCdnUrl", "session", "handle", "cdnURL", "urls", "cdnUrl", "indexOf", "apikey", "Error", "resolveHost", "cname", "hosts", "keys", "forEach", "obj", "newObj", "k", "uniqueTime", "time", "Date", "now", "uniqueId", "len", "join", "Math", "random", "toString", "file", "type", "mime", "w", "isutf8", "console", "warn", "ext", "split", "toLocaleLowerCase", "mapLen", "sanitizeName", "options", "replacement", "exclude", "fileParts", "map", "char", "j", "toFilter", "requiredFields", "filter", "reduce", "cleanUpCallbacks", "FsRequestErrorCode", "message", "config", "response", "code", "target", "log", "formatArgs", "args", "useColors", "namespace", "humanize", "diff", "color", "splice", "index", "lastC", "match", "save", "namespaces", "storage", "setItem", "removeItem", "load", "getItem", "process", "env", "DEBUG", "window", "__nwjs", "toLowerCase", "document", "documentElement", "style", "WebkitAppearance", "firebug", "exception", "table", "parseInt", "RegExp", "$1", "localStorage", "localstorage", "colors", "require", "formatters", "JSON", "stringify", "isError", "wat", "isInstanceOf", "isString", "isPrimitive", "isPlainObject", "isEvent", "Event", "isElement", "Element", "isRegExp", "isThenable", "Boolean", "isSyntheticEvent", "base", "_e", "isBuffer", "isStream", "isArrayBuffer", "val", "isObject", "isFile", "isBlob", "isURLSearchParams", "URLSearchParams", "isFormData", "FormData", "trim", "str", "FsHttpMethod", "nameStartChar", "nameRegexp", "regexName", "isExist", "isEmptyObject", "merge", "arrayMode", "getValue", "buildOptions", "defaultOptions", "props", "newOptions", "isName", "string", "exec", "getAllMatches", "regex", "matches", "allmatches", "has", "prefix", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "_events", "_eventsCount", "clearEvent", "EventEmitter", "eventNames", "events", "names", "slice", "getOwnPropertySymbols", "listeners", "handlers", "ee", "listenerCount", "emit", "a1", "a2", "a3", "a4", "a5", "removeListener", "undefined", "on", "removeAllListeners", "off", "prefixed", "fallbackGlobalObject", "getGlobalObject", "global", "self", "uuid4", "crypto", "msCrypto", "getRandomValues", "arr", "Uint16Array", "pad", "num", "consoleSandbox", "callback", "originalConsole", "wrappedLevels", "level", "__sentry_original__", "truncate", "max", "substr", "snipLine", "line", "colno", "newLine", "ll", "start", "end", "min", "ignoreDuplicates", "headers", "parsed", "set", "setIFExists", "normalizedName", "normalizeName", "parse", "dnt", "etag", "tcn", "te", "text", "charAt", "toUpperCase", "debug", "filestackHeaders", "floor", "h", "contentType", "bufferToString", "parser", "ignoreAttributes", "trimValues", "buffer", "bufView", "addition", "pow", "String", "fromCharCode", "subarray", "combineURL", "url", "params", "serialized", "urlfy", "hashIndex", "encodeURIComponent", "uri", "ValidationError", "instance", "schema", "propertyPath", "argument", "id", "stack", "ValidatorResult", "ctx", "errors", "throwError", "disableFormat", "stringizer", "addError", "detail", "err", "importErrors", "res", "validatorType", "SchemaError", "msg", "captureStackTrace", "SchemaContext", "schemas", "makeChild", "propertyName", "makeSuffix", "FORMAT_REGEXPS", "input", "parseFloat", "isNaN", "regexp", "pattern", "ipv4", "isFormat", "format", "validator", "customFormats", "deepMerger", "dst", "deepMerge", "copyist", "src", "copyistWithDeepMerge", "array", "isArray", "pathEncoder", "deepCompareStrict", "every", "aKeys", "bKeys", "objectGetPath", "parts", "shift", "decodeURIComponent", "encodePath", "getDecimalPlaces", "number", "decimalPlaces", "Number", "decimalParts", "isNodeEnv", "dynamicRequire", "mod", "request", "Function", "util", "xmlNode", "TagType", "regx", "attributeNamePrefix", "attrNodeName", "textNodeName", "ignoreNameSpace", "allowBooleanAttributes", "parseNodeValue", "parseAttributeValue", "cdataTagName", "cdataPositionChar", "tagValueProcessor", "tagName", "attrValueProcessor", "attrName", "stopNodes", "processTagValue", "parsedTags", "parentTagName", "parseValue", "parseTrueNumberOnly", "checkForTagType", "resolveNameSpace", "tagname", "tags", "shouldParse", "attrsRegx", "buildAttributesMap", "attrStr", "attrs", "attrCollection", "getTraversalObj", "xmlData", "xmlObj", "currentNode", "tagsRegx", "tag", "nextTag", "tagType", "parent", "includes", "child", "attrsMap", "startIndex", "childNode", "addChild", "shouldRetry", "status", "NETWORK", "SERVER", "TIMEOUT", "ABORTED", "toBytes", "charCodeAt", "xpiZipFilename", "oxmlContentTypes", "oxmlRels", "readUInt64LE", "buf", "offset", "mul", "fileType", "Uint8Array", "ArrayBuffer", "Buffer", "check", "header", "mask", "checkString", "findNextZipHeaderIndex", "startAt", "findIndex", "el", "zipHeaderIndex", "oxmlFound", "sliced", "idPos", "docTypePos", "findDocType", "objectSize", "default", "stream", "readableStream", "eval", "pass", "PassThrough", "chunk", "read", "minimumBytes", "unshift", "pipeline", "pipe", "Validator", "SchemaScanResult", "scan", "validate", "punycode", "Url", "protocol", "slashes", "auth", "host", "port", "hostname", "search", "query", "pathname", "path", "href", "urlParse", "source", "relative", "resolveObject", "protocolPattern", "portPattern", "simplePathPattern", "unwise", "autoEscape", "nonHostChars", "hostEndingChars", "hostnamePartPattern", "hostnamePartStart", "unsafeProtocol", "hostlessProtocol", "slashedProtocol", "querystring", "parseQueryString", "slashesDenoteHost", "queryIndex", "splitter", "uSplit", "rest", "simplePath", "proto", "lowerProto", "atSign", "hostEnd", "hec", "lastIndexOf", "parseHost", "ipv6Hostname", "hostparts", "part", "newpart", "validParts", "notHost", "bit", "toASCII", "ae", "esc", "escape", "qm", "rel", "tkeys", "tk", "tkey", "rkeys", "rk", "rkey", "relPath", "isSourceAbs", "isRelAbs", "mustEndAbs", "removeAllDots", "srcPath", "psychotic", "isNullOrUndefined", "authInHost", "isNull", "hasTrailingSlash", "up", "isAbsolute", "urilib", "helpers", "found", "ref", "scanSchema", "baseuri", "$ref", "resolvedUri", "ourBase", "substring", "scanArray", "items", "extends", "additionalItems", "scanObject", "properties", "additionalProperties", "definitions", "patternProperties", "dependencies", "disallow", "allOf", "anyOf", "oneOf", "not", "nodeToJson", "xmlToNodeobj", "x2xmlnode", "validationOption", "convertToJson", "convertTonimn", "convert2nimn", "convertToJsonString", "j2xParser", "parseToNimn", "htmlTreeAsString", "elem", "currentElem", "out", "height", "sepLength", "nextStr", "_htmlElementAsString", "parentNode", "reverse", "_oO", "className", "classes", "attr", "allowedAttrs", "getAttribute", "webpackPolyfill", "deprecate", "paths", "children", "__webpack_amd_options__", "cachedSetTimeout", "cachedClearTimeout", "defaultSetTimout", "defaultClearTimeout", "runTimeout", "fun", "setTimeout", "clearTimeout", "currentQueue", "queue", "draining", "queueIndex", "cleanUpNextTick", "drainQueue", "timeout", "run", "marker", "Item", "noop", "nextTick", "title", "browser", "argv", "version", "versions", "prependListener", "prependOnceListener", "binding", "cwd", "chdir", "dir", "umask", "factory", "hex_chr", "md5cycle", "x", "md5blk", "md5blks", "md5blk_array", "md51", "tail", "tmp", "lo", "hi", "state", "rhex", "hex", "toUtf8", "unescape", "hexToBinaryString", "bytes", "SparkMD5", "reset", "clamp", "from", "to", "targetArray", "sourceArray", "byteLength", "begin", "append", "appendBinary", "contents", "_buff", "_length", "_hash", "raw", "ret", "buff", "_finish", "getState", "setState", "destroy", "hashBinary", "content", "first", "second", "returnUInt8Array", "define", "PriorityQueue", "_queue", "element", "priority", "size", "comp", "count", "it", "PQueue", "carryoverConcurrencyCount", "intervalCap", "Infinity", "interval", "concurrency", "autoStart", "queueClass", "isFinite", "_carryoverConcurrencyCount", "_isIntervalIgnored", "_intervalCount", "_intervalCap", "_interval", "_intervalId", "_intervalEnd", "_timeoutId", "_queueClass", "_pendingCount", "_concurrency", "_isPaused", "_resolveEmpty", "_resolveIdle", "_tryToStartAnother", "_onInterval", "_initializeIntervalIfNeeded", "delay", "_onResumeInterval", "clearInterval", "_resolvePromises", "canInitializeInterval", "_intervalPaused", "_doesIntervalAllowAnother", "_doesConcurrentAllowAnother", "dequeue", "setInterval", "enqueue", "_next", "fns", "all", "add", "existingResolve", "argsTag", "funcTag", "genTag", "mapTag", "setTag", "reFlags", "reIsHostCtor", "reIsUint", "cloneableTags", "freeGlobal", "freeSelf", "root", "freeExports", "nodeType", "freeModule", "moduleExports", "addMapEntry", "pair", "addSetEntry", "arrayReduce", "iteratee", "accumulator", "initAccum", "isHostObject", "mapToArray", "overArg", "func", "transform", "arg", "setToArray", "uid", "arrayProto", "funcProto", "objectProto", "coreJsData", "maskSrcKey", "IE_PROTO", "funcToString", "objectToString", "reIsNative", "getPrototype", "getPrototypeOf", "objectCreate", "propertyIsEnumerable", "nativeGetSymbols", "nativeIsBuffer", "nativeKeys", "DataView", "getNative", "Map", "Set", "WeakMap", "nativeCreate", "dataViewCtorString", "toSource", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "symbolProto", "symbolValueOf", "valueOf", "Hash", "entries", "clear", "entry", "ListCache", "MapCache", "Stack", "__data__", "arrayLikeKeys", "inherited", "isArrayLike", "skipIndexes", "isIndex", "assignValue", "objValue", "eq", "assocIndexOf", "baseClone", "isDeep", "isFull", "customizer", "isArr", "getTag", "isFunc", "copy", "isPrototype", "copyObject", "getSymbols", "cloneFunc", "Ctor", "cloneArrayBuffer", "dataView", "byteOffset", "typedArray", "lastIndex", "symbol", "stacked", "keysFunc", "symbolsFunc", "values", "subValue", "baseIsNative", "isFunction", "arrayBuffer", "newValue", "getMapData", "cache", "pairs", "LARGE_ARRAY_SIZE", "other", "ctorString", "getFunctionName", "_hasWeakSet", "WeakSet", "_inner", "memoize", "unmemoize", "delete", "attribute", "unresolvedRefs", "types", "attributes", "validators", "shouldResolve", "addSchema", "ourUri", "addSubSchemaArray", "addSubSchema", "addSubSchemaObject", "setSchemas", "getSchema", "urn", "sch", "validateSchema", "switchSchema", "schemaobj", "schemaTraverser", "superResolve", "resolved", "subctx", "subschema", "skipAttributes", "ignoreProperties", "validatorErr", "allowUnknownAttributes", "rewrite", "fragment", "testType", "integer", "boolean", "date", "any", "maxInt", "regexPunycode", "regexNonASCII", "regexSeparators", "stringFromCharCode", "RangeError", "mapDomain", "ucs2decode", "extra", "output", "counter", "ucs2encode", "digitToBasic", "digit", "flag", "adapt", "delta", "numPoints", "firstTime", "baseMinusTMin", "decode", "basic", "oldi", "baseMinusT", "codePoint", "inputLength", "bias", "encode", "handledCPCount", "basicLength", "q", "currentValue", "handledCPCountPlusOne", "qMinusT", "prop", "qs", "sep", "maxKeys", "kstr", "vstr", "idx", "xs", "stringifyPrimitive", "objectKeys", "ks", "testSchemaNoThrow", "valid", "testAdditionalProperty", "preValidateProperty", "some", "list", "inner", "nestedErrors", "minProperties", "maxProperties", "minimum", "exclusiveMinimum", "maximum", "exclusiveMaximum", "validateMultipleOfOrDivisbleBy", "validationType", "errorMessage", "validationArgument", "instanceDecimals", "divisorDecimals", "maxDecimals", "multiplier", "round", "testArrays", "multipleOf", "divisibleBy", "required", "minLength", "hsp", "maxLength", "minItems", "maxItems", "uniqueItems", "dep", "childContext", "notTypes", "schemaId", "selectColor", "createDebug", "abs", "prevTime", "enabled", "curr", "ms", "prev", "coerce", "formatter", "logFn", "extend", "init", "instances", "delimiter", "newDebug", "toNamespace", "disable", "skips", "enable", "plural", "msAbs", "isPlural", "long", "XMLHttpRequest", "blobResponse", "responseType", "username", "password", "Authorization", "open", "method", "cancelListener", "cancelToken", "reason", "abort", "onreadystatechange", "readyState", "responseURL", "responseHeaders", "getAllResponseHeaders", "responseData", "statusText", "REQUEST", "onabort", "onerror", "ontimeout", "setRequestHeader", "onProgress", "POST", "PUT", "upload", "addEventListener", "send", "node", "jObj", "readPI", "getErrorObject", "getLineNumberForPosition", "readCommentAndCDATA", "angleBracketsCount", "tagFound", "reachedRoot", "closingTag", "readAttributeStr", "isValid", "validateAttributeString", "tagClosed", "otg", "afterAmp", "validateAmpersand", "startChar", "validAttrStrRegxp", "attrNames", "getPositionFromMatch", "validateAttrName", "re", "lineNumber", "chars", "nilChar", "missingChar", "nilPremitive", "missingPremitive", "emptyChar", "emptyValue", "boundryChar", "objStart", "arrStart", "arrayEnd", "charsArr", "e_schema", "hasValidData", "itemSchema", "arr_len", "arr_i", "processValue", "isAppChar", "ch", "x2j", "_cToJsonStr", "indentBy", "supressEmptyNode", "Parser", "isAttribute", "attrPrefixLen", "isCDATA", "replaceCDATAstr", "replaceCDATAarr", "indentate", "tagEndChar", "buildTextNode", "buildEmptyTextNode", "buildObjNode", "buildEmptyObjNode", "buildTextValNode", "buildObjectNode", "cdata", "repeat", "startsWith", "j2x", "arrLen", "item", "Ks", "L", "originalModule", "FILESTACK_MODULES", "globalHolder", "filestackInternals", "holder", "detachEvent", "removeEventListener", "loadModules", "modulesList", "loadModule", "toReturn", "moduleDefinition", "promise", "readyStateChange", "currentTarget", "srcElement", "script", "createElement", "attachEvent", "setAttribute", "appendChild", "registerModule", "metadata", "loadCss", "querySelector", "head", "getElementsByTagName", "link", "loaded", "getSecurity", "policyOptions", "appSecret", "validateWebhookSignature", "secret", "rawBody", "toCompare", "PREFIX", "_enabled", "__SENTRY__", "States", "logger", "executor", "_state", "PENDING", "_handlers", "_resolve", "_setResult", "RESOLVED", "_reject", "REJECTED", "is", "_value", "_executeHandlers", "_attachHandler", "handler", "cachedHandlers", "onfulfilled", "onrejected", "SyncPromise", "collection", "resolvedCollection", "catch", "finally", "onfinally", "isRejected", "_notifyingListeners", "_scopeListeners", "_eventProcessors", "_breadcrumbs", "_user", "_tags", "_extra", "_contexts", "clone", "scope", "newScope", "Scope", "_level", "_span", "_session", "_transactionName", "_fingerprint", "addScopeListener", "addEventProcessor", "setUser", "user", "update", "_notifyScopeListeners", "getUser", "setTags", "setExtras", "extras", "setExtra", "setFingerprint", "fingerprint", "setLevel", "setTransactionName", "setTransaction", "setContext", "setSpan", "span", "getSpan", "getTransaction", "transaction", "spanRecorder", "spans", "setSession", "getSession", "captureContext", "updatedScope", "contexts", "addBreadcrumb", "breadcrumb", "maxBreadcrumbs", "mergedBreadcrumb", "timestamp", "clearBreadcrumbs", "applyToEvent", "hint", "trace", "getTraceContext", "transactionName", "_applyFingerprint", "breadcrumbs", "_notifyEventProcessors", "getGlobalEventProcessors", "processors", "processor", "final", "globalEventProcessors", "S", "sid", "started", "duration", "SessionStatus", "Ok", "ip_address", "ipAddress", "did", "email", "release", "environment", "close", "Exited", "toJSON", "O", "toISOString", "user_agent", "E", "client", "_version", "_stack", "getStackTop", "bindClient", "isOlderThan", "setupIntegrations", "pushScope", "getScope", "getStack", "getClient", "popScope", "withScope", "captureException", "eventId", "_lastEventId", "finalHint", "syntheticException", "originalException", "_invokeClient", "event_id", "captureMessage", "captureEvent", "lastEventId", "beforeBreadcrumb", "finalBreadcrumb", "configureScope", "oldHub", "makeMain", "getIntegration", "integration", "startSpan", "_callExtensionMethod", "startTransaction", "customSamplingContext", "traceHeaders", "captureSession", "endSession", "_sendSessionUpdate", "startSession", "currentSession", "carrier", "getMainCarrier", "sentry", "extensions", "hub", "registry", "getHubFromCarrier", "setHubOnCarrier", "getCurrentHub", "hasHubOnCarrier", "activeDomain", "domain", "active", "registryHubTopStack", "_Oo", "callOnHub", "FilestackErrorType", "$", "processUrl", "fileApiUrl", "uploadApiUrl", "cloudApiUrl", "pickerUrl", "details", "FilestackError", "TransformSchema", "description", "flip", "auto_image", "no_metadata", "compress", "flop", "enhance", "preset", "enum", "redeye", "monochrome", "negative", "sfw", "imagesize", "smart_crop", "width", "animate", "loop", "fit", "background", "align", "resize", "crop", "dim", "rotate", "deg", "exif", "detect_faces", "maxsize", "minsize", "export", "crop_faces", "faces", "pixelate_faces", "amount", "blur", "blur_faces", "rounded_corners", "radius", "vignette", "blurmode", "polaroid", "torn_edges", "spread", "shadow", "opacity", "vector", "circle", "border", "sharpen", "blackwhite", "threshold", "sepia", "tone", "pixelate", "oil_paint", "modulate", "brightness", "saturation", "hue", "ascii", "foreground", "colored", "collage", "files", "margin", "autorotate", "urlscreenshot", "agent", "orientation", "device", "upscale", "noise", "page", "density", "quality", "secure", "docinfo", "strip", "colorspace", "pageformat", "pageorientation", "pjpg", "expiry", "video_convert", "force", "extname", "aspect_mode", "audio_sample_rate", "two_pass", "video_bitrate", "fps", "keyframe_interval", "audio_bitrate", "audio_channels", "clip_length", "clip_offset", "watermark_url", "watermark_top", "watermark_right", "watermark_bottom", "watermark_left", "frame_count", "filename", "location", "container", "access", "store", "region", "base64decode", "workflows", "watermark", "position", "partial_blur", "objects", "partial_pixelate", "security", "policy", "signature", "pdfinfo", "colorinfo", "pdfconvert", "pages", "fallback", "zip", "minify_css", "gzip", "minify_js", "use_babel_polyfill", "keep_fn_name", "keep_class_name", "mangle", "merge_vars", "remove_console", "remove_undefined", "targets", "D", "DefinitionsSchema", "workflowsDef", "securityCallDef", "regionsDef", "locationsDef", "colorDef", "pageFormatDef", "pageRangeDef", "facesDef", "objectsDef", "positionDef", "HTMLContainer", "V", "Align", "FitOptions", "BlurMode", "ShapeType", "NoiseType", "StyleType", "ColorspaceType", "CropfacesType", "ImageWatermarkPosition", "SmartCropMode", "VideoTypes", "URLScreenshotAgent", "URLScreenshotMode", "URLScreenshotOrientation", "Locations", "VideoAccess", "VideoAccessMode", "EnhancePreset", "Z", "handleRegexp", "transforms", "useValidator", "arrayToObject", "nameKey", "dataKey", "setSource", "setBase64", "setUseValidator", "setCname", "setCustomDomain", "customDomain", "isExternal", "isSourceExternal", "getValidationSchema", "getTransformations", "validateTasks", "returnUrl", "getCdnHost", "transformsString", "generateTransformString", "H", "arrayToString", "escapeValue", "addTask", "J", "getTasks", "autoImage", "noMetadata", "smartCrop", "detectFaces", "cropFaces", "pixelateFaces", "blurFaces", "roundedCorners", "tornEdges", "oilPaint", "partialPixelate", "partialBlur", "videoConvert", "URLScreenshot", "PDFInfo", "PDFConvert", "minifyCss", "minifyJs", "toTest", "transformations", "Filelink", "VALIDATION", "optionToString", "optionsString", "StoreParamsSchema", "disableStorageKey", "sanitizer", "PreviewParamsSchema", "css", "UploadParamsSchema", "$schema", "partSize", "progressInterval", "retry", "retryFactor", "retryMaxTime", "intelligent", "intelligentChunkSize", "onRetry", "disableIntegrityCheck", "maxlength", "PickerParamsSchema", "allowManualRetry", "accept", "acceptFn", "fromSources", "cleanupImageExif", "keepOrientation", "keepICCandAPP", "displayMode", "supportEmail", "customSourceContainer", "customSourcePath", "customSourceName", "disableTransformer", "disableThumbnails", "exposeOriginalFile", "globalDropZone", "hideModalWhenUploading", "imageDim", "imageMax", "imageMin", "imageMinMaxBlock", "lang", "minFiles", "maxFiles", "maxSize", "modalSize", "rootId", "startUploadingWhenMaxFilesReached", "uploadInBackground", "videoResolution", "onCancel", "onClose", "onOpen", "onFileSelected", "onFileUploadCancel", "onFileUploadStarted", "onFileUploadFinished", "onFileUploadFailed", "onFileUploadProgress", "onUploadStarted", "onUploadDone", "onFileCropped", "storeTo", "viewType", "aspectRatio", "customText", "cropFiles", "failOverMaxFiles", "dropPane", "disableClick", "overlay", "showIcon", "showProgress", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onSuccess", "onError", "onClick", "errorsTimeout", "customAuthText", "top", "bottom", "uploadConfig", "useSentryBreadcrumbs", "pasteMode", "pasteToFirstInViewPort", "pasteToFirstInstance", "MetadataParamsSchema", "mimetype", "uploaded", "writeable", "cloud", "sourceUrl", "sha1", "sha224", "sha256", "sha384", "sha512", "RetrieveParamsSchema", "dl", "extension", "adapter", "retryConfig", "attempts", "runtime", "retryCount", "retryDelay", "RequestAdapter", "XhrAdapter", "defaults", "dispatcher", "getInstance", "FsRequest", "dispatch", "GET", "HEAD", "OPTIONS", "purge", "PURGE", "DELETE", "post", "put", "PATH", "cancel", "skipStorage", "baseURL", "skip_storage", "EAlignOptions", "EAlignFacesOptions", "EFitOptions", "EBlurMode", "EShapeType", "ENoiseType", "EStyleType", "EColorspaceType", "ECropfacesType", "ESmartCropMode", "EImageWatermarkPosition", "EVideoTypes", "EUrlscreenshotAgent", "EUrlscreenshotMode", "EUrlscreenshotOrientation", "EVideoLocations", "EVideoAccess", "EVideoAccessMode", "toSnakeCase", "original", "snakeCased", "newKey", "filelink", "STORE_TYPE", "_file", "_sanitizeOptions", "getPartsCount", "ceil", "getPartMetadata", "partNum", "startByte", "endByte", "partNumber", "getPartByMetadata", "meta", "md5Enabled", "getChunkByMetadata", "chunkSize", "uploadTags", "base64Regexp", "readPart", "FileReader", "blob", "onload", "readAsArrayBuffer", "getFile", "sanitizeOptions", "File", "atob", "b64Data", "sliceSize", "byteCharacters", "byteArrays", "byteNumbers", "Blob", "_a", "_b", "storeOptions", "uploadMode", "isModeLocked", "integrityCheck", "setSecurity", "setApikey", "setRetryConfig", "cfg", "setUrl", "setUploadTags", "setIntegrityCheck", "setUploadMode", "lock", "setPartSize", "getPartSize", "setIntelligentChunkSize", "getIntelligentChunkSize", "getUrl", "payloads", "partsQueue", "pause", "resume", "isPaused", "execute", "tasks", "startRequest", "prepareParts", "startPartsQueue", "completeRequest", "getPayloadById", "addFile", "getUploadUrl", "location_url", "getStoreOptions", "payload", "getDefaultFields", "fiiFallback", "fields", "upload_id", "getDefaultHeaders", "location_region", "partsCount", "setPayloadStatus", "updatePayload", "upload_type", "rejectUpload", "waitingLength", "startPart", "onIdle", "uploadRegular", "uploadIntelligent", "getS3PartMetadata", "partMetadata", "pr", "onProgressUpdate", "setPartETag", "resp", "uploadNextChunk", "commitPart", "newOffset", "setPartData", "nextChunkSize", "partsHandle", "partLen", "part_number", "upload_tags", "emitProgress", "totalSize", "totalBytes", "filesProgress", "totalParts", "progress", "totalPercent", "parseError", "normalizeProgress", "current", "lastProgress", "validateRes", "storeValidateRes", "overrideFileName", "sanitizerOptions", "uploader", "handleProgress", "setToken", "token", "customName", "startProgressInterval", "stopProgressInterval", "multiupload", "progressIntervalHandler", "opts", "hasSecurity", "baseUrl", "previewTask", "iframe", "domElement", "getElementById", "ye", "Store", "availableTypes", "LOCAL", "sessionStorage", "SESSION", "hasAccess", "prefType", "getStore", "PrefetchEvents", "PICKER_KEY", "storeAdapter", "sessionCache", "isInAppBrowser", "_token", "prefetch", "settings", "inapp_browser", "clouds", "cancelTokenInput", "flow", "appurl", "currentAppUrl", "customSource", "customsource", "requestOptions", "logout", "tokInit", "tokStart", "sessionId", "session_id", "tokStop", "archiveId", "archive_id", "searchParams", "RotateDirection", "PickerDisplayMode", "param", "getConfig", "pickerOptions", "permissions", "paramsToSend", "pickerOptionsToSend", "picker_config", "updated_config", "reassignCallbacks", "objOld", "objTarget", "_initialized", "PICKER", "category", "forwardErrors", "prefetchInstance", "source_url", "picker", "preview", "remove", "removeMetadata", "storeURL", "storeParams", "workflowIds", "sources", "retrieve", "info", "download", "fl", "M", "uploadOptions", "N", "FILESTACK_SDK", "dateTimestampSource", "nowSeconds", "platformPerformance", "performance", "getNodePerformance", "timeOrigin", "getBrowserPerformance", "timestampSource", "dateTimestampInSeconds", "timing", "navigationStart", "dropUndefinedKeys", "rv", "client", "React", "FSPicker_default", "React", "NavigationTile_default", "Button_default", "Modal_default", "FSPicker_default", "import_react", "import_react", "import_lodash", "y2", "x", "y", "e", "canvas", "canvas2", "context", "zoom", "n", "a", "b", "error", "update", "left", "top", "React", "Spinner_default", "React", "Button_default", "Modal_default", "import_react", "import_react", "getAll", "destroy", "wallPreviewsAdapter", "initialState", "update", "combined", "localState", "canvas", "createSelector2", "module", "React", "Button_default", "Modal_default", "e", "Spinner_default", "Link_default", "options", "React", "Button_default", "import_react", "wallPreviews", "React", "NavigationTile_default", "Modal_default", "Alert_default", "import_react", "import_react", "canvases", "React", "Button_default", "Modal_default", "Input_default", "arrangements", "canvases", "React", "NavigationTile_default", "Modal_default", "Alert_default", "import_react", "React", "Button_default", "Alert_default", "e", "import_react", "import_lodash", "e", "React", "Button_default", "Modal_default", "Spinner_default", "import_react", "import_react", "React", "Switch_default", "hideBranding", "showFilenames", "theme", "React", "Switch_default", "Menu_default", "wallPreviews", "rooms", "React", "filter", "SpecialContentSidebar_default", "EditorSidebar_default", "import_react", "import_react", "m", "e", "a", "b", "React", "Menu_default", "import_react", "import_lodash", "React", "Button_default", "Modal_default", "e", "import_react", "import_react", "onChange", "hide", "e", "React", "filter", "Modal_default", "import_react", "React", "e", "NavigationTile_default", "import_react", "React", "Button_default", "Modal_default", "import_react", "c", "React", "Button_default", "Modal_default", "e", "e", "e2", "x", "y", "p", "React", "Button_default", "import_react", "import_react", "React", "NavigationTile_default", "import_react", "React", "Button_default", "Modal_default", "import_react", "c", "e", "React", "Button_default", "Modal_default", "import_react", "createAction", "i", "c", "e", "React", "Button_default", "Modal_default", "name", "p", "c", "a", "b", "React", "Button_default", "React", "Link_default", "import_react", "import_react", "import_react", "onChange", "pending", "React", "e", "options", "IS_PRODUCTION", "React", "Button_default", "Modal_default", "FSPicker_default", "import_react", "import_lodash", "p", "React", "Button_default", "Modal_default", "import_react", "import_react", "import_react", "e", "React", "e", "p", "React", "e", "c", "x", "p", "React", "i", "React", "e", "Photos_default", "React", "ProductSidebar_default", "Stage_default", "EditorSidebar_default", "Toolbar_default", "Photos_default", "Shuffler_default", "import_react", "import_react", "p", "React", "Button_default", "project", "React", "Projects_default", "React", "Button_default", "SiteMessage_default", "hideBranding", "showFilenames", "theme", "c", "React", "WOSSiteHeader_default", "SiteMessage_default", "CatalogSelector_default", "CartPage_default", "Projects_default", "PriceTool_default", "Wos_default", "extendStatics", "d", "b", "p", "__extends", "__extends", "StateObservable", "initialState", "options", "QueueScheduler", "epicMiddleware", "_i", "merge", "e", "import_lodash", "w", "h", "c", "s", "filter", "p", "id", "defaultOptions", "o", "options", "n", "_", "zip", "combined", "cart", "cart_default", "IS_PRODUCTION", "a", "b", "e", "s", "filter", "combined", "filter", "cart_default", "a", "_", "selectors", "cart_default", "filter", "combined", "get", "actions", "selectors", "filter", "get", "combined", "filter", "cart_default", "cart", "combined", "all", "find", "update", "destroy", "actions", "filter", "all", "error", "update", "find", "destroy", "create", "destroy", "actions", "selectors", "filter", "canvas", "create", "_", "update", "destroy", "combined", "import_lodash", "find", "actions", "filter", "find", "options", "o", "canvas", "tn", "combined", "actions", "selectors", "filter", "p", "o", "options", "combined", "getAllShallow", "getAllDeep", "filter", "combined", "actions", "selectors", "error", "isAxiosError", "_", "filter", "f", "actions", "selectors", "filter", "combined", "all", "find", "update", "params", "headers", "destroy", "actions", "selectors", "filter", "all", "p", "find", "index", "update", "destroy", "_", "remaining", "combined", "all", "create", "update", "destroy", "restore", "actions", "filter", "all", "create", "update", "restore", "cart_default", "destroy", "import_lodash", "actions", "selectors", "filter", "all", "create", "update", "error", "destroy", "combined", "get", "filter", "get", "session", "combined", "fetchSubcatalogs", "filter", "subcatalogs", "combined", "get", "filter", "get", "combined", "actions", "utils", "filter", "style", "css", "_", "n", "observable", "mo", "combined", "actions", "selectors", "filter", "hide", "theme", "combined", "all", "get", "create", "destroy", "actions", "selectors", "filter", "all", "destroy", "products", "create", "get", "error", "combined", "get", "bulkCreate", "rooms", "destroy", "actions", "selectors", "filter", "get", "rooms", "payload", "bulkCreate", "destroy", "IS_PRODUCTION", "getDefaultMiddleware", "React", "Wos_default", "import_react", "import_react_dom", "c", "s", "p", "config", "React", "Wos_default", "import_react", "import_react_dom", "React", "Wos_default", "import_react", "import_react_dom", "c", "s", "p", "config", "React", "Wos_default", "faSquareCheck", "faCheckSquare", "faCircleCheck", "faCheckCircle", "faSquare", "faCheckCircle", "faCheckSquare", "faSquare"] }